Das Einstellen eines Start-Requests passiert typischerweise durch das Besorgen eines Request-Objektes, Bestücken der Daten, Ausführen des Requests und Abfragen des Status.
Der generierte Implementierungsrahmen bietet einen Abschnitt Start
, unter dem das Einstellen von Start-Requests für die in der Aufrufstruktur entsprechend definierten Bausteine vorbereitet ist. Der Konstruktor New
legt einen neuen Request für das Modul und die Operation an.
IntelliSense® von Visual Studio® bietet dabei Unterstützung für das Erzeugen der Requests für die definierten Module und erlaubten Operationen:
Beim Start eines Geschäftsvorfalls muss hierbei der zu verwendende Gevotyp angegeben werden. Dieser sollte einem Typ aus der Gevotyp-Tabelle entsprechen; die Gültigkeit kann an dieser Stelle nicht überprüft werden.
var start_tgeasy = this.Start.TgEasy.Aendern.New("AENDERUNG"); var start_ageasy = this.Start.AgEasy.Durchfuehren.New();
Datenobjekte, die als globales oder Parameterobjekt übergeben werden sollen, und in dem aufrufenden Baustein auch als globales oder Parameterobjekt bekannt sind, werden automatisch als Argument vorbestückt. Eine solche Zuweisung kann natürlich jederzeit übersteuert werden.
Ebenso wie bei Bausteinaufrufen, bietet IntelliSense® auch hier Unterstützung bei der Bestückung der Schnittstellenobjekte:
Neben der direkten Zuweisung einzelner Objekte steht dafür folgende Methode zur Verfügung:
void AssignMatchingArguments(bool createNewForMissing = false);
Diese Methode versucht, für alle Argumente passende Zuweisungen zu finden. Die Zuweisungen werden ausschließlich auf der Basis des Namens gesucht. Bei Namensgleichheit wird geprüft, ob die Datenstruktur und die Klasse passt. Optional werden für fehlende Zuweisungen
Falls keine passende Zuweisung gefunden werden kann und das optionale Argument createNewForMissing
den Wert true
hat, werden für die fehlende Zuweisungen anonyme lokale Objekte angelegt und zugewiesen, die beim Dispose
des Requests aufgeräumt werden.
void AssignArgumentsWithNewObjects();
Erstellt eine neue Zuweisung für jedes einzelne Argument mit einem dafür neu angelegtem anonymen lokalen Objekt.
void ClearAssignedObjects(bool localObjectsOnly = true);
Setze alle zugewiesenen lokalen Objekte zurück. Die Datenbereiche werden initialisiert. Optional können auch die
zugewiesenen Parameter- oder globalen Objekte zurückgesetzt werden. Unveränderbare Objekte (IsReadOnly
) werden
übersprungen.
Wenn das optionale Argument localObjectsOnly
den Wert false
hat, werden nicht nur die Daten der zugewiesenen lokalen Objekte, sondern
die Daten aller Zuweisungen initialisiert.
Vor der Ausführung des StartReqwuests können folgende Eigenschaften bestückt werden:
System-Properties, die zurzeit beim Start übergeben werden können, sind:
Andere Workflow-Eigenschaften können über SetProperty
mit einer Zeichenfolge oder einem nummerischen Wert bestückt werden:
<request>.Properties.SetProperty("<Name>", <wert>);
Auch hierfür bietet IntelliSense® von Visual Studio® Unterstützung:
bool Submit();
Für das Einstellen des vorbereiteten Start-Requests in die Datenbank steht die Methode Submit
zur Verfügung. Diese Methode liefert als Rückkehrwert true
, wenn der Request erfolgreich eingestellt wurde, sonst false
.
Außerdem steht nach der Ausführung die GevoID des gestarteten Gevos in der Eigenschaft RequestGevoID zur Verfügung.
Um den Codeumfang für das Setzen des Zustandes eines Bausteins auf Basis des Zustandes eines gestarteten Bausteines zu verkürzen, werden außerdem folgende Methoden angeboten:
bool SyncStateWithCaller(); bool SyncStateWithModule(Module other);
Diese Methoden sind beim Start-Request nur nutzbar, wenn StateOk
und/oder StateError
bestückt wurden, da andernfalls für einen zu startenden Baustein kein Zustand bekannt ist.
Bei diesen Methoden wird versucht, dem Baustein des Aufrufers resp. dem übergebenen Baustein den gleichen Zustand zu geben, wie der aktuelle Zustand des gestarteten Bausteins, so wie dieser für die aktuelle Instanz Start-Requests gesetzt wurde. Die Methoden liefern true, falls das geklappt hat, oder false, falls für den gestarteten Baustein kein Zustand verfügbar ist oder der anzupassende Baustein keinen Zustand kennt, der dem des gestarteten Bausteins entspricht.
StateOk
und StateError
bestückt wurden, kann nach Ausführung der Methode Submit()
die Eigenschaft State
abgefragt werden, die bei einem Rückkehrwert von true
den Wert von StateOk
enthält, sonst den Wert von StateError
.Conditions
aufgelistet, die bei beim Einstellen des Requests aufgetreten sind. Sollte dieselbe Instanz des Requests mehrfach verwendet werden, enhält die Collection jweils nur die Conditions des letzten Submit(). protected override void OperationAnbieten() { var lPvgesl = Data.NewList(PvPartnerListe.Type, "LPVGESL"); var resultGevoID = "INVALID"; using (var startTgeasy = this.Start.TgEasy.Aendern.New("AENDERUNG")) { startTgeasy.Pvgesl = lPvgesl; startTgeasy.AssignMatchingArguments(true); startTgeasy.ConsecutiveIdentification = true; startTgeasy.StateError = TgEasy.StateEnum.Fehler; startTgeasy.StateOk = TgEasy.StateEnum.Ok; startTgeasy.StartMode = ModuleCallOperationStartRequest.StartModeEnum.Direct; startTgeasy.SuspendFor = DateTime.Today.AddDays(10); startTgeasy.Title = "Änderung Easy"; startTgeasy.AttachDocuments = true; startTgeasy.Properties.Kunde = 1234567; startTgeasy.Properties.PartnerNachname = "Schmidtschulze"; startTgeasy.Properties.InfoDatum = DateTime.Today.AddDays(20); startTgeasy.Properties.SetProperty("PRODUKTGRUPPE", "VK"); startTgeasy.Properties.SetProperty("VERTRAG-ALTER", 25); if (startTgeasy.Submit()) { resultGevoID = startTgeasy.RequestGevoID; startTgeasy.SyncStateWithCaller(); if (startTgeasy.Conditions.Any(c => c.Severity > TeamWiSE.Runtime.Common.Condition.SeverityEnum.Info)) { this.State.Active = StateEnum.NichtOk; } } else { this.State.Active = StateEnum.NichtOk; } } }