Geschäftsprozesse
Geschäftsprozesse dienen als Ergänzung zu Datenquellen und Datenreferenzen zur Datenbeschaffung für rein lesende Anzeige-Elemente. Sie erweitern die Möglichkeiten der SQL-basierenden Datenbeschaffung. Geschäftsprozesse können den folgenden Metadatenobjekten zugeordnet werden:
- Datenquellen
- Datenreferenzen
Bei der Definition der Datenquellen/ Datenreferenzen gibt es folgende Möglichkeiten:
- Datenermittlung nur über SQL
- Datenermittlung über SQL und Geschäftsprozess für Berechnungen, Datensätze löschen/hinzufügen
- Datenermittlung nur über Geschäftsprozess
Soll ein Geschäftsprozess in mehreren Datenquellen/ Datenreferenzen verwendet werden, kann eine Zuordnung der Datenfelder zu den im Geschäftsprozess verwendeten Feldern via Geschäftsprozess-Parameter (parametergesteuerter Geschäftsprozess) erfolgen.
Um ein Geschäftsprozess implementieren zu können, muss von der Klasse BusinessProcessBase abgeleitet werden.
Hinweis für Developer Partner
WDB-Eintrag 203334:
Dokument "Zusatzdokumentation zum Wiki für Developer Partner", BusinessProcessBase
Eigenschaften Geschäftsprozess
Bereich | Eigenschaft | Wert |
---|---|---|
Allgemeines | Name (Name) | Name des Geschäftsprozesses |
Titel (Title) | Titel des Geschäftsprozesses | |
Beschreibung (Description) | Kurze Dokumentation des Geschäftsprozesses, insbesonderer wenn es sich um einen parametergesteuerten Geschäftsprozess handelt | |
Kommentar (Comment) | Beliebiger Kommentar zur Dokumentation. Der Kommentar wird nicht zum Client übertragen und dient nur zur Dokumentation von Besonderheiten, Hinweisen, etc. Bei Auslieferung/Weitergabe der Lösung wird der Kommentar eingeschlossen, so dass der Empfänger ihn im AppDesigner sieht. | |
Daten | DLL-Name (AssemblyName) | Name der aufzurufenden DLL (ohne Verzeichnisname, aber mit Dateinamenerweiterung „.dll“; die DLL wird immer im OL-Shared-Verzeichnis gesucht) |
Klassenname (ClassName) | Name inklusive Namespace der aufzurufenden Klasse | |
Hoher Ressourcen-Bedarf (HighResources) | Hat der Geschäftsprozess einen hohen Ressourcen-Bedarf auf dem Applikationsserver (CPU bzw. Speicher)? 0 = nein 1 = ja (Elemente sowie Links, die den Geschäftsprozess nutzen, verwenden die Einzel-Aktualisierung, um Ressourcen zu sparen) 2 = Ermittlung über Geschäftsprozess (abhängig von Konfiguration oder ähnlichem, daher wird der Geschäftsprozess (Methode „CheckHighResources“) aufgerufen, der dann 0 oder 1 zurückgeben muss) | |
Parametergesteuert? (IsParameterControlled) | Vordefinierter parametergesteuerter Geschäftsprozess? (vordefinierte parametergesteuerte Geschäftsprozesse werden über die in der nachfolgenden Tabelle dokumentierten Parameter konfiguriert; nicht vordefinierte Geschäftsprozesse sind fest auf die jeweilige Datenquelle zugeschnitten und werden dort nicht konfiguriert) | |
Datensätze hinzufügen erlaubt? (CanInsertRecords) | Der Geschäftsprozess fügt ggf. Datensätze hinzu, daher werden die Datensätze
Ein Listen- oder Baum-Element, welches auf einem Geschäftsprozess basiert, der Datensätze hinzufügen darf, unterstützt keine Permanentfilter. | |
Datensätze entfernen erlaubt? (CanReduceRecords) | Der Geschäftsprozess entfernt ggf. Datensätze. Daher werden immer alle Datensätze ermittelt und nach der Berechnung ggf. abgeschnitten. Hinweis: In diesem Fall werden intern immer alle Datensätze vom SQL-Server geladen, was bei großen Datenbeständen zu Performance- und ApplikationServer-Speicher-Problemen führen kann. Besser ist daher die SQL-Server-seitige Aggregierung der Datensätze. Ein Listen- oder Baum-Element, welches auf einem Geschäftsprozess basiert, der Datensätze entfernen darf, unterstützt keine Permanentfilter. | |
Lizenzierung | Lizenz-Kürzel (LicenseTokens) | Applikationskürzel der zu prüfenden Lizenz (nur in Nicht-Sage-Lösungen verwendbar und änderbar) |
Lizenz-Kürzel für Sage (SageLicenseTokens) | Applikationskürzel der zu prüfenden Lizenz (nur in Sage-Lösungen verwendbar und änderbar) |
Eigenschaften Geschäftsprozessparameter
Eigenschaft | Wert |
---|---|
Name (Name) | Eindeutiger Parametername zur Referenzierung in der Datenquellen-Definition |
Parametertitel (Title) | Parametertitel |
Position in Sortierung (OrderPosition) | Sortierreihenfolge für die Anzeige in der Datenquelle im AppDesigner |
Datentyp (DataType) | Datentyp:
|
erforderlich? (IsRequired) | Muss der Parameter vom Anwender festgelegt werden? (ansonsten ist er optional) |
berechnetes Feld? (IsFieldCalculated) | Das im Parameter definierte Datenfeld wird berechnet, daher werden die Datensätze
Hinweis: In diesem Fall werden (sobald der Anwender nach dem Feld filtert oder sortiert) intern immer alle Datensätze vom SQL-Server geladen, was bei großen Datenbeständen zu Performance- und ApplikationServer-Speicher-Problemen führen kann. Besser ist daher die SQL-Server-seitige Berechnung. Alternativ kann das Feld auch nicht für Sortierung und Filterung angeboten werden. |
Vordefinierte parametergesteuerte Geschäftsprozesse
Nachfolgend werden die von Sage vordefinierten parametergesteuerten Geschäftsprozesse und deren Anwendung beschrieben. Gleichzeitig dienen diese Beschreibungen als Beispiele weiterer vordefinierter parametergesteuerter Geschäftsprozesse.
Währungsumrechnung/-zusammenfassung
Aufgabenstellung
Die von Sage vordefinierten parametergesteuerten Geschäftsprozesse zur Währungsumrechnung und Währungszusammenfassung rechnen Währungen in bis zu zwanzig Datenfeldern um und fassen die Datensätze nachfolgend (optional) zusammen.
Im Einzelnen bestehen folgende Aufgaben:
- „Betragsfelder umrechnen“ mit folgenden Fällen:
- In den Datensätzen sind die Beträge, optional das alte Währungskennzeichen (ansonsten Eigenwährung), optional das neue Währungskennzeichen (ansonsten Eigenwährung) und optional die Periode der Umrechnung (ansonsten aktuelle Periode) enthalten. Der Geschäftsprozess rechnet diese entsprechend mit Rundung um.
- Die Datensätze enthalten vorstehende Werte und die zugehörigen Kurse (bzw. 0, 1 oder Null zur Kennzeichnung von Eigenwährungs-Beträgen). Der Geschäftsprozess rechnet diese entsprechend mit Rundung um.
- Hinweis: Prinzipiell kann in diesem Fall der Kurs auch direkt in der SQL-Abfrage zur Umrechnung benutzt werden. Aufgrund unterschiedlicher Rundungs-Algorithmen in SQL-Server und .NET sowie der fehlenden Triangulation bei der Umrechnung von Euro-kompatiblen Währungen kann es dabei allerdings zu Rundungsabweichungen kommen. Sage verwendet daher immer den Geschäftsprozess.
- Nach der Umrechnung müssen die Datensätze, die sich nur bzgl. der Währung sowie der Kurse und Beträge unterschieden, gegebenenfalls zusammengefasst werden (falls sie nicht einzeln angezeigt werden sollen).
- Enthalten die umzurechnenden Felder Durchschnittswerte, ist für die Zusammenfassung in den Datensätzen noch die jeweilige Anzahl erforderlich, die dem Durchschnittswerte zugrunde liegt und außerdem bei der Zusammenfassung aufaddiert wird, um sie als Gesamtanzahl anzeigen zu können.
- Im Fall einer Summenzeile müssen auch die für die Summenzeile übergebenen und umgerechneten Datensätze verschiedener Währungen zusammengefasst werden (wiederum inkl. Behandlung von Durchschnittswerten).
Verwendung der Geschäftsprozesse
Die vorstehenden Fälle werden, um unnötig viele und komplizierte Parametrisierungen zu vermeiden, in folgenden Geschäftsprozessen zusammengefasst, die intern weitgehend gleichen Code verwenden, aber für den Entwickler, der mit den Metadaten arbeitet, eine Arbeitserleichterung bei Auswahl und Parametrisierung darstellen:
- Währungsumrechnung mit Kurs-Ermittlung („CurrencyConversion1.Sage.System“)
- Währungsumrechnung mit Kurs-Ermittlung und Zusammenfassung („CurrencyConversion2.Sage.System“)
- Währungsumrechnung mit Kurs-Ermittlung und Zusammenfassung von Durchschnittswerten („CurrencyConversion3.Sage.System“)
- Währungsumrechnung mit Kurs-Angabe („CurrencyConversion4.Sage.System“)
- Währungsumrechnung mit Kurs-Angabe und Zusammenfassung („CurrencyConversion5.Sage.System“)
- Währungsumrechnung mit Kurs-Angabe und Zusammenfassung von Durchschnittswerten („CurrencyConversion6.Sage.System“)
Anmerkung: Ob eine Summenzeile vorhanden ist und behandelt werden muss, kann der Geschäftsprozess anhand der übergebenen Daten selbst feststellen.
Anmerkungen zu den Geschäftsprozessen mit Zusammenfassung:
- Die Daten sollten aus Performance-Gründen so sortiert sein, dass die jeweils zusammengehörenden Datensätze, die sich nur in der Währung und den umzurechnenden Beträgen unterscheiden, direkt hintereinanderliegen. Hierzu ist es erforderlich, in der den Geschäftsprozess aufrufenden Datenquelle die Eigenschaft „SQL-Sortierung vor Geschäftsprozess-Aufruf“ entsprechend zu definieren.
- Wird für Summenzeilen die „Summenzeile“-Einstellung = "automatische Ermittlung der Summe" in der Datenquelle verwendet, müssen außer den zu summierenden Feldern folgende Markierungen in „Art der Summenzeilen-Addition“ vorgenommen werden:
- Felder, nach denen gruppiert werden soll (Währung, Periode, Kurs), müssen markiert werden, damit sie in der Summenzeile enthalten und für den Geschäftsprozess verfügbar sind
Die Geschäftsprozesse haben folgende Parameter und Anforderungen:
Name | Titel | Parameter | Anforderungen |
CurrencyConversion1 | Währungsumrechnung mit Kurs-Ermittlung |
| |
CurrencyConversion2 | Währungsumrechnung mit Kurs-Ermittlung und Zusammenfassung | wie „CurrencyConversion1“ | um die Datensätze zusammenfassen zu können, werden die Inhalte der Felder „Wkz alt“, „Wkz neu“ und „Periode“ gelöscht; diese Felder sollten daher in der Datenquelle als „Internes Feld?“ gekennzeichnet sein; Definition von „SQL-Sortierung vor Geschäftsprozess-Aufruf“ erforderlich |
CurrencyConversion3 | Währungsumrechnung mit Kurs-Ermittlung und Zusammenfassung von Durchschnitts- | wie „CurrencyConversion1“ und zusätzlich:
| wie „CurrencyConversion2“ |
CurrencyConversion4 | Währungsumrechnung mit Kurs-Angabe | wie „CurrencyConversion1“ und zusätzlich:
| |
CurrencyConversion5 | Währungsumrechnung mit Kurs-Angabe und Zusammenfassung | wie „CurrencyConversion4“ | um die Datensätze zusammenfassen zu können, werden die Inhalte der Felder „Wkz alt“, „Wkz neu“, „Periode“ und „Kurs“ gelöscht; diese Felder sollten daher in der Datenquelle als „Internes Feld?“ gekennzeichnet sein; Definition von „SQL-Sortierung vor Geschäftsprozess-Aufruf“ erforderlich |
CurrencyConversion6 | Währungsumrechnung mit Kurs-Angabe und Zusammenfassung von Durchschnittswerten | wie „CurrencyConversion4“ und zusätzlich:
| wie „CurrencyConversion5“ |
Die Geschäftsprozesse sind bei SQL-Abfragen, die eine große Datenmenge liefern aus Gründen der Performance nicht zu verwenden.
Fehlerbehandlung
Prinzipiell wäre es vorstellbar, die Behandlung von Fehlern bei der Umrechnung (Währung bzw. Kurs für Währung / Periode nicht vorhanden oder Währungen nicht kompatibel), in den jeweiligen Feldern anzuzeigen. Dies ist jedoch bzgl. Sortierung, Filterung und vor allem Zusammenfassung problematisch. Stattdessen wird daher bei der ersten solchen Situation (die eigentlich nicht vorkommen sollte) analog zu anderen Geschäftsprozessen, ein entsprechender Fehler geworfen, der dann anstelle des Parts angezeigt wird.
Es gibt folgende Fehlermeldungen:
- Währung ´…´ ist nicht angelegt.
- Währungskurs für Währung ´…´ in Periode nnnnnnn kann nicht ermittelt werden.
- Währungsumrechnung für ´…´ und ´…´ in Periode nnnnnnn ist nicht möglich.
- Währung ´…´ ist in der Periode nnnnnnn nicht EUR kompatibel.
Datenquellen mit Verwendung von Währungsumrechnung im Standard
- dtsAngebotsAvg.Sage.Wawi.xml
- dtsAngebotsErfolg.Sage.Wawi.xml
- dtsAngebotsWert.Sage.Wawi.xml
- dtsAuftragseingAvg.Sage.Wawi.xml
- dtsAuftragsstorno.Sage.Wawi.xml
- dtsAuftragsWert.Sage.Wawi.xml
- dtsBestelltGeliefert.Sage.Wawi.xml
- dtsBestellungenAvg.Sage.Wawi.xml
- dtsBestellungenWert.Sage.Wawi.xml
- dtsEKRueckliefWert.Sage.Wawi.xml
- dtsFibuUebergabe.Sage.Wawi.xml
- dtsGeliefertBerechne.Sage.Wawi.xml
- dtsStornorechnungAvg.Sage.Wawi.xml
- dtsStornoRechWert.Sage.Wawi.xml
- dtsVKRueckliefWert.Sage.Wawi.xml