Inhaltsverzeichnis

Start-Request einstellen

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.

Anlegen eines Start-Requests

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();

Bestücken der Schnittstellenobjekte

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.

Bestücken der Eigenschaften

Vor der Ausführung des StartReqwuests können folgende Eigenschaften bestückt werden:

Bestücken der Workflow Properties

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:

Methoden

Submit

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.

SyncState...

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.

Eigenschaften, die nach der Ausführung abgefragt werden können

Beispiel

	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;
		}
	    }
	}