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:

  • StateOk: Zustand, der gesetzt werden soll, wenn der Request erfolgreich eingestellt wurde. Es kann einer der für den zu startenden Baustein definierten Zustände ausgewählt werden.
  • StateError: Zustand, der gesetzt werden soll, wenn der Request nicht erfolgreich eingestellt werden konnte. Es kann einer der für den zu startenden Baustein definierten Zustände ausgewählt werden.
  • ConsecutiveIdentification: Nur für GSTR: Auf true setzen, wenn eine fortlaufende GevoID vergeben werden soll.
  • StartMode: Gibt an, ob der Baustein direkt anlaufen soll (Direct, Default), oder lediglich im Postkorb registriert werden soll (RegisterOnly)
  • SuspendFor: Datumsangabe; gibt an, zu welchem Zeitpunkt der Request aufgegriffen werden soll.
  • Title: Umschreibung des Geschäftsvorfalls
  • AttachDocuments: Gibt an, dass die selektierten CTV-Dokumente dem Request hinzugefügt werden sollen.

Bestücken der Workflow Properties

System-Properties, die zurzeit beim Start übergeben werden können, sind:

  • Kunde
  • Prüftage
  • Vermittler
  • GevoName
  • AktuelleOE
  • Fristdatum
  • Ordnungsbegriff
  • Partnernachname
  • PartnerVorname
  • InfoDatum
  • GevoVerantwortlicheOE
  • AngelegtVon
  • Eingangsart
  • Eingangsstelle

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

  • State: Wenn die Eigenschaften 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.
  • RequestGevoID: Enthält nach der Ausführung die GevoID des neu angelegten Gevos.
  • Conditions: Hier werden alle 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().

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;
		}
	    }
	}
dotnet:native:request · Zuletzt geändert: 10.08.2021 11:32

Copyright © 1992-2024 TeamWiSE Gesellschaft für Softwaretechnik mbH         Adressen |  Kontakt |  AGB |  Datenschutzerklärung |  Impressum