System-Skriptsprache: Workflow-Funktionen

Die System-Skriptsprache wird u. a. im Workflow-Management verwendet, um z. B. eine Vorbedingung oder Übergangsbedingung zu formulieren oder um Bearbeiter zu ermitteln, die nicht in einer Workflowrolle zusammengefasst sind.

Die Workflow-Engine unterstützt sowohl die eigene System-Skriptsprache als auch JavaScript, um komplexe Zusammenhänge auszudrücken. In dieser Dokumentation erhalten Sie ausführliche Informationen zu den einzelnen Workflow-Funktionen der System-Skriptsprache. Workflow-Funktionen sind Funktionen, deren Verwendungskontext eine Aktivitätsdefinition voraussetzen. Workflow-Funktionen, die das Vorhandensein einer Aktivität voraussetzen, können nicht in Übergangsbedingungen verwendet werden, da zum Zeitpunkt der Auswertung der Übergangsbedingung die Aktivität noch nicht erzeugt ist. Beispiele von Workflow-Funktionen sind setActivityWorkDuration und setActivityPriority, die beim Erzeugen einer Workflow-Aktivität die Bearbeitungsdauer bzw. Priorität bestimmen.

Die Beispiele in diesem Dokument dienen dem Verständnis dafür, wie die Funktionen und Befehle der System-Skriptsprache verwendet werden können. Um die Beispiele in anderen Verwendungskontexten einzusetzen, müssen sie ggf. angepasst werden. Dieses Dokument umfasst auch Beispiele für Funktionen, die nicht Bestandteil der System-Skriptsprache sind. In diesem Fall weisen die Beispiele auf Möglichkeiten hin, wie mithilfe der System-Skriptsprache die gleiche oder eine ähnliche Funktionalität erreicht werden kann.

Zielgruppe

Die Zielgruppe dieses Dokuments besteht aus Entwicklern und technischen Beratern, die Workflows bei Kunden erstellen oder anpassen, sowie Kunden, die eigene Workflows verwalten.

Für dieses Dokument wird das Verständnis des für den Benutzer sichtbaren Funktionsumfangs des Workflow-Managements vorausgesetzt. Weiterhin sollte der Leser zum Verständnis der System-Skriptsprache grundlegende Kenntnisse in SQL oder einer beliebigen Programmiersprache haben.

Begriffsbestimmung

  • Aktivitätsdefinition – Aktivitätsdefinitionen legen fest, ob beim Auftreten eines bestimmten Ereignisses eine Aktivität erzeugt werden soll und welche Merkmale diese Aktivität haben soll. Eine Aktivitätsdefinition muss aktiviert sein. Wenn das der Fall ist, dann erzeugt die Workflow-Engine beim Auftreten des dort angegebenen Ereignisses eine neue Aktivität, sofern die Übergangs- und Vorbedingung erfüllt sind. Alle für die Aktivität notwendigen Daten werden aus der Aktivitätsdefinition berechnet. Die Aktivitätsdefinition stellt somit die Vorlage für die aus ihr erzeugten Aktivitäten dar. Aktivitätsdefinitionen sind unabhängig von der OLTP-Datenbank und dem System, in dem sie erfasst wurden, da sie weder System- noch OLTP-spezifische Daten enthalten. Aktivitätsdefinitionen werden in der Repository-Datenbank abgelegt.
  • Deklarationen – Deklarationen sind Skripte in den Prozessdefinitionen und Aktivitätsdefinitionen, die Methoden zur Verfügung stellen, welche beim Erzeugen von Aktivitäten, bei Statuswechseln und bei der Eingabe von bestimmten Parameterwerten aufgerufen werden. Durch Anpassung der Deklarationen lassen sich die Eigenschaften von Prozessen und Aktivitäten flexibel festlegen. Deklarationen werden in einer Skriptsprache erfasst.
  • GUID – GUID ist die Abkürzung für Globally Unique Identifier und entspricht einem „Global eindeutigen Bezeichner”. Eine GUID ist eine 128-Bit Zahl, die nach dem Schema der Open Software Foundation (OSF) für verteilte Berechnungen (Distributed Computing Environment, DCE) berechnet wurde. Sie enthält u. a. die IP-Adresse der erzeugenden Rechner, eine Zeit-Komponente und eine Zufalls-Komponente. So können zwei unabhängige Rechner ohne Synchonisation immer unterschiedliche GUIDs berechnen. In Comarch ERP Enterprise werden GUIDs als Java-Byte-Arrays der Länge 16 repräsentiert und vor allem als kompakte Primär- und Fremdschlüssel in Business Objects verwendet.
  • System-Skriptsprache – Terme, Bedingungen, Befehle, Funktionen und Deklarationen werden verwendet, um komplexe Zusammenhänge auszudrücken. Alle diese Ausdrücke sind Teil einer gemeinsamen Skriptsprache, die System-Skriptsprache genannt wird. Die Syntax der System-Skriptsprache lehnt sich an SQL, Pascal und Java an. Die System-Skriptsprache wird u. a. im Workflow-Management verwendet, um z. B. eine Vorbedingung oder Übergangsbedingung zu formulieren oder um Bearbeiter zu ermitteln, die nicht in einer Workflowrolle zusammengefasst sind.
  • Workflow-Engine – Zusammen mit dem Ereignisdienst koordiniert und überwacht die Workflow-Engine die Ausführung von Workflows. Die Workflow-Engine wird in jedem System auf dem Message-Server ausgeführt.

Workflow-Funktionen

Workflow-Funktionen sind Funktionen, deren Verwendungskontext eine Aktivitätsdefinition voraussetzen. Workflow-Funktionen, die das Vorhandensein einer Aktivität voraussetzen, können nicht in Übergangsbedingungen verwendet werden, da zum Zeitpunkt der Auswertung der Übergangsbedingung die Aktivität noch nicht erzeugt ist. Dieses Dokument teilt die Workflow-Funktionen in folgenden Gruppen auf:

Funktionen für Prozesse (Process functions)

Zu den Funktionen für Prozesse gehören sowohl Befehle, welche die Eigenschaften des zu erzeugenden Prozesses festlegen, als auch Funktionen, um Eigenschaften abzufragen, die sich mithilfe der vorgegebenen Prozessparameter nur schlecht abfragen lassen:

abortProcess
Name abortProcess
Beschreibung Bricht die Aktivitätserzeugung ab und beendet den Prozess.
Signaturen abortProcess()
Parameter Keine.
Ergebnis In der Funktion createeines Startknotens bricht abortProcessdie Prozesserzeugung ab, ohne den Prozess und die Startaktivität zu erzeugen. Wird abortProcess in einem anderen Knoten als dem Startknoten verwendet, werden alle noch offenen Aktivitäten unbearbeitet erledigt und der Prozess endet über den Fehlerknoten mit dem Fehlercode WFL-00576 Process aborted.
Fehlerquellen Die Verwendung von abortProcess in einer anderen Funktion als create kann zu einem Fehler führen.
Beispiele abortProcess() in der Funktion create eines Startknotens bricht die Prozesserzeugung ab.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise Der Befehl abortProcess kann z. B. dann verwendet werden, wenn die Übergangsbedingung im gleichnamigen Feld der Aktivitätsdefinition für den Startknoten nicht komplett abgebildet werden kann, z. B. aus Platz- oder Performanzgründen.
Siehe auch abort

Folgendes Beispiel stammt aus dem Startknoten einer Prozessdefinition. Beim Löschen einer Instanz des Business Objects com.cisag.app.inventory.obj.UnitOnhandbricht die Prozesserzeugung ab, wenn nicht sämtliche Stellplätze des Lagerplatzes leer sind. Diese Prüfung wurde nicht nur aus Platzgründen aus der Übergangsbedingung in die Funktion createverlagert. Die Verlagerung vermeidet auch einen unnötigen Datenbankzugriff, wenn die Übergangsbedingung aufgrund weiterer Kriterien den Wert falsebesitzt.

function create()
{
/* if the storage location has more UnitOnhand then the location is not empty */
if (cast(Number, getResultList("SELECT COUNT(*) FROM com.cisag.app.inventory.obj.UnitOnhand uoh WHERE uoh:storageLocation = ?", 
list(parameters.oldObject:storageLocation), 1)[0][0]) > 0) {
abortProcess();
}
}

 

processOwner
Name processOwner
Beschreibung Gibt eine Liste mit den Prozessverantwortlichen zurück.
Signaturen Guid[] processOwner()
Parameter Keine.
Ergebnis Die Funktion processOwnergibt eine Liste mit den Guids der Prozessverantwortlichen zurück. Besitzt der Prozess keinen zuständigen Benutzer, wird eine leere Liste zurückgegeben.
Fehlerquellen Keine.
Beispiele isEmpty(processOwner()) prüft, ob dem Prozess ein verantwortlicher Benutzer zugeordnet ist.

Folgendes Skript gibt die Namen aller Prozessverantwortlichen ins Protokoll aus:

var owners := processOwner();
for (u as Guid : owners) {
echo(userName(u));
}
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch
Beispiel: processOwner

Folgendes Beispiel aus der Aktivitätsdefinition help.processOwner gibt die Guids aller Prozessverantwortlichen zurück.

function create()
{
const ProcessOwnerOrigin as valueSet(com.cisag.sys.workflow.ProcessOwnerOrigin);

var owners as Guid[];
var ownerNames as String;

var pd := getByBusinessKey("REPOSITORY", CisObject(com.cisag.sys.workflow.obj.ProcessDefinition), parameters.PROCESS_DEFINITION, parameters.ORIGIN);

if (definition->ProcessDefinition:processData.sourceOfOwner = ProcessOwnerOrigin.WORKFLOW_ROLE) {
if (not isNull(definition->ProcessDefinition:ownerRole))
owners := resolveRole(definition->ProcessDefinition:ownerRole);
}
else {
if (not isNull(definition->ProcessDefinition:owner))
owners := list(userGuid(definition->ProcessDefinition:owner));
}
for (u : owners) {
ownerNames := ownerNames + " " + userName(u);
}
result.OWNERS := trim(ownerNames);
}

 

setProcessWorkDuration
Name setProcessWorkDuration
Beschreibung Ersetzt den Wert des Feldes Bearbeitungsdauer in der Prozessdefinition.
Signaturen setProcessWorkDuration(Number milliseconds)
Parameter milliseconds ist die Bearbeitungsdauer in Millisekunden.
Ergebnis Die Funktion setProcessWorkDurationersetzt den Wert des Feldes Bearbeitungsdauer in der Prozessdefinition. Ist millisecondsnegativ, wird die Bearbeitungsdauer auf den Wert 0 gesetzt.
Fehlerquellen Keine.
Beispiele setProcessWorkDuration(3600*24*1000) setzt die Bearbeitungsdauer auf 24 Stunden. Der Zeitpunkt im Feld Endzeitpunkt des Prozesses ist genau 24 Stunden nach dem Zeitpunkt im Feld Beginnzeitpunkt.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise Eine nachträgliche Änderung des geplanten Endzeitpunkts kann zu einem Statuswechsel des Prozesses führen. Die Änderung hat keine Auswirkung auf die Terminierung von bereits erzeugten Aktivitäten.
Siehe auch setActivityWorkDuration

Funktionen für Aktivitäten (Activity functions)

Zu den Funktionen für Aktivitäten gehören vor allem Befehle, um die Eigenschaften der zu erzeugenden Aktivität festzulegen. Solche Befehle können nur in der Funktion createder Deklarationen verwendet werden.

abort
Name abort
Beschreibung Bricht die Aktivitätserzeugung ab.
Signaturen abort()
Parameter Keine.
Ergebnis In der Funktion createbricht abortdie Aktivitätserzeugung ab, ohne die Aktivität zu erzeugen.
Fehlerquellen Die Verwendung von abort in einer anderen Funktion als create kann zu einem Fehler führen.

Wird abortin einem Aktivitäts- oder Ereignisknoten verwendet, kann der nächste Prozessschritt nicht erzeugt werden und der Prozess endet ggf. über den Fehlerknoten.

Beispiele abort() in der Funktion create einer Aktivitätsdefinition des Typs Einzelaktivität bricht die Aktivitätserzeugung ab, ohne die Aktivität zu erzeugen.
Kontext WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP
Hinweise Der Befehl abortkann z. B. dann verwendet werden, wenn die Übergangsbedingung im gleichnamigen Feld einer Aktivitätsdefinition für eine Einzelaktivität nicht komplett abgebildet werden kann, z. B. aus Platz- oder Performanzgründen.
Siehe auch abortProcess
addAttachment
Name addAttachment
Beschreibung Fügt der Aktivität eine Verknüpfung zu einem Business Object hinzu.
Signaturen addAttachment(CisObject object)
Parameter object ist das Business Object, das mit der Aktivität verknüpft werden soll.
Ergebnis Der Befehl addAttachmentfügt der Aktivität eine Verknüpfung zu einem Business Object hinzu.

Bei einem Ereignis des Typs Benutzeraktion wird das im Ereignisparameter parameters.objectübergebene Business Object automatisch mit dem Startknoten verknüpft.

Fehlerquellen Wenn object und die Aktivität nicht in derselben Datenbank gespeichert sind, entsteht ein Laufzeitfehler.
Beispiele addAttachment(parameters.object) in der Funktion createeines Startknoten verknüpft das Business Object, für welches das Ereignis ausgelöst wurde, mit der Aktivität.

addAttachment(activity->Process) verknüpft die Aktivität mit dem Prozess.

Kontext WF_REPOSITORY, WF_OLTP
Hinweise Die zuerst mithilfe des Befehls addAttachmenthinzugefügte Verknüpfung gilt als bevorzugte Verknüpfung. Auf dem Karteireiter Verknüpfungen der Anwendung Aktivitäten ist es möglich, eine beliebige Verknüpfung als bevorzugt zu kennzeichnen.

Ist eine Benutzer-Aktivität nicht mit einer Anwendung verknüpft, wird beim Öffnen der Aufgabe das bevorzugt verknüpfte Business Object geöffnet. Über das Kontextmenü der Aufgabe sowie über den Karteireiter Verknüpfungen der Anwendung Aktivitäten können alle mit der Aktivität verknüpften Business Objects geöffnet werden.

In der Anwendung Cockpit: Aktivitäten/OLTP-Datenbank und Cockpit: Aktivitäten/Repository-Datenbank kann nach Aktivitäten mithilfe deren verknüpften Business Objects gesucht werden. Ist ein Business Object mit dem Startknoten eines Prozesses verknüpft, dann ist eine Suche auch in den Anwendungen Cockpit: Prozesse-OLTP-Datenbank und Cockpit: Prozesse/Repository-Datenbank möglich.

Das Suchfeld für das verknüpfte Business Object kann mithilfe der Aktionen Aktivitäten abfragen und Prozesse abfragen im Kontextmenü von Business Entities vorbelegt werden.

Siehe auch primaryAttachment
formatDescription
Name formatDescription
Beschreibung Ersetzt einen Platzhalter in der Beschreibung der Aktivität durch einen konkreten Wert.
Signaturen formatDescription(String name, String value)
Parameter name ist der Name des Platzhalters.

value ist der Wert, der an Stelle des Platzhalters angezeigt werden soll.

Ergebnis Der Befehl formatDescriptionersetzt alle Vorkommnisse des Platzhalters nameim Texteditor-Feld Beschreibung der Aktivitätsdefinition durch den konkreten Wert value, der in der Aktivität angezeigt werden soll.
Fehlerquellen Ist die Aktivität bereits erzeugt, kann die Beschreibung der Aktivität nicht mehr geändert werden. D. h. der Befehl formatDescriptionkann nur in der Funktion createverwendet werden.
Beispiele formatDescription("item", loadItem("10010"):number) in der Funktion createersetzt alle Vorkommnisse des Platzhalters item durch die Nummer des Artikels 10010.

Der Befehl formatDescription("item", loadItem("10010"):description)in der Funktion createersetzt den Platzhalter item durch die Bezeichnung des Artikels 10010 in der aktuellen Inhaltssprache.

Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch formatDescriptionHTML, formatSubject
formatDescriptionHTML
Name formatDescriptionHTML
Beschreibung Ersetzt einen Platzhalter in der Beschreibung der Aktivität durch ein HTML-Fragment.
Signaturen formatDescriptionHTML(String key, String value)
Parameter name ist der Name des Platzhalters.

value ist der Wert, der an Stelle des Platzhalters angezeigt werden soll.

Ergebnis Der Befehl formatDescriptionersetzt alle Vorkommnisse des Platzhalters nameim Texteditor-Feld Beschreibung der Aktivitätsdefinition durch den konkreten Wert value, der in der Aktivität angezeigt werden soll.
Fehlerquellen Ist die Aktivität bereits erzeugt, kann die Beschreibung der Aktivität nicht mehr geändert werden. D. h. der Befehl formatDescriptionHTMLkann nur in der Funktion createverwendet werden.
Beispiele formatDescriptionHTML("item", loadItem("10010"):number) in der Funktion createersetzt alle Vorkommnisse des Platzhalters item durch die Nummer des Artikels 10010.

Der Befehl formatDescriptionHTML("item", loadItem("10010"):description)in der Funktion createersetzt den Platzhalter item durch die Bezeichnung des Artikels 10010 in der aktuellen Inhaltssprache.

Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch formatDescription, formatSubject, toHtml (siehe Artikel System-Skriptsprache: Allgemeine Funktionen, Funktionen für Zeichenketten (String functions)), getURL (siehe Artikel 

System-Skriptsprache: Allgemeine Funktionen, Funktionen für Business Objects (Business object functions))

Folgendes Beispiel gibt die Artikelbezeichnung des Test-Artikels 10010 in allen aktiven Inhaltssprachen aus. Zunächst ermittelt die FunktiongetCisObjectListdie aktiven Inhaltssprachen. Danach wird der Test-Artikel einmal für jede aktive Inhaltssprache geöffnet, um die Bezeichnung in der jeweiligen Sprache zu ermitteln. Das Eregbnis wird als Zeile in einer HTML-Tabelle festgehalten. Mithilfe der Funktion getURL und eines Anchor-Tags in HTML wird die Artikelnummer als klickbarer Hyperlink in der Aktivitätsbezeichnung angezeigt.

function create()
{
/* item number of this example */
const ItemNumber := "10010";

/* get system and database names */
var systemName := getSystemName();
var databaseName := getDatabaseName();

/* get system and database Guid */
var system := getByBusinessKey("CONFIGURATION", CisObject(com.cisag.sys.configuration.obj.System), systemName, 1);
var database := getByBusinessKey("CONFIGURATION", CisObject(com.cisag.sys.configuration.obj.Database), system:guid, databaseName, 1);

/* query configuration database for active content languages */
var params as Unknown[];
add(params, database:guid);
add(params, 1); /* active version */
var activeLanguages := getCisObjectList("CONFIGURATION", "SELECT FROM com.cisag.sys.configuration.obj.DatabaseLanguage o WHERE o:databaseGuid = ? AND o:version = ?", params, 99);

/* build HTML table with one row for each content language */
var item as CisObject(com.cisag.app.general.obj.Item);
var url := getURL(loadItem(ItemNumber));
var htmlTable := "<table>" + char(13);
for (l as CisObject(com.cisag.sys.configuration.obj.DatabaseLanguage) : activeLanguages) {
setNLSContentLanguage(l:language);
item := loadItem(ItemNumber);
htmlTable := htmlTable + "<tr><td><a href=\"" + url + "\">" + item:number + "</a></td><td>" + l:language + "</td><td>" + item:description + "</td></tr>" + char(13);
echo(htmlTable);
}
htmlTable := htmlTable + "</table>";

/* format activity */
formatDescriptionHTML("table", htmlTable);
}

 

Um sich das Öffnen die beiden Business Objects Systemund Databasezu ersparen, könnte eine Aktivitätsdefinition des Typs Funktionsaufruf die Guid der Datenbank zurückgeben. Die Aktivitätsdefinition müsste in JavaScript erfasst werden und könnte wie folgt aussehen:

function create()
{
var db = Java.type('com.cisag.pgm.appserver.CisEnvironment').getInstance();
result.GUID = com.cisag.pgm.datatype.Guid.toHexString(db.getDatabaseGuid());
}

Die GUID wird über den Ergebnisparameter GUID zurückgegeben. Die Funktion createwürde würde dann wie folgt beginnen:

function create()
{
/* item number of this example */
const ItemNumber := "10010";


/* query configuration database for active content languages in the database */
var params as Unknown[];
add(params, @getDatabaseGuid().GUID;
add(params, 1); /* active version */
var activeLanguages := getCisObjectList("CONFIGURATION", "SELECT FROM com.cisag.sys.configuration.obj.DatabaseLanguage o WHERE o:databaseGuid = ? AND o:version = ?", params, 99);

 

formatSubject
Name formatSubject
Beschreibung Ersetzt einen Platzhalter im Betreff der Aktivität durch einen konkreten Wert.
Signaturen formatSubject(String key, String value)
Parameter key ist der Name des Platzhalters.

value ist der Wert, der anstelle des Platzhalters angezeigt werden soll.

Ergebnis Der Befehl formatSubjectersetzt alle Vorkommnisse des Platzhalters keyim Feld Betreff der Aktivitätsdefinition durch den konkreten Wert value, der in der Aktivität angezeigt werden soll.
Fehlerquellen Ist die Aktivität bereits erzeugt, kann der Betreff der Aktivität nicht mehr geändert werden. D. h. der Befehl formatSubjectkann nur in der Funktion createverwendet werden.
Beispiele formatSubject("item", loadItem("10010"):number) in der Funktion createersetzt den Platzhalter item

durch die Nummer des Artikels 10010.

Der Befehl formatSubject("item", loadItem("10010"):description)in der Funktion createersetzt den Platzhalter itemdurch die Bezeichnung des Artikels 10010 in der aktuellen Inhaltssprache.

Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch formatDescription, formatDescriptionHTML

primaryAttachment

Name primaryAttachment
Beschreibung Gibt das Business Object der bevorzugten Verknüpfung zurück.
Signaturen CisObjectReference primaryAttachment()
Parameter Keine.
Ergebnis Die Funktion primaryAttachmentgibt eine Referenz zum Business Object der bevorzugten Verknüpfung der Aktivität zurück. Besitzt die Aktivität keine Verknüpfungen, wird der Standardwert nulldes Datentypen CisObjectReferencezurückgegeben.

Bei einem Ereignis des Typs Benutzeraktion wird das im Ereignisparameter parameters.objectübergebene Business Object automatisch mit dem Startknoten verknüpft.

Fehlerquellen Keine.
Beispiele isNull(primaryAttachment()) prüft, ob die Aktivität eine Verknüpfung besitzt.

cast(CisObjectReference(com.cisag.app.general.obj.Item), primaryAttachment()) gibt eine auf den Artikel typisierte Referenz auf das bevorzugt verknüpfte Business Object zurück.

Kontext WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP
Hinweise Die zuerst mithilfe des Befehls addAttachment hinzugefügte Verknüpfung gilt als bevorzugte Verknüpfung. In dem Karteireiter Verknüpfungen der Anwendung Aktivitäten ist es möglich, eine beliebige Verknüpfung als bevorzugt festzulegen.

Ist eine Benutzer-Aktivität nicht mit einer Anwendung verknüpft, wird beim Öffnen der Aufgabe das bevorzugt verknüpfte Business Object geöffnet. Über das Kontextmenü der Aufgabe sowie über den Karteireiter Verknüpfungen der Anwendung Aktivitäten können alle mit der Aktivität verknüpften Business Objects geöffnet werden.

In der Anwendung Cockpit: Aktivitäten/OLTP-Datenbank und Cockpit: Aktivitäten/Repository-Datenbank kann nach Aktivitäten über deren verknüpfte Business Objects gesucht werden. Ist ein Business Object mit dem Startknoten eines Prozesses verknüpft, dann ist eine Suche auch in den Anwendungen Cockpit: Prozesse-OLTP-Datenbank und Cockpit: Prozesse/Repository-Datenbank möglich.

Das Suchfeld für das verknüpfte Business Object kann mithilfe der Aktionen Aktivitäten abfragen und Prozesse abfragen im Kontextmenü von Business Entities vorbelegt werden.

Siehe auch addAttachment
setActivityCategory
Name setActivityCategory
Beschreibung Legt die Kategorie der Aktivität fest.
Signaturen setActivityCategory(String categoryConstant)
Parameter categoryConstant ist ein konstanter Wert des ValueSets com.cisag.sys.workflow.ActivityClass:

  • APPOINTMENT
  • TASK
  • PHONE_CALL
  • FAX
  • LETTER
  • EMAIL
  • BATCH_JOB
Ergebnis Der Befehl setActivityCategorylegt die Kategorie der Aktivität und somit auch das Icon der Aufgaben im andockbaren Fenster Aufgaben suchen fest. Die in der Aktivitätsdefinition ausgewählte Kategorie wird durch diesen Befehl geändert.
Fehlerquellen Ist die Aktivität bereits erzeugt, kann die Kategorie nicht mehr geändert werden. D. h. der Befehl setActivityCategorykann nur in der Funktion createverwendet werden.
Beispiele setActivityCategory("EMAIL") weist der Aktivität die Kategorie E-Mail zu.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch setActivityPriority
setActivityPriority
Name setActivityPriority
Beschreibung Legt die Priorität der Aktivität fest.
Signaturen setActivityPriority(Number priorityId)
Parameter priorityId ist ein numerischer Wert des ValueSets com.cisag.sys.workflow.ActivityPriority. Ist priorityId kleiner als 1 oder größer als 9, wird der kleinste bzw. der größte zulässige Wert verwendet.
Ergebnis Der Befehl setActivityPrioritylegt die Priorität der Aktivität und somit auch das Icon für die Priorität der Aufgaben im andockbaren Fenster Aufgaben suchen fest. Die in der Aktivitätsdefinition ausgewählte Priorität wird durch diesen Befehl geändert.
Fehlerquellen Ist die Aktivität bereits erzeugt, kann die Priorität nicht mehr geändert werden. D. h. der Befehl setActivityPrioritykann nur in der Funktion createverwendet werden.
Beispiele setActivityPriority(1) weist der Aktivität die höchste Priorität zu.

setActivityPriority(9) weist der Aktivität die niedrigste Priorität zu.

Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch setActivityCategory
setActivityResult
Name setActivityResult
Beschreibung Legt das Ergebnis der Aktivität fest.
Signaturen setActivityResult(String result)
Parameter result ist das Ergebnis der Aktivität als eine Zeichenkette.
Ergebnis Der Befehl setActivityResultlegt das Ergebnis der Aktivität fest. Das Ergebnis wird in der Anwendung Aktivitäten auf dem Karteireiter Ergebnisse im Feld Ergebnis angezeigt. Das Ergebnis kann auch in der Funktion creategesetzt werden, bevor die Aktivität erzeugt wurde.
Fehlerquellen Durch das Datenmodell ist das Ergebnis auf 80 Zeichen begrenzt.
Beispiele setActivityResult("Hello World!") weist legt das Ergebnis der Aktivität auf Hello World! fest.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch
setActivityWorkDelay
Name setActivityWorkDelay
Beschreibung Legt die Zeitdauer bis zum Beginn des Bearbeitungszeitraums fest.
Signaturen setActivityWorkDelay(Number seconds)
Parameter seconds ist die Zeitdauer in Sekunden bis zum Beginn des Bearbeitungszeitraums.
Ergebnis Der Befehl setActivityWorkDelaylegt die Zeitdauer in Sekunden bis zum Beginn des Bearbeitungszeitraums der zu erzeugenden Aktivität fest. Die im Feld Beginn in der Aktivitätsdefinition eingetragene Zeitdauer wird durch diesen Befehl geändert.
Fehlerquellen Ist die Aktivität bereits erzeugt, kann die Zeitdauer nicht mehr geändert werden. D. h. der Befehl setActivityWorkDelaykann nur in der Funktion createverwendet werden.
Beispiele setActivityWorkDelay(3600) legt die Zeitdauer bis zum Beginn des Bearbeitungszeitraums auf eine Stunde fest.

setActivityWorkDelay(seconds(activity:creationTime, addDays(startOfDay(activity:creationTime), 1)) + 1) legt den Beginn des Bearbeitungszeitraums auf den Anfang des darauffolgenden Tages fest.

setActivityWorkDelay(seconds(activity:creationTime, addWorkingDays("90310", startOfDay(activity:creationTime), 3)) + 1) legt den Beginn des Bearbeitungszeitraums auf den Anfang des dritten Arbeitstages gemäß des Werkskalenders der Organisation 90310 fest.

Kontext WF_REPOSITORY, WF_OLTP
Hinweise Die Zeitdauer wird zum Wert des Attributs creationTimeder Aktivität hinzugefügt.
Siehe auch setActivityWorkDuration
setActivityWorkDuration
Name setActivityWorkDuration
Beschreibung Legt die Bearbeitungsdauer fest.
Signaturen setActivityWorkDuration(Number seconds)
Parameter seconds ist eine Zeitdauer in Sekunden.
Ergebnis Der Befehl setActivityWorkDurationlegt die Bearbeitungsdauer in Sekunden fest. Die im Feld Bearbeitungsdauer der Aktivitätsdefinition eingetragene Zeitdauer wird durch diesen Befehl geändert.
Fehlerquellen Ist die Aktivität bereits erzeugt, kann die Bearbeitungsdauer nicht mehr geändert werden. D. h. der Befehl setActivityWorkDurationkann nur in der Funktion createverwendet werden.
Beispiele setActivityWorkDuration(3600) legt die Bearbeitungsdauer auf eine Stunde nach dem Beginn des Bearbeitungszeitraums fest.

Ist die Zeitdauer bis zum Beginn des Bearbeitungszeitraums 0 und die Aktivität beginnt sofort, dann legt setActivityWorkDuration(seconds(activity:creationTime, addDays(endOfDay(activity:creationTime), 1)))das Ende des Bearbeitungszeitraums auf das Ende des darauffolgenden Tages fest.

Wurde der Beginn des Bearbeitungszeitraums auf den Anfang des darauffolgenden Tages mithilfe des Befehls setActivityWorkDuration(seconds(activity:creationTime, addDays(startOfDay(activity:creationTime), 1)) + 1)festgelegt, dann legt setActivityWorkDuration(60 * 60 * 24 - 1)das Ende der Bearbeitungsdauer auf das Ende des darauffolgenden Tages fest.

setActivityWorkDuration(seconds(activity:creationTime, addWorkingDays("90310", endOfDay(activity:creationTime), 3))) legt das Ende des Bearbeitungszeitraumes auf das Ende des dritten Arbeitstages gemäß des Werkskalenders der Organisation 90310 fest.

Kontext WF_REPOSITORY, WF_OLTP
Hinweise Die Bearbeitungsdauer wird zum Beginn des Bearbeitungszeitraumes hinzugefügt.
Siehe auch setActivityWorkDelay
setSeriesDuration
Name setSeriesDuration
Beschreibung Legt die Seriendauer fest.
Signaturen setSeriesDuration(Number seconds)
Parameter seconds ist eine Zeitdauer in Sekunden.
Ergebnis Der Befehl setSeriesDurationlegt die Seriendauer einer Aktivität des Typs Serienvorlage oder Time-Ereignis in Sekunden fest. Die im Feld Seriendauer der Aktivitätsdefinition eingetragene Zeitdauer wird durch diesen Befehl geändert.
Fehlerquellen Ist die Aktivität bereits erzeugt, kann die Bearbeitungsdauer nicht mehr geändert werden. D. h. der Befehl setSeriesDurationkann nur in der Funktion createverwendet werden.
Beispiele setSeriesDuration(3600 * 24 * 7) legt die Seriendauer auf eine Woche fest.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch setActivityWorkDuration

Funktionen für Bearbeiter (Editor functions)

Zu den Funktionen für Bearbeiter gehören vor allem Funktionen, um die Bearbeiter mit Aufgaben eines bestimmten Status zu ermitteln. Diese Funktionen können z. B. verwendet werden, um Bearbeiter für eine Folgeaktion bei Zeitüberschreitung zu ermitteln:

activeParticipants
Name activeParticipants
Beschreibung Gibt die aktiven beteiligten Benutzer am Prozess zurück.
Signaturen Guid[] activeParticipants()
Parameter Keine.
Ergebnis Die Funktion activeParticipantsgibt eine Liste mit den Guids aller aktiven beteiligten Benutzer am Prozess zurück. Ein Benutzer gilt als aktiver Beteiligter, wenn dieser eine Aufgabe im Status In Bearbeitung besitzt. Hat der Prozess keine aktiven beteiligten Benutzer, wird eine leere Liste zurückgegeben.
Fehlerquellen Wird die Funktion activeParticipantsin einer Aktivitätsdefinition verwendet, die nicht mit einer Prozessdefinition verknüpft ist, bricht die Auswertung mit einem Fehler ab.
Beispiele Der Ausdruck size(activeParticipants())gibt die Anzahl der beteiligten Benutzer mit einer offenen Aufgabe im Prozess zurück.

Folgendes Skript gibt die Namen aller beteiligten Benutzer mit einer offenen Aufgabe ins Protokoll aus:

var users := activeParticipants();
for (u as Guid : users) {
echo(userName(u));
}
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch activeWorkers, allParticipants, currentParticipants
activeWorkers
Name activeWorkers
Beschreibung Gibt die aktiven Bearbeiter der Aktivität zurück.
Signaturen Guid[] activeWorkers()
Parameter Keine.
Ergebnis Die Funktion activeWorkersgibt eine Liste mit den Guids aller aktiven Bearbeiter der Aktivität zurück. Ein Bearbeiter gilt als aktiv, wenn er eine Aufgabe im Status In Bearbeitung besitzt. Hat der Prozess keinen aktiven Bearbeiter, wird eine leere Liste zurückgegeben.
Fehlerquellen Keine.
Beispiele Der Ausdruck size(activeWorkers())gibt die Anzahl der Bearbeiter mit einer offenen Aufgabe zurück.

Folgendes Skript gibt die Namen aller Benutzer mit einer offenen Aufgabe ins Protokoll aus:

var users := activeWorkers();
for (u as Guid : users) {
echo(userName(u));
}
Kontext WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP
Hinweise
Siehe auch activeParticipants, allWorkers, canceledWorkers, closedWorkers, currentWorkers, doneWorkers, forwardedWorkers, overdueWorkers
allParticipants
Name allParticipants
Beschreibung Gibt alle beteiligten Benutzer am Prozess zurück.
Signaturen Guid[] allParticipants()
Parameter Keine.
Ergebnis Die Funktion allParticipantsgibt eine Liste mit den Guids aller beteiligten Benutzer am Prozess zurück. Ein Benutzer gilt als Beteiligter, wenn dieser eine mit dem Prozess verknüpfte Aufgabe besitzt. Der Status der Aufgabe spielt dabei keine Rolle. Hat der Prozess keine beteiligten Benutzer, wird eine leere Liste zurückgegeben.
Fehlerquellen Wird die Funktion allParticipantsin einer Aktivitätsdefinition verwendet, die nicht mit einer Prozessdefinition verknüpft ist, bricht die Auswertung mit einem Fehler ab.
Beispiele Der Ausdruck size(allParticipants())gibt die Anzahl aller am Prozess beteiligten Benutzer zurück.

Folgendes Skript gibt die Namen aller am Prozess beteiligten Benutzer ins Protokoll aus:

var users := allParticipants();
for (u as Guid : users) {
echo(userName(u));
}
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch allWorkers, activeParticipants, currentParticipants
Beispiel: possibleParticipants

Folgendes Beispiel aus der Aktivitätsdefinition help.possibleParticipants gibt mögliche Bearbeiter aller Aktivitätsdefinitionen einer Prozessdefinition zurück.

function create()
{
const PerformerType as valueSet(com.cisag.sys.workflow.PerformerType);
const ProcessOwnerOrigin as valueSet(com.cisag.sys.workflow.ProcessOwnerOrigin);

var users as Guid[];
var userNames as String;

var pd := getByBusinessKey("REPOSITORY", CisObject(com.cisag.sys.workflow.obj.ProcessDefinition), parameters.PROCESS_DEFINITION, parameters.ORIGIN);
var OQL := "SELECT FROM com.cisag.sys.workflow.obj.ActivityDefinition ad WHERE ad:processDefinition = ?";
var adList := getCisObjectList("REPOSITORY", OQL, list(pd:guid), 100);

for (ad as CisObject(com.cisag.sys.workflow.obj.ActivityDefinition) : adList)
{
if (ad:data.performer.type = PerformerType.ROLE) {
users := union(users, resolveRole(ad:data.performer.guid));
}
if (ad:data.performer.type = PerformerType.USER) {
users := union(users, list(ad:data.performer.guid));
}
if (ad:data.performer.type = PerformerType.INITIATOR) {
users := union(users, list(userGuid("process.Initiator")));
}
if (ad:data.performer.type = PerformerType.OWNER) {
if (pd:processData.sourceOfOwner = ProcessOwnerOrigin.PROCESS_DEFINITION)
users := union(users, list(userGuid(pd:owner)));
if (pd:processData.sourceOfOwner = ProcessOwnerOrigin.WORKFLOW_ROLE)
users := union(users, resolveRole(pd:ownerRole));
}
}
for (u : users) {
userNames := userNames + " " + userName(u);
}
result.PARTICIPANTS := trim(userNames);
}

 

allWorkers
Name allWorkers
Beschreibung Gibt alle Bearbeiter der Aktivität zurück.
Signaturen Guid[] activeWorkers()
Parameter Keine.
Ergebnis Die Funktion activeWorkersgibt eine Liste mit den Guids aller aktiven Bearbeiter der Aktivität zurück. Ein Benutzer gilt als Bearbeiter, wenn dieser eine mit der Aktivität verknüpfte Aufgabe besitzt. Der Status der Aufgabe spielt dabei keine Rolle. Hat die Aktivität keine Bearbeiter, wird eine leere Liste zurückgegeben.
Fehlerquellen Keine.
Beispiele Der Ausdruck size(allWorkers())gibt die Anzahl der Bearbeiter mit einer offenen Aufgabe zurück.

Folgendes Skript gibt die Namen aller Benutzer mit einer offenen Aufgabe ins Protokoll aus:

var users := activeWorkers();
for (u as Guid : users) {
echo(userName(u));
}
Kontext WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP
Hinweise
Siehe auch allParticipants, activeWorkers, canceledWorkers, closedWorkers, currentWorkers, doneWorkers, forwardedWorkers, overdueWorkers
canceledWorkers
Name canceledWorkers
Beschreibung Gibt alle Bearbeiter mit einer ohne Änderungen erledigten Aufgabe zurück.
Signaturen Guid[] canceledWorkers()
Parameter Keine.
Ergebnis Die Funktion canceledWorkersgibt eine Liste mit den Guids aller Benutzer zurück, die eine mit der Aktivität verknüpfte Aufgabe im Status Unbearbeitet erledigt besitzen. Hat die Aktivität keinen Bearbeiter mit einer unbearbeitet erledigten Aufgabe, wird eine leere Liste zurückgegeben.
Fehlerquellen Keine.
Beispiele Der Ausdruck size(canceledWorkers())gibt die Anzahl der Bearbeiter mit einer unbearbeitet erledigten Aufgabe zurück.

Der Ausdruck union(canceledWorkers(), doneWorkers())gibt alle Benutzer zurück, die ihre Aufgabe erledigt oder unbearbeitet erledigt haben.

Folgendes Skript gibt die Namen aller Benutzer mit einer unbearbeitet erledigten Aufgabe ins Protokoll aus:

var users := canceledWorkers();
for (u as Guid : users) {
echo(userName(u));
}
Kontext WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP
Hinweise
Siehe auch activeWorkers, allWorkers, closedWorkers, currentWorkers, doneWorkers, forwardedWorkers, overdueWorkers
closedWorkers
Name closedWorkers
Beschreibung Gibt alle Bearbeiter mit einer gesperrten Aufgabe zurück.
Signaturen Guid[] closedWorkers()
Parameter Keine.
Ergebnis Die Funktion closedWorkersgibt eine Liste mit den Guids aller Benutzer zurück, die eine mit der Aktivität verknüpfte Aufgabe im Status Gesperrt besitzen. Hat die Aktivität keinen Bearbeiter mit einer gesperrten Aufgabe, wird eine leere Liste zurückgegeben.
Fehlerquellen Keine.
Beispiele Der Ausdruck size(closedWorkers())gibt die Anzahl der Bearbeiter mit einer gesperrten Aufgabe zurück.

Folgendes Skript gibt die Namen aller Benutzer mit einer gesperrten Aufgabe ins Protokoll aus:

var users := closedWorkers();
for (u as Guid : users) {
echo(userName(u));
}
Kontext WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP
Hinweise
Siehe auch activeWorkers, allWorkers, canceledWorkers, currentWorkers, doneWorkers, forwardedWorkers, overdueWorkers
currentParticipants
Name currentParticipants
Beschreibung Gibt die zurzeit beteiligten Benutzer am Prozess zurück.
Signaturen Guid[] currentParticipants()
Parameter Keine.
Ergebnis Die Funktion currentParticipantsgibt eine Liste mit den Guids aller zurzeit am Prozess beteiligten Benutzer zurück. Dazu zählen Benutzer, die einer Aufgabe mit einem der folgenden Status zugeordnet sind:

  • Zu bearbeiten
  • In Bearbeitung
  • Verspätet
  • Gesperrt
  • Erhalten

Ist zurzeit kein Benutzer am Prozess beteiligt, wird eine leere Liste zurückgegeben.

Fehlerquellen Wird die Funktion currentParticipantsin einer Aktivitätsdefinition verwendet, die nicht mit einer Prozessdefinition verknüpft ist, bricht die Auswertung mit einem Fehler ab.
Beispiele Der Ausdruck size(currentParticipants())gibt die Anzahl der zurzeit beteiligten Benutzer zurück.

Folgendes Skript gibt die Namen aller zurzeit beteiligten Benutzer ins Protokoll aus:

var users := currentParticipants();
for (u as Guid : users) {
echo(userName(u));
}
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch currentWorkers, activeParticipants, allParticipants
currentWorkers
Name currentWorkers
Beschreibung Gibt alle Bearbeiter mit einer offenen Aufgabe zurück.
Signaturen Guid[] currentWorkers()
Parameter Keine.
Ergebnis Die Funktion currentWorkersgibt eine Liste mit den Guids aller Benutzer zurück, die eine mit der Aktivität verknüpfte Aufgabe in einem der folgenden Status besitzen:

  • Zu bearbeiten
  • In Bearbeitung
  • Verspätet
  • Gesperrt
  • Erhalten

Hat die Aktivität keinen Bearbeiter mit einer offenen Aufgabe, wird eine leere Liste zurückgegeben.

Fehlerquellen Keine.
Beispiele Der Ausdruck size(currentWorkers())gibt die Anzahl der Bearbeiter mit einer offenen Aufgabe zurück.

Der Ausdruck currentWorkers()als Bearbeiter einer Folgeaktion nach Zeitüberschreitung kann neue Aufgaben für alle Bearbeiter erzeugen, die ihre Aufgaben noch nicht erledigt, unbearbeitet erledigt oder weitergeleitet haben.

Folgendes Skript gibt die Namen aller Benutzer mit einer offenen Aufgabe ins Protokoll aus:

var users := currentWorkers();
for (u as Guid : users) {
echo(userName(u));
}
Kontext WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP
Hinweise
Siehe auch currentParticipants, activeWorkers, allWorkers, canceledWorkers, closedWorkers, doneWorkers, forwardedWorkers, overdueWorkers
doneWorkers
Name doneWorkers
Beschreibung Gibt alle Bearbeiter mit einer erledigten Aufgabe zurück.
Signaturen Guid[] doneWorkers()
Parameter Keine.
Ergebnis Die Funktion doneWorkersgibt eine Liste mit den Guids aller Benutzer zurück, die eine mit der Aktivität verknüpfte Aufgabe im Status Erledigt besitzen. Hat die Aktivität keinen Bearbeiter mit einer erledigten Aufgabe, wird eine leere Liste zurückgegeben.
Fehlerquellen Keine.
Beispiele Der Ausdruck size(doneWorkers())gibt die Anzahl der Bearbeiter mit einer erledigten Aufgabe zurück.

Der Ausdruck union(canceledWorkers(), doneWorkers())gibt alle Benutzer zurück, die ihre Aufgabe erledigt oder unbearbeitet erledigt haben.

Folgendes Skript gibt die Namen aller Benutzer mit einer erledigten Aufgabe ins Protokoll aus:

var users := doneWorkers();
for (u as Guid : users) {
echo(userName(u));
}
Kontext WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP
Hinweise
Siehe auch activeWorkers, allWorkers, canceledWorkers, closedWorkers, currentWorkers, forwardedWorkers, overdueWorkers
forwardedWorkers
Name forwardedWorkers
Beschreibung Gibt alle Bearbeiter mit einer weitergeleiteten Aufgabe zurück.
Signaturen Guid[] forwardedWorkers()
Parameter Keine.
Ergebnis Die Funktion forwardedWorkersgibt eine Liste mit den Guids aller Benutzer zurück, die eine mit der Aktivität verknüpfte Aufgabe im Status Weitergeleitet besitzen. Hat die Aktivität keinen Bearbeiter mit einer weitergeleiteten Aufgabe, wird eine leere Liste zurückgegeben.
Fehlerquellen Keine.
Beispiele Der Ausdruck size(forwardWorkers())gibt die Anzahl der Bearbeiter mit einer weitergeleiteten Aufgabe zurück.

Folgendes Skript gibt die Namen aller Benutzer mit einer weitergelieteten Aufgabe ins Protokoll aus:

var users := forwardedWorkers();
for (u as Guid : users) {
echo(userName(u));
}
Kontext WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP
Hinweise
Siehe auch activeWorkers, allWorkers, canceledWorkers, closedWorkers, currentWorkers, doneWorkers, overdueWorkers
overdueWorkers
Name overdueWorkers
Beschreibung Gibt alle Bearbeiter mit einer verspäteten Aufgabe zurück.
Signaturen Guid[] overdueWorkers()
Parameter Keine.
Ergebnis Die Funktion overdueWorkersgibt eine Liste mit den Guids aller Benutzer zurück, die eine mit der Aktivität verknüpfte Aufgabe im Status Verspätet besitzen. Hat die Aktivität keinen Bearbeiter mit einer verspäteten Aufgabe, wird eine leere Liste zurückgegeben.
Fehlerquellen Keine.
Beispiele Der Ausdruck size(overdueWorkers())gibt die Anzahl der Bearbeiter mit einer verspäteten Aufgabe zurück.

Folgendes Skript gibt die Namen aller Benutzer mit einer verspäteten Aufgabe ins Protokoll aus:

var users := overdueWorkers();
for (u as Guid : users) {
echo(userName(u));
}
Kontext WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP
Hinweise
Siehe auch activeWorkers, allWorkers, canceledWorkers, closedWorkers, currentWorkers, doneWorkers, forwardedWorkers

Funktionen für Aktivitätsergebnisse (Activity results functions)

Die Funktionen für Aktivitätsergebnisse initialisieren die Elemente der Dialoge Aktivitätsergebnisse eingeben und Prozessparameter eingeben:

formatEntityField
Name formatEntityField
Beschreibung Initialisiert ein Entityfeld in den Aktivitätsergebnissen.
Signaturen formatEntityField(String name, String ldtPath)

formatEntityField(String name, String ldtPath, HashMap<String, Object> presets)

Parameter name ist der Name des Entityfeldes.

ldtPath ist der Name eines logischen Datentypen (Data-Description-LDT) inklusive Pfad.

presets ist eine Hash-Tabelle mit Vorgabewerten für die Wertehilfe des logischen Datentypen.

Ergebnis Der Befehl formatEntityFieldinitialisiert das Ergebnisfeld namedes Feldtyps Business Entityfeld oder Business Entity-Verknüpfungsfeld im Dialog Aktivitätsergebnisse eingeben bzw. Prozessparameter eingeben.

Die Hash-Tabelle presetsbelegt die Selektionsfelder in der Suche für die Werthilfe und unterbindet die Eingabe in den vorbelegten Selektionsfeldern (read-only).

Fehlerquellen Stimmen der logische Datentyp des Ergebnisfelds und der logische Datentyp ldtPathnicht überein, entsteht ein Laufzeitfehler.

Ein Laufzeitfehler entsteht auch dann, wenn die Vorgabewerte für die Wertehilfe nicht gesetzt werden können.

Beispiele formatEntityField("partner", "com.cisag.app.general:Partner.lt") initialisiert das Entityfeld partner gemäß dem logischen Datentyp com.cisag.app.general.Partner.

formatEntityField("partner", 
"com.cisag.app.sales:SalesOrderNumber.lt", 
hashMap(customerNumber := "10010", status:=2)

initialisiert das Entityfeld partner gemäß dem logischen Datentyp com.cisag.app.sales.SalesOrderNumberund belegen die Selektionsfelder Auftraggeber und Status mit dem Wert 10010 und 2 für den Status Freigegeben vor und schützen die Selektionsfelder vor der Eingabe.

Kontext WF_REPOSITORY, WF_OLTP
Hinweise Die Funktion erwartet den logischen Datentypen mit einem Doppelpunkt (:) vom Pfad getrennt und mit dem Suffix .lt. Beispielsweise wird der logische Datentyp com.cisag.app.sales.SalesOrderNumberals die Zeichenkette com.cisag.app.sales:SalesOrderNumber.lt an die Funktion übergeben.

Ein passender logischer Datentyp für das Entityfeld lässt sich meist über den Business Key des Business Entitys finden. Beispielsweise besteht der Business Key des Vertriebsauftrags aus den beiden Attributen typeund number. Über die Art lässt sich ein Vertriebsauftrag nur schwer suchen bzw. auswählen, also ist die Vertriebsauftragsnummer das erfolgversprechendere Attribut.

Das Attribut number besitzt den logischen Datentyp com.cisag.app.sales.SalesOrderNumber. Im logischen Datentyp ist die gleichnamige Data Description com.cisag.app.sales.SalesOrderNumberhinterlegt. In der Data Description ist die Suche .obj.SalesOrderFieldSearchhinterlegt. Im Entwicklungsobjekt dieser Suche stehen auf dem Unterkarteireiter OQL in der Spalte Namen die im Parameter presetszu verwendenen Namen.

Nur die im Suchdialog angezeigten Selektionsfelder können vorbelegt werden. Ist in der Spalte Suchmerkmalsposition keine Reihenfolge hinterlegt, dann kann das Attribut in der Regel auch nicht vorbelegt werden. Auch können Selektionsfelder bestimmter Datentypen nicht vorbelegt werden. Um das Selektionsfeld für die Vertriebsauftragsart vorzubelegen ist es z. B. besser, das Attribut typeCodeals ctxSalesOrderTypezu verwenden, da eine Zeichenkette einfacher vorbelegt werden kann.

Auch wenn die Wertehilfe durch eine Vorbelegung der Selektionsfelder eingeschränkt werden kann, können nicht in der Wertehilfe angebotene Business Entitys durch Kopieren und Einfügen eingegeben werden. Die Vorbelegung der Selektionsfelder ersetzt somit nicht die Prüfung mithilfe der Funktion validate.

Siehe auch formatSelectionField
formatSelectionField
Name formatSelectionField
Beschreibung Initialisiert ein dynamisches Auswahlfeld in den Aktivitätsergebnissen.
Signaturen formatSelectionField(String name, HashMap values)
Parameter name ist der Name des Auswahlfeldes.

values ist eine Hash-Tabelle mit den Namen und Werten der Auswahl.

Ergebnis Der Befehl formatSelectionFieldinitialisiert das Ergebnisfeld nameim Dialog Aktivitätsergebnisse eingeben bzw. Prozessparameter eingeben.

Der Befehl kann nur in der Funktion applyDefaultsverwendet werden.

Fehlerquellen Das Ergebnisfeld namemuss als Dynamisches Auswahlfeld oder Dynamisches Mehrfach-Auswahlfeld definiert sein.
Beispiele formatSelectionField("approvalStatus", hashMap(APPROVED:="Yes", REJECTED:="No")) legt die zwei Auswahlwerte APPROVED und REJECTED für das dynamische Auswahlfeld approvalStatus fest.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise In den Funktionen validateund closekann das Ergebnis mithilfe der Variablen results.approvalStatusabgefragt werden.
Siehe auch formatEntityField
Beispiel: Benutzeraktion für ein Dependent

Ein Ereignis des Typs Benutzeraktion ist nur für Business Entitys möglich. Um einen Prozess auch für ein Dependent wie z. B. eine Vertriebsauftragsposition zu starten, wird das dynamische Auswahlfeld details mit der Nummer und Artikelbezeichnung der Vertriebsauftragspositionen initialisiert.

function applyDefaults()
{
/* initialize dynamic result field with line items */
var hm := new(HashMap);
var details := getCisObjectList("SELECT FROM com.cisag.app.sales.obj.SalesOrderDetail o WHERE o:header = ? ORDER BY o:number", list(parameters.object:guid), 100);
for (detail as CisObject(com.cisag.app.sales.obj.SalesOrderDetail) : details) {
hm[format(detail:number, "0")] := cast(String, detail:number) + " " + detail->Item:number + " " + detail->Item:description;
}
formatSelectionField("details", hm);
}

Folgende Übergangsbedingung deaktiviert die Benutzeraktion im Kontextmenü, wenn der Vertriebsauftrag keine Position besitzt:

parameters.object:detailCount > 0

setResultFieldEditable
Name setResultFieldEditable
Beschreibung Legt die Editierbarkeit eines Ergebnisfeldes fest.
Signaturen setResultFieldEditable(String name, Boolean editable)
Parameter name ist der Name des Ergebnisfeldes.

editable ist die Editierbarkeit des Ergebnisfeldes.

Ergebnis Der Befehl setResultFieldEditablelegt die Editierbarkeit des Ergebnisfeldes nameim Dialog Aktivitätsergebnisse eingeben bzw. Prozessparameter eingeben fest.

Der Befehl kann nur in der Funktion applyDefaultsverwendet werden.

Fehlerquellen Keine.
Beispiele setResultFieldEditable("approvalStatus", false) legt fest, dass das Ergebnisfeld approvalStatus nicht editierbar ist.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch setResultFieldVisible
setResultFieldVisible
Name setResultFieldVisible
Beschreibung Legt die Sichtbarkeit eines Ergebnisfeldes fest.
Signaturen setResultFieldVisible(String name, Boolean editable)
Parameter name ist der Name des Ergebnisfeldes.

editable ist die Sichtbarkeit des Ergebnisfeldes.

Ergebnis Der Befehl setResultFieldVisiblelegt die Sichtbarkeit des Ergebnisfeldes nameim Dialog Aktivitätsergebnisse eingeben bzw. Prozessparameter eingeben fest.

Der Befehl kann nur in der Funktion applyDefaultsverwendet werden.

Fehlerquellen Keine.
Beispiele setResultFieldVisible("approvalStatus", false) legt fest, dass das Ergebnisfeld approvalStatus nicht angezeigt wird.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch setResultFieldEditable

Funktionen für E-Mail-Nachrichten und E-Mail-Knoten (E-Mail functions)

Mithilfe der Funktionen für E-Mail-Nachrichten und E-Mail-Knoten können Sie den E-Mail-Versand in diesen beiden Aktivitätstypen konfigurieren:

addMailAttachment
Name addMailAttachment
Beschreibung Hängt eine Datei als Anhang an die zu versendende E-Mail.
Signaturen addMailAttachment(String fileName, Bytes content)
Parameter fileName ist der Dateiname, den der Anhang in der E-Mail bekommt.

content enthält den Inhalt der angehängten Datei.

Ergebnis Der Befehl addMailAttachmenthängt eine Datei als Anhang an die zu versendende E-Mail. Sie können die Funktion readFileverwenden, um diesen Parameter zu berechnen. Dieser Befehl funktioniert nur in Aktivitätsdefinitionen vom Aktivitätstyp E-Mail-Nachricht oder E-Mail-Knoten.
Fehlerquellen Keine.
Beispiele addMailAttachment("MyFileName.html", readFile("kstore://" + getDatabaseName() + "/Documents/Workflow/Mailtemplate_de.html")) hängt die E-Mail-Vorlage Mailtemplate_de.html aus dem Verzeichnis Workflow im Knowledge Store an die zu versendete E-Mail und benennt den Anhang MyFileName.html.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch readFile (siehe Artikel System-Skriptsprache: Allgemeine Funktionen, Funktionen für Dateien)
setMailLinkTarget
Name setMailLinkTarget
Beschreibung Setzt den Application-Server für Links in E-Mails.
Signaturen setMailLinkTarget(String serverName)
Parameter serverName ist der Name des Application-Servers.
Ergebnis Der Befehl setMailLinkTargetsetzt den Application-Server, dessen URL in den generierten Links der zu versendenden E-Mails verwendet wird. Der übergebene Application-Server wird ignoriert, falls die Ziel-Server für den Empfänger der E-Mail benutzerspezifisch konfiguriert wurden und falls der Application-Server für den Empfänger nicht zugeordnet wurde.

Ohne den Aufruf des Befehls setMailLinkTargetwird der Ziel-Server für Verknüpfungen wie im Kapitel Ziel-Server für Verknüpfungen in der Dokumentation Workflow-Engine beschrieben bestimmt.

Fehlerquellen Keine.
Beispiele setMailLinkTarget(getServerName()) verwendet den Application-Server der aktuellen Laufumgebung für URLs in Links in versendeten E-Mails.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise In Systemen mit einem Application-Server ist keine weitere Konfiguration notwendig. Der Ziel-Server ist der Application-Server, auf dem die Workflow-Engine läuft.

Wenn ein System mehrere Application-Server umfasst, tragen Sie in der Anwendung Systemcockpit bei allen Application-Servern im Feld Ziel-Server für Link-Attribute einen Dialog-Application-Server ein. Dieser Server wird für alle Verknüpfungen in Workflow-E-Mails verwendet, die vom Message-Server versendet werden.

Wenn der Ziel-Server abhängig von dem Benutzer ist, können Sie auch in der Anwendung Workflowrollen Workflowrollen-spezifische Ziel-Server zuordnen.

Siehe auch formatDescriptionHTML, serverLinkTarget (siehe Artikel System-Skriptsprache: Allgemeine Funktionen, System- und Konfigurationsfunktionen (System and Configuration functions)), setMailTemplate
setMailRecipientsBCC
Name setMailRecipientsBCC
Beschreibung Setzt den BCC-Empfänger der zu versendenden E‑Mail.
Signaturen setMailRecipientsBCC(String mailAddress)
Parameter mailAddress ist die E-Mail-Adresse des BCC-Empfängers. Mehrere E-Mail-Adressen können durch ein Komma getrennt angegeben werden.
Ergebnis Der Befehl setMailRecipientsBCCsetzt den BCC-Empfänger (blind carbon copy) der zu versendenden E‑Mail.
Fehlerquellen Dieser Befehl funktioniert nur in Aktivitätsdefinitionen der Aktivitätstypen E-Mail-Nachricht und E-Mail-Knoten.
Beispiele setMailRecipientsBCC("workflow@comarch.com") setzt den BCC-Empfänger zu „workflow@comarch.com“.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch setMailRecipientsCC, setMailRecipientsTo, setMailReplyTo, setMailSendertsetMailTemplate
setMailRecipientsCC
Name setMailRecipientsCC
Beschreibung Setzt den CC-Empfänger der zu versendenden E‑Mail.
Signaturen setMailRecipientsCC(String mailAddress)
Parameter mailAddress ist die E-Mail-Adresse des CC-Empfängers. Mehrere E-Mail-Adressen können durch ein Komma getrennt angegeben werden.
Ergebnis Der Befehl setMailRecipientsCCsetzt den CC-Empfänger (carbon copy) der zu versendenden E‑Mail.
Fehlerquellen Dieser Befehl funktioniert nur in Aktivitätsdefinitionen der Aktivitätstypen E-Mail-Nachricht und E-Mail-Knoten.
Beispiele setMailRecipientsCC("workflow@comarch.com") setzt den CC-Empfänger zu „workflow@comarch.com“.

setMailRecipientsCC(userMailAddress(process.Initiator)) setzt den Prozessauslöser als CC-Empfänger.

Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch setMailRecipientsBCC, setMailRecipientsTo, setMailReplyTo, setMailSender, setMailTemplate
setMailRecipientsTo
Name setMailRecipientsTo
Beschreibung Setzt den Empfänger der zu versendenden E‑Mail.
Signaturen setMailRecipientsTo(String mailAddress)
Parameter mailAddress ist die E-Mail-Adresse des Empfängers. Mehrere E-Mail-Adressen können durch ein Komma getrennt angegeben werden.
Ergebnis Der Befehl setMailRecipientsTosetzt den Empfänger der zu versendenden E‑Mail.

Ist der Bearbeiter der Aktivität nicht das System oder ein Verarbeitungsauftrag, sondern ein oder mehrere Benutzer, dann versendet die Workflow-Engine eine E-Mail an jeden dieser Benutzer. Dabei verwendet die Workflow Engine die im Systemcockpit hinterlegte E-Mail-Adresse des Benutzers. Der Befehl setMailReplyToersetzt sämtliche E-Mail-Adressen der Bearbeiter der Aktivität durch die im Parameter mailAddressangegebene E-Mail-Adresse.

Fehlerquellen Dieser Befehl funktioniert nur in Aktivitätsdefinitionen der Aktivitätstypen E-Mail-Nachricht und E-Mail-Knoten.
Beispiele setMailRecipientsTo("workflow@comarch.com") setzt den Empfänger zu „workflow@comarch.com“.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch setMailRecipientsBCC, setMailRecipientsCC, setMailReplyTo, setMailSender, setMailTemplate
setMailReplyTo
Name setMailReplyTo
Beschreibung Setzt die Antwort-E-Mail-Adresse der zu versendenden E‑Mail.
Signaturen setMailReplyTo(String mailAddress)
Parameter mailAddress ist die Antwort-E-Mail-Adresse.
Ergebnis Der Befehl setMailReplyTosetzt die Antwort-E-Mail-Adresse der zu versendenden E‑Mail.

Die Workflow Engine verwendet die in der Anwendung E-Mail-Server hinterlegte Antwort-E-Mail-Adresse. Der Befehl setMailReplyToersetzt diese Antwort-E-Mail-Adresse durch die im Parameter mailAddressangegebene E-Mail-Adresse.

Fehlerquellen Dieser Befehl funktioniert nur in Aktivitätsdefinitionen der Aktivitätstypen E-Mail-Nachricht und E-Mail-Knoten.

Der eingesetzte Mail Server kann die Verwendung der mit mailAddressangegeben Antwort-E-Mail-Adresse verhindern. Überprüfen Sie ggf. die Fehlerprotokolle des Mail Servers, falls E-Mails mit einer abweichenden Antwort-E-Mail-Adresse nicht korrekt zugestellt werden.

Beispiele setMailReplyTo("workflow@comarch.com") setzt die Antwort-E-Mail-Adresse zu „workflow@comarch.com“.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch setMailRecipientsBCC, setMailRecipientsCC, setMailRecipientsTo, setMailSender, setMailTemplate
setMailSender
Name setMailSender
Beschreibung Setzt den Absender der zu versendenden E‑Mail.
Signaturen setMailSender(String mailAddress)
Parameter mailAddress ist die E-Mail-Adresse des Absenders.
Ergebnis Der Befehl setMailSendersetzt den Absender der zu versendenden E‑Mail.

Die Workflow-Engine verwendet die in der Anwendung E-Mail-Server hinterlegte E-Mail-Adresse für den Absender. Der Befehl setMailSenderersetzt diesen Absender durch die im Parameter mailAddressangegebene E-Mail-Adresse.

Fehlerquellen Dieser Befehl funktioniert nur in Aktivitätsdefinitionen der Aktivitätstypen E-Mail-Nachricht und E-Mail-Knoten.

Der eingesetzte Mail Server kann die Verwendung der mit mailAddressangegeben E-Mail-Adresse als Absender verhindern. Überprüfen Sie ggf. die Fehlerprotokolle des Mail Servers, falls E-Mails mit einer abweichenden Antwort-E-Mail-Adresse nicht korrekt zugestellt werden.

Beispiele setMailSender("workflow@comarch.com") setzt den Absender zu „workflow@comarch.com“.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch setMailRecipientsBCC, setMailRecipientsCC, setMailRecipientsTo, setMailReplyTo, setMailTemplate
setMailTemplate
Name setMailTemplate
Beschreibung Ändert die E-Mail-Vorlage der zu versendenden E‑Mail.
Signaturen setMailtemplate(String templateName)
Parameter templateName ist der Name der E-Mail-Vorlage.

Beachten Sie insbesondere, dass Sie den Namen der E-Mail-Vorlage ohne Sprachkürzel und Dateityp angeben müssen. Die Anzeigesprache des Benutzers entscheidet darüber, welche der möglichen Vorlagendateien mit dem angegebenen Namen verwendet wird. Hat z. B. templateNameden Wert Mailtemplate und der Benutzer die Anzeigesprache en, dann wird die E-Mail-Vorlagendatei Mailtemplate_en.html verwendet. Ist in den Benutzereinstellungen des Empfängers eine Inhaltssprache hinterlegt, für die es keine E-Mail-Vorlage mit dem angegebenen Namen gibt, dann wird die E-Mail-Vorlagendatei für die Standard-Sprache des Systems verwendet.

Ergebnis Der Befehl setMailTemplateändert die E-Mail-Vorlage der zu versendenden E‑Mail. Damit können von der Standard-E-Mail-Vorlage abweichende E-Mail-Vorlagen verwendet werden. Der Befehl funktioniert nicht nur in Aktivitätsdefinitionen der Aktivitätstypen E-Mail-Nachricht und E-Mail-Knoten, sondern gilt in allen Aktivitätstypen für E-Mail-Benachrichtigungen durch die Workflow-Engine, z. B. bei einer Zeitüberschreitung oder einem Fehler im Prozess.

Ist templateNameeine leere Zeichenkette, dann wird eine leere E-Mail-Vorlage verwendet, die nur den in der Beschreibung definierten Text verwendet. Die Ver­wendung einer leeren E-Mail-Vorlage kann insbesondere bei Aktivitätsdefini­tionen der Aktivitätstypen E-Mail-Nachricht und E-Mail-Knoten sinnvoll sein

Ist templateNamekeine gültige E-Mail-Vorlage, wird der Standard-E-Mail-Vorlage verwendet.

Fehlerquellen Keine.
Beispiele setMailTemplate("Mailtemplate") verwendet die E-Mail-Vorlagendateien Mailtemplate_de.html, Mailtemplate_en.html, Mailtemplate_fr.html, u. s. w.

setMailTemplate("") verwendet keine leere E-Mail-Vorlage.

Kontext WF_REPOSITORY, WF_OLTP
Hinweise Im Kapitel Anpassung der E-Mail-Vorlagen in der Dokumentation Workflow-Engine ist die Anpassung von E-Mail-Vorlagen beschrieben.

Die Standard-E-Mail-Vorlage ist in der Konstanten DEFAULTdes Stringtables com.cisag.sys.workflow.template.MailTemplatesdefiniert. Die leere E-Mail-Vorlage ist in der Konstanten EMPTYdefiniert.

Siehe auch setMailRecipientsBCC, setMailRecipientsCC, setMailRecipientsTo, setMailReplyTo, setMailSender

Funktionen für Service-Knoten (Service node functions)

Die Funktionen für Service-Knoten bieten Möglichkeiten, Aktivität mit einem Verarbeitungsauftrag als Bearbeiter zu konfigurieren:

formatBatchJobResult
Name formatBatchJobResult
Beschreibung Erzeugt einen Text für die Ergebnisse einer Hintergrundverarbeitung.
Signaturen formatBatchJobResult(HashMap parameters)
Parameter parameters sind die Ereignisparameter des Ereignisses com.cisag.pgm.services.batch.BatchJobStateChanged.
Ergebnis Die Hintergrundverarbeitung informiert den Benutzer optional aktiv über den erfolgreichen oder fehlerhaften Abschluss eines Verarbeitungsauftrages. In diesem Fall erscheint im Webbrowser automatisch ein Benachrichtigungs-Dialog, von dem aus mit geeigneten Parametern direkt in die Anwendung Meldungsprotokolle oder Ausgabeaufträge gewechselt werden kann. Alternativ kann die Benachrichtigung über das Workflow-Ereignis com.cisag.pgm.services.batch.BatchJobStateChangederfolgen. Um eine Benachrichtigung mit dem gleichen bzw. einem ähnlichen Inhalt wie der Benachrichtigungs-Dialog mithilfe einer Aktivitätsdefinition zu versenden, stehen die beiden Funktionen formatBatchJobResultund formatBatchJobOutputResultzur Verfügung, welche die Ereignisparameter direkt in einen Text überführen.
Fehlerquellen
Beispiele formatBatchJobResult(parameters) formatiert aus den Parametern des Ereignisses com.cisag.pgm.services.batch.BatchJobStateChangeddas Ergebnis der Hintergrundverarbeitung.
Kontext WF_REPOSITORY
Hinweise
Siehe auch formatBatchJobOutputResult, isJobToBeScheduled
formatBatchJobOutputResult
Name formatBatchJobOutputResult
Beschreibung Erzeugt einen Text für die Ausgabe-Ergebnisse einer Hintergrundverarbeitung.
Signaturen formatBatchJobOutputResult(HashMap parameters)
Parameter parameters sind die Ereignisparameter des Ereignisses com.cisag.pgm.services.batch.BatchJobStateChanged.
Ergebnis Die Hintergrundverarbeitung informiert den Benutzer optional aktiv über den erfolgreichen oder fehlerhaften Abschluss eines Verarbeitungsauftrages. In diesem Fall erscheint im Webbrowser automatisch ein Benachrichtigungs-Dialog, von dem aus mit geeigneten Parametern direkt in die Anwendung Meldungsprotokolle oder Ausgabeaufträge gewechselt werden kann. Alternativ kann die Benachrichtigung über das Workflow-Ereignis com.cisag.pgm.services.batch.BatchJobStateChangederfolgen. Um eine Benachrichtigung mit dem gleichen bzw. einem ähnlichen Inhalt wie der Benachrichtigungs-Dialog mithilfe einer Aktivitätsdefinition zu versenden, stehen die beiden Funktionen formatBatchJobResultund formatBatchJobOutputResultzur Verfügung, welche die Parameter des Ereignisses direkt in einen Text überführen.
Fehlerquellen
Beispiele formatBatchJobOutputResult(parameters) formatiert aus den Parametern des Ereignisses com.cisag.pgm.services.batch.BatchJobStateChangeddas Ausgabe-Ergebnis der Hintergrundverarbeitung.
Kontext WF_REPOSITORY
Hinweise
Siehe auch formatBatchJobResult, isJobToBeScheduled
getJobResult
Name getJobResult
Beschreibung Gibt das Ergebnis der verknüpften Hintergrundanwendung als eine Hash-Tabelle zurück.
Signaturen HashMap getJobResults()
Parameter Keine.
Ergebnis Die Funktion getJobResultgibt die im Parameter resultParmeters(Schreibweise bitte beachten!) gespeicherten Ergebnisse der Hintergrundanwendung als eine Hash-Tabelle zurück. Diese Ergebnisse sind auf dem Karteireiter Ausführung im Eigenschaften-Dialog des Verarbeitungsauftrags einzusehen.

Ist der Bearbeiter der Aktivität kein Verarbeitungsauftrag, hat der Befehl keine Auswirkung.

Fehlerquellen Die Funktion getJobResultliefert nur dann ein zuverlässiges Ergebnis zurück, wenn sie in der Funktion closeverwendet wird und die Aktivität auf den Verarbeitungsauftrag wartet, entweder durch Verwendung den Befehl setJobWaitFinish(true)oder durch Aktivieren der Checkbox Auf Verarbeitungsauftrag warten in der Aktivitätsdefinition.
Beispiele getJobResult() gibt eine HashTabelle mit den Ergebnissen der Hintergrundanwendung zurück.
Kontext WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP
Hinweise
Siehe auch setJobWaitFinish
Beispiel: Generierte Inventurzählisten auswerten

Die Aktion CreateCountLists (45)der Hintergrundanwendung com.cisag.app.inventory.physical.log.PhysicalInventoryCountProcessing(Inventur-Aktionen veranlassen) gibt eine Liste mit den GUIDs der erzeugten Inventurzähllisten zurück:

{resultParmeters:CisParameterList:
{ResultNumberOfSuccessfulResults:1}
{ResultPhysicalInventoryCountListGuids:[[B@5570b91]}}

In einem Service-Knoten ruft die Funktion closedie Funktion getJobResultsauf, um die generierten Inventurzähllisten auszuwerten, und gibt die Identifikation der generierten Inventurzähllisten ins Protokoll aus.

function close(state as Number)
{
var rp as HashMap;
var clGenerated as Number;
var clGuids as Guid[];
var cl as CisObject(com.cisag.app.inventory.physical.obj.PhysicalInventoryCountList);

rp := cast(HashMap, getJobResult().resultParmeters);
clGenerated := cast(Number, rp.ResultNumberOfSuccessfulResults);
clGuids := cast(Guid[], rp.ResultPhysicalInventoryCountListGuids);

echo(format(clGenerated, "0") + " count list(s) generated:");
for (g : clGuids) {
cl := getByPrimaryKey(CisObject(com.cisag.app.inventory.physical.obj.PhysicalInventoryCountList), g);
echo(cl->PhysicalInventory->Type:code + "-" + cl->PhysicalInventory:number + " " + cl:number);
}
}

 

isJobToBeScheduled
Name isJobToBeScheduled
Beschreibung Fragt den Status einer Hintergrundverarbeitung ab.
Signaturen Boolean isJobToBeScheduled(Guid guid)

Boolean isJobToBeScheduled(CisObject job)

Boolean isJobToBeScheduled(CisObjectReference job)

Parameter guid ist die GUID eines Verarbeitungsauftrags.

job ist ein Verarbeitungsauftrag bzw. eine Referenz zu einem Verarbeitungsauftrag.

Ergebnis Die Funktion isJobToBeScheduledfragt den Status einer Hintergrundverarbeitung ab. Dabei wird das Attribut getActivityAbortModeausgewertet. Die Funktion gibt den Wert truezurück, wenn die Hintergrundverarbeitung eingeplant ist und somit ausgeführt werden kann.
Fehlerquellen Keine.
Beispiele isJobToBeScheduled(parameters.batchJobGuid) fragt bei dem programmierten Ereignis com.cisag.pgm.services.batch.BatchJobStateChanged(Status eines Verarbeitungsauftrags wurde geändert) ab, ob die Hintergrundverarbeitung eingeplant ist.
Kontext WF_ACTIVITY_REPOSITORY
Hinweise
Siehe auch formatBatchJobResult, formatBatchJobOutputResult
setJobName
Name setJobName
Beschreibung Legt den Namen für den Verarbeitungsauftrag fest.
Signaturen setJobName(String jobName)
Parameter jobName ist der Name des Verarbeitungsauftrags.
Ergebnis Der Befehl setJobNamegibt den Namen für den mit der Aktivität verknüpften Verarbeitungsauftrag an. Der Name wird in der Spalte Name der Anwendung Verarbeitungsaufträge angezeigt. Die Angabe kann somit eine Auswertung der Verarbeitungsaufträge vereinfachen. Wird kein Name festgelegt, wird in der Anwendung Verarbeitungsaufträge kein Name angezeigt.

Ist der Bearbeiter der Aktivität kein Verarbeitungsauftrag, hat der Befehl keine Auswirkung.

Fehlerquellen Der Befehl setJobNamemuss in der Funktion create, also vor der Hintergrundverarbeitung, verwendet werden.
Beispiele setJobName(definition:code + " " + activity:number) zeigt die Identifikation der Aktivitätsdefinition und der Aktivität als Name des Verarbeitungsauftrags an.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise Der Name eines Verarbeitungsauftrags ist auf 50 Zeichen begrenzt.
Siehe auch setJobQueue, setJobServer, setJobUser, setJobVoucherTemplateOutputOptions, setJobWaitFinish
setJobQueue
Name setJobQueue
Beschreibung Legt die Verarbeitungs-Warteschlange für die Hintergrundverarbeitung fest.
Signaturen setJobQueue(String name)
Parameter name ist der Name der Verarbeitungs-Warteschlange.
Ergebnis Der Befehl setJobQueuelegt fest, in welche Verarbeitungs-Warteschlange der für die Aktivität erzeugte Verarbeitungsauftrag eingereiht wird. Wird keine Verarbeitungs-Warteschlange festgelegt, dann wird die in der Customizing-Funktion Workflow-Management hinterlegte Verarbeitungs-Warteschlange verwendet.

Ist der Bearbeiter der Aktivität kein Verarbeitungsauftrag, hat der Befehl keine Auswirkung.

Fehlerquellen Der Befehl setJobQueuemuss in der Funktion create, also vor der Hintergrundverarbeitung, verwendet werden.

Der Benutzer, der die Hintergrundanwendung ausführt, muss berechtigt sein, die Verarbeitungs-Warteschlange zu verwenden.

Beispiele setJobQueue("JOBQUEUE01") legt fast, dass der Verarbeitungsauftrag in die Verarbeitungs-Warteschlange JOQUEUE01 eingereiht wird.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch setJobName, setJobServer, setJobUser, setJobVoucherTemplateOutputOptions, setJobWaitFinish
setJobServer
Name setJobServer
Beschreibung Legt den Application-Server für die Hintergrundverarbeitung fest.
Signaturen setJobServer(String serverName)
Parameter serverName ist der Name des Application-Servers.
Ergebnis Der Befehl setJobServerlegt fest, auf welchem Application-Server die mit der Aktivitätsdefinition verknüpfte Hintergrundanwendung ausgeführt wird. Wird keine Verarbeitungs-Warteschlange festgelegt, dann wird der Application-Server der aktuellen Laufzeitumgebung verwendet. In der Regel ist dies der Application-Server, auf dem das Ereignis ausgelöst wurde.

Ist der Bearbeiter der Aktivität kein Verarbeitungsauftrag, hat der Befehl keine Auswirkung.

Fehlerquellen Der Befehl setJobServer muss in der Funktion create, also vor der Hintergrundverarbeitung, verwendet werden.

Der Application-Server muss zur Verarbeitungs-Warteschlange passen.

Beispiele setJobServer("ADV620") legt fest, dass die Hintergrundanwendung auf dem Application-Server ADV620 ausgeführt wird.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch setJobName, setJobQueue, setJobUser, setJobVoucherTemplateOutputOptions, setJobWaitFinish
setJobUser
Name setJobUser
Beschreibung Legt den Benutzer für für die Hintergrundverarbeitung fest.
Signaturen setJobUser(String userName)

setJobUser(Guid userGuid)

Parameter userName ist der Name eines Benutzers.

userGuid ist die Guid eines Benutzers.

Ergebnis Der Befehl setJobUserlegt den Benutzer fest, der die Hintergrundanwendung ausführen soll. Wird kein Benutzer festgelegt, dann wird der in der Customizing-Funktion Workflow-Management hinterlegte Benutzer für Verarbeitungsaufträge verwendet.

Ist der Bearbeiter der Aktivität kein Verarbeitungsauftrag, hat der Befehl keine Auswirkung.

Fehlerquellen Der Befehl setJobUser muss in der Funktion create, also vor der Hintergrundverarbeitung, verwendet werden.

Der Benutzer, der die Hintergrundanwendung ausführt, muss berechtigt sein, sowohl die Hintergrundanwendung auszuführen, als auch die Verarbeitungs-Warteschlange zu verwenden.

Beispiele setJobUser("ADMINISTRATOR") führt die Hintergrundanwendung für den Administrator aus.

setJobUser(event.userGuid) führt die Hintergrundanwendung für denjenigen Benutzer aus, der das Ereignis ausgelöst hat, welches zum Erzeugen der Aktivität geführt hat.

Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch setJobName, setJobQueue, setJobServer, setJobVoucherTemplateOutputOptions, setJobWaitFinish
setJobVoucherTemplateOutputOptions
Name setJobVoucherTemplateOutputOptions
Beschreibung Verwendet die Standard-Belegdokumentvorlage bei einer Belegerzeugung.
Signaturen setJobVoucherTemplateOutputOptions (Boolean voucherTemplateOutputOptions)
Parameter voucherTemplateOutputOptions legt fest, ob die Standard-Belegdokumentvorlage für die Belegerzeugung verwendet wird.
Ergebnis Hat voucherTemplateOutputOptionsden Wert true, wird die Standard-Belegdokumentvorlage für die Belegerzeugung verwendet. Beim Wert falsewird sie nicht verwendet. Die Standard-Belegdokumentvorlage ist die gleiche Belegdokumentvorlage, die vorgeschlagen wird, wenn der Beleg interaktiv erzeugt wird.

Ist die mit der Aktivität verknüpfte Hintergrundanwendung keine Belegerzeugung, hat der Befehl keine Auswirkung.

Fehlerquellen Der Befehl setJobVoucherTemplateOutputOptionsmuss in der Funktion create, also vor der Hintergrundverarbeitung, verwendet werden.

Hat voucherTemplateOutputOptionsden Wert false, wird keine Belegdokumentvorlage verwendet, was in der Regel zu einem Abbruch der Belegerzeugung führt. Daher wird empfohlen, bei Belegerzeugungen immer den Befehl setJobVoucherTemplateOutputOptions(true)zu verwenden.

Beispiele setJobVoucherTemplateOutputOptions(true) legt fest, dass die Standard-Belegdokumentvorlage bei der Belegerzeugung verwendet wird.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise
Siehe auch
setJobWaitFinish
Name setJobWaitFinish
Beschreibung Wartet auf das Erledigen des verknüpften Verarbeitungsauftrags.
Signaturen setJobWaitFinish(Boolean waitFinish)
Parameter waitFinish gibt an, ob die Aktivität erst nach dem Erledigen des mit der Aktivität verknüpften Verarbeitungsauftrags (true) oder sofort (false) erledigt wird.
Ergebnis Hat waitden Wert true, dann wird die Aktivität erst nach dem Erledigen des mit der Aktivität verknüpften Verarbeitungsauftrags erledigt. Somit können die Ergebnisse der Hintergrundverarbeitung in der Funktion closeausgewertet werden. Wurde der Verarbeitungsauftrag erfolgreich beendet, dann hat der Parameter statein der Funktion closeden Wert 40 (DONE), andernfalls den Wert 50 (CANCELED).

Der Befehl setJobWaitFinishübersteuert den Wert der Checkbox Auf Verarbeitungsauftrag warten in der Aktivitätsdefinition.

Ist der Bearbeiter der Aktivität kein Verarbeitungsauftrag, hat der Befehl keine Auswirkung.

Fehlerquellen Der Befehl setJobWaitFinish muss in der Funktion create, also vor der Hintergrundverarbeitung, verwendet werden.
Beispiele setJobWaitFinish(true) bewirkt, dass die Aktivität erst nach dem Erledigen des verknüpften Verarbeitungsauftrags erledigt wird.

setJobWaitFinish(false) bewirkt, dass die Aktivität sofort nach dem Erzeugen des Verarbeitungsauftrags für die Hintergrundverarbeitung erledigt wird. In diesem Fall ist eine Auswertung der Ergebnisse nicht möglich.

Kontext WF_REPOSITORY, WF_OLTP
Hinweise Die Ergebnisse der Hintergrundanwendung können mithilfe der Funktion getJobResultsausgewertet werden.
Siehe auch getJobResults

Funktionen für Webservice-Knoten

Ein Webservice-Knoten bietet die Funktionalität für den Aufruf eines Webservices und für die Auswertung der Ergebnisse. Der Aufruf erfolgt durch die fest verknüpfte Hintergrundanwendung ServiceClient com.cisag.sys.workflow.webservices.log.ServiceClient.

Die Funktionen für Webservice-Knoten bieten Möglichkeiten, Aktivitäten des Typs Webservivce-Knoten zu konfigurieren:

getServiceResponse
Name getServiceResponse
Beschreibung Gibt bei einer Aktivität des Typs Webservice-Knoten den Ergebnisparameter responseBodyzurück.
Signaturen String getServiceResponse()
Parameter Keine.
Ergebnis Die Funktion gibt den Ergebnisparameter responseBodyder Hintergrundanwendung com.cisag.sys.workflow.webservices.log.ServiceClientals eine Zeichenkette zurück.

Die Funktion entspricht dem Ausdruck getJobResult()["resultParmeters"]["responseBody"].

Fehlerquellen Keine.
Beispiele getServiceResponse() gibt das Ergebnis einer Aktivität des Typs Webservice-Knoten zurück.
Kontext WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP
Hinweise Das Ergebnis kann nur in der Funktion closeausgewertet werden. Das Ergebnis steht nur dann zur Verfügung, wenn die Checkbox Auf Verarbeitungsauftrag warten in der Aktivitätsdefinition aktiviert ist bzw. der Befehl setJobWaitFinish(true)in der Funktion createin den Deklarationen ausgeführt wurde.
Siehe auch parseJson, parseXml

Folgendes Beispiel aus einer Aktivitätsdefinition vom Typ Webservice-Knoten fragt das Ergebnis promise aus dem Webservice ab. Beim Starten eines Workflow-Prozesses per Webservice besteht das promise aus der Guid der gestarteten Prozess-Instanz. Der Wert kann später verwendet werden, um den Status des Prozesses und das Ergebnis abzufragen.

function close(state as Number)
{
var response := parseJson(getServiceResponse());
if (size(response.errors) = 0) {
process.promise := response.promise;
}
}

 

parseJson
Name parseJson
Beschreibung Erzeugt eine Hash-Tabelle aus einer Zeichenkette in Java­Script Object Notation (JSON).
Signaturen HashMap parseJson(String body)
Parameter body ist eine Zeichenkette in JavaScript Object Notation (JSON).
Ergebnis Die Funktion parseJsongibt eine Hash-Tabelle mit einem Element für jeden Parameter in bodyzurück.
Fehlerquellen Ist die Zeichenkette nicht in JavaScript Object Notation (JSON) verfasst oder kann nicht geparst werden, wird der Wert null zurückgegeben.
Beispiele echo(parseJson("{'a':'hello', 'b':'world'}") gibt ‘{a=[S=hello], b=[S=world]}’ auf der Konsole aus.

echo(parseJson("{a:1, b:2, c:3}") gibt ‘{a=[N=1], b=[N=2], c=[N=3]}’ auf der Konsole aus.

cast(String, parseJson("{a:one, b:two, c:three}").c) gibt die Zeichenkette ‘three’ zurück.

Kontext ALL
Hinweise Sie können die Funktion parseJsonauch in einer Aktivitätsdefinition des Typs Funktionsaufruf verwenden, um komplexe Daten als eine Zeichenkette an die Aktivitätsdefinition zu übergeben.
Siehe auch getServiceResponse, parseXml

Folgendes Beispiel aus der Aktivitätsdefinition help.parseJson erzeugt eine Hash-Tabelle aus einer Zeichenkette in JavaScript Object Notation (JSON) und gibt die Hash-Tabelle auf der Konsole aus:

function create()
{
var p_text := parameters.TEXT;
var r_parsedText := parseJson(p_text);

echo(r_parsedText);
}

 

parseXml
Name parseXml
Beschreibung Erzeugt eine Hash-Tabelle aus einer Zeichenkette im XML-Format (Extensible Markup Language).
Signaturen HashMap parseXml(String body)

HashMap parseXml(String body, String expression)

Parameter body ist eine Zeichenkette im XML-Format (Extensible Markup Language), die geparst werden soll.

expression ist der Knoten in body, der geparst werden soll.

Ergebnis Die Funktion parseXmlgibt eine Hash-Tabelle mit jedem XML-Element als eine Liste und jedem XML-Tag als ein Listenelement zurück.
Fehlerquellen Ist die Zeichenkette nicht in Extensible Markup Language (XML) erfasst oder kann nicht geparst werden, wird der Wert null zurückgegeben.
Beispiele echo(parseXml("<rss version='2.0'><channel><title>RSS Title</title></channel></rss>")) gibt „{#document=[L=[[H={rss=[L=[[H={channel=[L=[[H={title=[S=RSS Title]}]]]}]]]}]]]}“ auf der Konsole aus.

parseXml("<rss version='2.0'><channel><title>RSS Title</title></channel></rss>", "rss/channel/title") gibt eine Hash-Tabelle mit dem Inhalt „{rss/channel/title=[S=RSS Title]}“ zurück.

Kontext ALL
Hinweise
Siehe auch getServiceResponse, parseJson

Folgendes Beispiel aus der Aktivitätsdefinition help.parseXml gibt das Ergebnis der Funktion parseXml auf der Konsole aus:

function create()
{
var p_text := parameters.TEXT;
var p_pathExpression := parameters.PATH_EXPRESSION;
var r_parsedText := new(HashMap);

if (p_pathExpression = "")
r_parsedText := parseXml(p_text);
else
var r_parsedText := parseXml(p_text, p_pathExpression);

echo(r_parsedText);
}

 

Im nächsten Beispiel wird eine Exportdatei im XML-Format für den Partner JOB geparst:

<?xml version="1.0" encoding="UTF-8"?>
<semiramis xmlns="com.cisag.app.general.obj.Partner" xsi:schemaLocation="com.cisag.app.general.obj.Partner Partner.xsd" created="2020-07-09T17:18:43.616Z" locale="en-US-XMLSchemaCompliant" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" nlsMode="SINGLE_LANGUAGE" dateTimeMode="COMPACT">
<Partner xmlns="com.cisag.app.general.obj.Partner">
<number>JOB</number>
<type>INTERNAL</type>
<person>
<givenName>Max</givenName>
<middleNames>Headroom</middleNames>
<surname>JOB</surname>
<Salutation>
<name>200</name>
</Salutation>
</person>
<human>true</human>
</Partner>
</semiramis>

Wenn die Variable partner die Exportdatei enthält, dann gibt der Ausdruck parseXML(partner, "/semiramis/Partner/person/surname"}die Hash-Tabelle „{/semiramis/Partner/person/surname=[S=JOB]}“ zurück.

Befehle für dynamische Indikatoren (Dynamic indicator commands)

Ein Indikator repräsentiert eine technische oder eine betriebswirtschaftliche Kennzahl, deren Wert überwacht werden soll. Die System-Engine stellt bereits eine Reihe von Indikatoren zur Verfügung. Weitere dynamische Indikatoren können vom Benutzer selbst erfasst werden. Dynamische Indikatoren können von einem der folgenden Typen sein:

  • Aggregationsindikator
  • Zählerindikator
  • Zahlindikator
  • Statusindikator

Für Zähler- und Aggregationsindikatoren wird keine Aktivitätsdefinition beim Indikator angegeben. Jede beliebige Aktivitätsdefinition kann jedoch ein Ereignis für einen Zähler- oder Aggregationsindikator auslösen, wenn ein bestimmtes z. B. betriebswirtschaftliches Ereignis eintritt. Normalerweise hat diese Aktivitätsdefinition nur die Aufgabe, das Ereignis für den Indikator auszulösen. Vom Benutzer wird jedoch keine weitere Reaktion benötigt.

Mithilfe der beiden Befehle für dynamische Indikatoren können Sie Aggregations- und Zählerindikatoren auslösen:

Weitere Informationen zu den Indikatoren finden Sie in den Dokumentationen Einführung: Indikatoren und Dynamische Indikatoren.

fireAggregatorIndicator
Name fireAggregatorIndicator
Beschreibung Löst einen Aggregationsindikator aus.
Signaturen fireAggregatorIndicator(String dynamicIndicatorName, Number value)
Parameter dynamicIndicatorName ist der Name des Aggregationsindikators.

value ist der Wert, der dem Aggregationsindikator hinzugefügt werden soll.

Ergebnis Der Befehl fireAggregatorIndicatorlöst den Aggregationsindikator dynamicIndicatorNamemit dem Wert valueaus.
Fehlerquellen Der Aggregationsindikator dynamicIndicatorNamemuss vorher als dynamischer Indikator erzeugt worden sein.
Beispiele fireAggregatorIndicator("invoicedAmount", 100) erhöht den Aggregationsindikator invoicedAmount um 100.

fireAggregatorIndicator("invoicedAmount", parameters.newObject:netAmountDomestic:amount1) in einer Aktivitätsdefinition mit einem Ereignis des Typs Business Entity für die Ausgangsrechnung (com.cisag.app.sales.obj.CustomerInvoice) erhöht den Aggregationsindikator invoicedAmount um den gesamt-Nettobetrag der Ausgangsrechnung. Da große Ausgangsrechnungen in Blöcken geschrieben werden, sollte die Aktivitätsdefinition folgende Übergangsbedingungen besitzen:

  • Subtyp Einfügen: parameters.newObject:number <> ""
  • Suptyp Ändern: parameters.newObject:number <> "" and parameters.oldObject:number = ""
Kontext WF_REPOSITORY, WF_OLTP
Hinweise Sie können den Zustand von Aggregations- und Zählerindikatoren in der Anwendung Dashboard visualisieren.
Siehe auch fireCounterIndicator
fireCounterIndicator
Name fireCounterIndicator
Beschreibung Erhöht den Wert eines Zählerindikators um die Zahl 1.
Signaturen fireCounterIndicator(String dynamicIndicatorName)
Parameter dynamicIndicatorName ist der Name des Zählerindikators.
Ergebnis Der Befehl fireAggregatorIndicatorerhöht den Zählerindikator dynamicIndicatorNameum die Zahl 1.
Fehlerquellen Der Zählerindikator dynamicIndicatorNamemuss vorher als dynamischer Indikator erzeugt worden sein.
Beispiele fireCounterIndicator("custeromerReturns") zählt den Aggregationsindikator customerReturns um den Wert 1 hoch, z. B. beim Erfassen einer Kundenrücksendung oder beim Buchen eines Wareneingangs aus einer Kundenrücksendung.
Kontext WF_REPOSITORY, WF_OLTP
Hinweise Sie können den Zustand von Aggregations- und Zählindikatoren in der Anwendung Dashboard visualisieren.
Siehe auch fireAggregatorIndicator
Funktionsaufrufe für Zahl- und Statusindikatoren

Dynamische Indikatoren können von einem der folgenden Typen sein:

  • Aggregationsindikator
  • Zählerindikator
  • Zahlindikator
  • Statusindikator

Aggregationsindikatoren und Zählerindikatoren werden von den beiden Skript-Funktionen fireAggregatorIndicatorund fireCounterIndicatorausgelöst. Eine Aktivität, die durch ein bestimmtes Ereignis erzeugt wird, erhöht den Wert des dynamischen Indikators, d. h. sie funktionieren nach dem Push-Prinzip.

Zahlindikatoren und Statusindikatoren funktionieren dagegen nach dem Pull-Prinzip. Bei Bedarf ruft der auf dem Dashboard angezeigte dynamische Indikator die mit dem Indikator verknüpfte Aktivitätsdefinition des Typs Funktionsaufruf auf. Die Aktivitätsdefinition berechnet den Wert bzw. den Status und gibt ihn mithilfe eines Ergebnisparameters zurück. Bei einem Zahlindikator muss der Ergebnisparameter den Namen VALUE besitzen und vom Datentyp Zahl sein.

Eine Aktivitätsdefinition für einen Zahlindikator muss einen Ergebnisparameter des Datentyps Zeichenkette mit den Namen STATUS besitzen. Eine Aktivitätsdefinition für einen Statusindikator muss zwei Ergebnisparameter des Datentyps Zeichenkette besitzen. Der erste Ergebnisparameter übergibt den Status und muss den Namen STATE haben. Der zweite Ergebnisparameter übergibt eine Beschreibung des Statuswerts und muss den Namen DESCRIPTION haben.

Beispiel: Anzahl der heute gebuchten Wareneingänge

Folgende Deklarationen ermitteln die Anzahl der heute gebuchten Wareneingänge und gibt das Ergebnis über die Ergebnisvariable VALUE an den dynamischen Indikator zurück.

const OrderStatus as valueSet(com.cisag.app.general.OrderStatus);

function create()
{
/* Get time particles for OQL query */
var fromDate := today();
var fromYear := format(year(fromDate), "0000");
var fromMonth := format(month(fromDate), "00");
var fromDay := format(day(fromDate), "00");

/* Use default time zone ID of the system */
var timeZoneId := timeZoneId(fromDate);

/* create OQL statement */
var OQL :=
"SELECT COUNT(*) FROM com.cisag.app.purchasing.obj.ReceiptOfGoods o " +
"WHERE o:date >= toTimestamp('" + timeZoneId + "'" +
", " + fromYear + ", " + fromMonth + ", " + fromDay +
", 00, 00, 00, 0000) AND o:status = 3";

/* query the database */
var receiptsOfGoodsPostedToday := cast(Number, getResultList(OQL, list(), 1)[0][0]);

/* return the result */
result.VALUE := receiptsOfGoodsPostedToday;
}

 

Funktionen für Cockpit-Anwendungen (Cockpit functions)

Mithilfe der Funktion createFilter können Selektionsfelder einer Cockpit-Anwendung vorbelegt werden.

createFilter
Name createFilter
Beschreibung Erzeugt einen Filter für die Vorbelegung eines Selektionsfelds einer Cockpit-Anwendung.
Signaturen String createFilter(String filterType, Unknown filterValue)

String createFilter(String filterType, Unknown[] filterValue)

Parameter filterType ist der Datentyp des Filters.

filterValue ist der Wert des Filters.

Ergebnis Die Funktion createFiltererzeugt einen Filter für die Vorbelegung eines Selektionsfelds einer Cockpit-Anwendung. Somit können auch solche Selektionsfelder durch die Aktivität vorbelegt werden, die einer benutzerspezifischen bzw. sprachabhängigen Formatierung bedürfen, wie z. B. heute oder today für eine Zeitdauer oder 2021-01-01 oder 01.01.2021 für ein Datum.
Fehlerquellen
Beispiele createFilter("bin[54]", loadPartner("10010")) belegt ein Selektionsfeld in einer Cockpit-Anwendung mit einer Verknüpfung zum Partner 10010.
Kontext WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP
Hinweise
Siehe auch fireAggregatorIndicator

Folgende Tabelle gibt einige der für Selektionsfelder in Cockpit-Anwendungen am häufigsten verwendeten Datentypen wider:

Filtertyp Beschreibung
Filter[str(x)] Zeichenkette der Länge x
Filter[str(x,ml)] Mehrsprachige Zeichenkette der Länge x
ValueSetFilter[vset] Auswahlfeld
Filter[guid] GUID, z. B. eine Benutzer-GUID
Filter[stmp] Zeitstempel mit Zeitzonen-GUID
Filter[objStmp] Zeitstempel mit Zeitzone über das business Object
Filter[bool] Boolean
Filter[int] Ganzzahl
Filter[long] Lange Ganzzahl
Filter[dec(7,4)] Dezimalzahl
Filter[byte] Byte-Wert
Filter[part(PointInTime)] Termin mit Genauigkeit und Kalender
Filter[part(Duration)] Dauer
Filter[part(Quantity)] Menge mit Einheiten-GUID
Filter[part(ForeignAmount)] Betrag mit Währungs-GUID
Filter[part(DomesticAmount)] Betrag in den drei Hauswährungen
Filter[part(OrganizationalUnit)] Organisationseinheit
Filter[part(Person)] Person
Filter[bin(54)] Business Object-Verknüpfung

Weitere Informationen zu den einzelnen Datentypen entnehmen sie der Dokumentation Datentypen.

Czy ten artykuł był pomocny?