Workflow – Global
Workflow-Skripts bieten eine Schnittstelle zur Workflow-Engine.
Verwenden Sie diese Methoden, um Workflows zu bearbeiten.
Workflow – broadcastEvent(String contextId, String eventName)
Sendet den angegebenen Event (die angegebene Nachricht) in den Workflow-Kontext, um ihn an die ausgeführten Aktivitäten weiterzuleiten.
Diese Methode wird normalerweise verwendet, um Aktivitäten zu aktivieren, die warten, bis eine Aktion ausgeführt wird, bevor Sie fortfahren. Weitere Informationen zur Verwendung von broadcastEventfinden Sie unter Workflow-Event-spezifische Funktionen.
Eine Liste der verfügbaren OOB-Events finden Sie unter Workflow-Events im Basissystem.
| Name | Typ | Beschreibung |
|---|---|---|
| contextId | Zeichenfolge | Die Kontext-ID. |
| eventName | Zeichenfolge | Der Name des Events. |
| Typ | Beschreibung |
|---|---|
| void |
//where current is a task record with a workflow context
var wf = new Workflow().getRunningFlows(current);
while(wf.next()) {
new Workflow().broadcastEvent(wf.sys_id, 'resume');
}
Workflow – cancel(GlideRecord record)
Bricht alle laufenden Workflows für diesen Datensatz ab, indem das Ereignis cancel an Aktivitäten in allen ausgeführten Workflows in diesem Datensatz übertragen wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Datensatz | GlideRecord | GlideRecord in einer beliebigen Tabelle. Alle in diesem Datensatz ausgeführten Workflows werden abgebrochen. |
| Typ | Beschreibung |
|---|---|
| void |
//get workflow helper
var workflow = new Workflow();
//cancel all the workflows, where current is a task record with a workflow context
workflow.cancel(current);
gs.addInfoMessage(gs.getMessage("Workflows for {0} have been cancelled", current.getDisplayValue()));
Workflow – cancelContext(GlideRecord context)
Bricht diesen ausgeführten Kontext ab, indem ein cancel -Ereignis an Aktivitäten in diesem Workflow-Kontext übertragen wird.
| Name | Typ | Beschreibung |
|---|---|---|
| context | GlideRecord | GlideRecord des abzubrechenden ausgeführten Kontexts. |
| Typ | Beschreibung |
|---|---|
| void |
// If a workflow has started for this item, cancel it, where current is a task record with a workflow context
if ((current.stage == 'Request Cancelled') && current.context
&& !current.context.nil()) {
var w = new Workflow();
var now_GR = new GlideRecord('wf_context');
if (now_GR.get(current.context))
w.cancelContext(now_GR);
}
Workflow – deleteWorkflow(GlideRecord current)
Löscht alle Workflows im Datensatz.
| Name | Typ | Beschreibung |
|---|---|---|
| current | GlideRecord | GlideRecord, für den der Aufrufer alle Workflows löschen möchte. Dies kann ein beliebiger Datensatz in einer beliebigen Tabelle sein. |
| Typ | Beschreibung |
|---|---|
| void |
//where current is a task record with a workflow context
var wkfw = new Workflow();
wkfw.deleteWorkflow(current);
Workflow – fireEvent(GlideRecord eventRecord, String eventName, Object eventParms)
Löst das benannte Event eines ausgeführten Workflows für den Eingabedatensatz aus.
Wird in Aktivitätengenehmigungskoordinator, Timer, Sperreundeinigenanderen verwendet.
| Name | Typ | Beschreibung |
|---|---|---|
| eventRecord | GlideRecord | Event-Datensatz, der in der Tabelle „Workflow-Ausführungsaktivitäten“ [wf_executing] aufgeführt ist. |
| eventName | Zeichenfolge | Der Name des Events, der an den ausgeführten Workflow gesendet werden soll. |
| eventParameter | Objekt | Optional. Parameter im JSON-Format, die vom Event verwendet werden. |
| Typ | Beschreibung |
|---|---|
| void |
// where current is a task record with a workflow context
var w = new Workflow();
w.fireEvent(current, 'execute');
Workflow – fireEventById(String eventRecordId, String eventName)
Löst den benannten Event in dem durch die Datensatz-ID angegebenen Datensatz aus.
Wird in Aktivitätengenehmigungskoordinator, Timer, Sperreundeinigenanderen verwendet.
| Name | Typ | Beschreibung |
|---|---|---|
| eventRecordId | Zeichenfolge | Die sys_id des Glide-Datensatzes. |
| eventName | Zeichenfolge | Der Name des Events, der an den ausgeführten Workflow gesendet werden soll. |
| Typ | Beschreibung |
|---|---|
| void |
var wkfw = new Workflow();
wkfw.fireEventById('f2400ec10b0a3c1c00ca5bb5c6fae427','Timer');
Workflow – getContexts(GlideRecord record)
Gibt alle Workflow-Kontexte für einen angegebenen Datensatz zurück.
| Name | Typ | Beschreibung |
|---|---|---|
| Datensatz | GlideRecord | GlideRecord, für den der Aufrufer eine Liste aller Workflow-Kontexte möchte. Dies kann ein beliebiger Datensatz in einer beliebigen Tabelle sein, für die der Aufrufer die laufenden Workflow-Kontexte haben möchte. |
| Typ | Beschreibung |
|---|---|
| GlideRecord | GlideRecord in der Tabelle „Workflow-Kontext“ [wf_context], gefiltert nach allen Workflow-Kontexten für den angegebenen Datensatz (in jedem Status, z. B. ausgeführt, abgebrochen, abgeschlossen). |
//where current is a task record with a workflow context
var wkfw = new Workflow();
var context = wkfw.getContexts(current);
while (context.next())
gs.print(context.started);
Workflow – getEstimatedDeliveryTime(String workflowId)
Ruft die geschätzte Dauer für den Abschluss eines Workflows ab.
| Name | Typ | Beschreibung |
|---|---|---|
| workflowId | Zeichenfolge | Sys_id des Workflows (Tabelle „wf_workflow“), um die geschätzte Ausführungszeit abzurufen. |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Zeigt den Wert aus einer GlideDuration an (z. B. 3 Tage) oder ist leer, falls dieser unbekannt ist. |
var wkfw = new Workflow();
gs.print(wkfw.getEstimatedDeliveryTime('b99a866a4a3623120074c033e005418f'));
Zwei Tage
Workflow – getEstimatedDeliveryTimeFromWFVersion(GlideRecord wfVersion)
Rufen Sie die geschätzte verstrichene Ausführungszeit für die Workflow-Version ab.
| Name | Typ | Beschreibung |
|---|---|---|
| wfVersion | GlideRecord | GlideRecord in der Tabelle „wf_workflow_version“ einer bestimmten Workflow-Version, für die der Aufrufer die geschätzte Dauer der Ausführung haben möchte. |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Zeigt den Wert aus einer GlideDuration (z. B. 3 Tage) oder ist leer, falls dieser unbekannt ist. |
//where current is a task record with a workflow context
var wkfw = new Workflow();
var context = wkfw.getContexts(current);
gs.print(wkfw.getEstimatedDeliveryTimeFromWFVersion(context.wf_version));
Workflow – getReturnValue(String workflowID, Number amount, Boolean result)
Ruft den entsprechenden Workflow-Rückgabewert für die Eingabe-Workflow-ID ab. Dies ist entweder der vom aktuellen Benutzer ausgecheckte Workflow oder der veröffentlichte Workflow mit dem neuesten Datum.
Dies ist entweder der vom aktuellen Benutzer ausgecheckte Workflow oder der veröffentlichte Workflow mit dem neuesten Datum. Diese Methode ist ab der Fuji-Version verfügbar.
| Name | Typ | Beschreibung |
|---|---|---|
| workflowID | Zeichenfolge | Die sys_id des Workflows (Tabelle „wf_workflow“) |
| amount | Zahl | amount |
| result | Boolean | True, wenn wahr |
| Typ | Beschreibung |
|---|---|
| ??? | Der Rückgabewert des Workflows, wie von der Aktivität „Wert zurückgeben“ angegeben. Workflows ohne Aktivität „Wert zurückgeben“ geben einen Nullwert zurück. |
var wkfw = new Workflow();
wkfw.getReturnValue('context');
*** Script: b99a866a4a3623120074c033e005418f
Workflow – getRunningFlows(GlideRecord record)
Ruft alle aktuell ausgeführten Workflow-Kontexte für den Eingabedatensatz ab.
Der Eingabedatensatz ist irgendein Datensatz in einer beliebigen Tabelle, für den der Aufrufer die ausgeführten Workflow-Kontexte haben möchte.
| Name | Typ | Beschreibung |
|---|---|---|
| Datensatz | GlideRecord | GlideRecord des Datensatzes, für den der Aufrufer eine Liste aller ausgeführten Workflows möchte. |
| Typ | Beschreibung |
|---|---|
| GlideRecord | GlideRecord in Tabelle „wf_context“, der nach allen ausgeführten Workflow-Kontexten gefiltert wurde. |
//where current is a task record with a workflow context
var wf = new Workflow().getRunningFlows(current);
while(wf.next()) {
new Workflow().broadcastEvent(wf.sys_id, 'pause');
}
Workflow – getVersion(String workflowID)
Ruft die entsprechende Workflow-Version für die Eingabe-Workflow-ID ab. Dies ist entweder der vom aktuellen Benutzer ausgecheckte Workflow oder der veröffentlichte Workflow mit dem neuesten Datum.
Dies ist entweder der vom aktuellen Benutzer ausgecheckte Workflow oder der veröffentlichte Workflow mit dem neuesten Datum.
| Name | Typ | Beschreibung |
|---|---|---|
| workflowID | Zeichenfolge | Die sys_id des Workflows (Tabelle „wf_workflow“) |
| Typ | Beschreibung |
|---|---|
| Keine |
var wkfw = new Workflow();
wkfw.getVersion('b99a866a4a3623120074c033e005418f');
Workflow – getVersionFromName(String workflowName)
Gibt die entsprechende Workflow-Version für den Eingabe-Workflow-Namen zurück.
Weitere Informationen erhalten Sie unter getVersion().
| Name | Typ | Beschreibung |
|---|---|---|
| workflowName | Zeichenfolge | Name des Workflows (Tabelle „wf_workflow“) |
| Typ | Beschreibung |
|---|---|
| void |
var wkfw = new Workflow();
wkfw.getVersionFromName('Emergency Change');
Workflow – getWorkflowFromName(String workflowName)
Gibt die sys_id des Workflows zurück, der dem angegebenen Workflow-Namen zugeordnet ist.
| Name | Typ | Beschreibung |
|---|---|---|
| workflowName | Zeichenfolge | Name des Workflows. |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Die sys_id des Workflows, der dem übergebenen Namen zugeordnet ist. |
var wflw = new Workflow();
gs.print(wflw.getWorkflowFromName('Emergency Change'));
Workflow – hasWorkflow(GlideRecord record)
Bestimmt, ob einem angegebenen Datensatz Workflow-Kontexte zugeordnet sind.
Dies umfasst ausgeführte und abgeschlossene Workflow-Kontexte.
| Name | Typ | Beschreibung |
|---|---|---|
| Datensatz | GlideRecord | GlideRecord auf dem Prüfstand. Dieser GlideRecord kann aus einer beliebigen Tabelle stammen. |
| Typ | Beschreibung |
|---|---|
| Boolean | „True“, wenn dem Datensatz ein Workflow zugeordnet ist. Andernfalls wird „false“ zurückgegeben. |
var wkfw = new Workflow();
gs.print(wkfw.hasWorkflow('f2400ec10b0a3c1c00ca5bb5c6fae427'));
false
Workflow – restartWorkflow(GlideRecord current, Boolean maintainStateFlag)
Berechnet die Genehmigungen und Aufgaben für einen Workflow neu, indem neue Genehmigungen und Aufgaben hinzugefügt werden, ohne die aktuellen Genehmigungen und Aufgaben zurückzusetzen.
Sie können diese Methode verwenden, um Aufgaben wie das Hinzufügen eines Unternehmens zu einer Change-Anforderung auszuführen, ohne die aktuellen Genehmigungen für Unternehmen zurückzusetzen, die sich bereits im Workflow befinden.
| Name | Typ | Beschreibung |
|---|---|---|
| current | GlideRecord | GlideRecord des Datensatzes, den dieser Workflow ausführt. Dies kann jeder Datensatz in einer beliebigen Tabelle sein. |
| maintainStateFlag | Boolean | Kennzeichnung, die angibt, ob alle Genehmigungen und Aufgaben in ihrem aktuellen Status beibehalten werden sollen. Gültige Werte:
|
| Typ | Beschreibung |
|---|---|
| void |
Dieses Beispiel zeigt, wie der Workflow neu gestartet wird und sich die Genehmigungsdatei von „Abgelehnt“ in „Angefordert“ ändert.
(function(){
var comment = 'Workflow Restarted - the Approval Field changing from Rejected to Requested';
var gLock = new GlideRecordLock(current);
gLock.setSpinWait(50);
if (gLock.get()) {
new Workflow().restartWorkflow(current, false);
current.setDisplayValue('approval_history', comment);
}
})
Workflow – runFlows(GlideRecord record, String operation)
Führt alle Workflows für einen bestimmten Datensatz in einer bestimmten Tabelle und deren untergeordneten Tabellen aus.
Beispiele für die Verwendung finden Sie in den Skripteinbindungen „SNC – Übergeordnete Workflows ausführen“ und „SNC – Übergeordnete Workflows ausführen (Genehmigung)“.
| Name | Typ | Beschreibung |
|---|---|---|
| Datensatz | GlideRecord | GlideRecord, für den Workflows ausgeführt werden sollen. |
| operation | Zeichenfolge | Datenbankvorgang. Gültige Werte:
|
| Typ | Beschreibung |
|---|---|
| void |
var now_GR = new GlideRecord('wf_test');
now_GR.addQuery('parent', current.parent);
now_GR.addQuery('sys_id','!=',current.sys_id);
now_GR.query();
while(now_GR.next()) {
new Workflow().runFlows(now_GR, 'update');
}
Workflow – startFlow(String workflowId, GlideRecord current, String operation, Array vars)
Startet einen angegebenen Workflow.
Beispiele für die Verwendung finden Sie unter der Skripteinbindung „WorkflowScheduler“ und der Business Rule „Workflow starten“ in Tabelle „sc_req_item“.
| Name | Typ | Beschreibung |
|---|---|---|
| workflowId | Zeichenfolge | Die sys_id des zu startenden Workflows. Diese sys_id verweist auf die Tabelle „wf_workflow“. |
| current | GlideRecord | Der Datensatz, der in diesem Workflow als aktuell verwendet werden soll. Dies stammt normalerweise aus dem Feld Table der Workflow-Eigenschaften für diesen Workflow. |
| operation | Zeichenfolge | Der Vorgang, der für currentausgeführt werden soll. Mögliche Werte: einfügen, aktualisieren, löschen. |
| vars | Array | Sammlung von Variablen, die dem Workflow hinzugefügt werden sollen |
////where current is a task record with a workflow context
var w = new Workflow();
var context = w.startFlow(id, current, current.operation(), getVars());
Workflow – startFlowFromContextInsert(GlideRecord context, String operation)
Hilfsmethode für Business Rule Auto start on context.
| Name | Typ | Beschreibung |
|---|---|---|
| context | GlideRecord | GlideRecord in Tabelle „wf_context“ eines neuen Datensatzes (der „aktuelle“ Datensatz in der Business Rule). |
| operation | Zeichenfolge | Ausgeführter Datenbankvorgang. Eines der folgenden: insert, update, delete. |
| Typ | Beschreibung |
|---|---|
| void |
//where current is a task record with a workflow context
current.name = current.workflow_version.name;
current.started_by.setValue(gs.userID());
if (gs.nil(current.id)) {
var now_GR = new GlideRecord('wf_workflow_execution');
now_GR.name = current.name;
now_GR.insert();
current.table = 'wf_workflow_execution';
current.id = now_GR.sys_id;
}
var wf = new Workflow();
wf.startFlowFromContextInsert(current, current.operation())
Workflow – startFlowRetroactive(String workflowId, Number retroactiveMSecs, GlideRecord current, String operation, Array, ???)
Verwendet von Business Rule Start Workflow in Tabelle task_sla. Dadurch wird ein Workflow gestartet, und die zusätzlichen Argumente für diese Methode werden von der Aktivität „Timer“ verwendet, um die Ausführung des Workflows für einige Zeit anzuhalten.
| Name | Typ | Beschreibung |
|---|---|---|
| workflowID | Zeichenfolge | Die sys_id des zu startenden Workflows. Diese sys_id verweist auf die Tabelle „wf_workflow“. |
| retroactiveMSecs | Zahl | Verzögerung in Millisekunden, die von der Aktivität Timer verwendet wird. |
| current | GlideRecord | GlideRecord des Datensatzes, der in diesem Workflow als aktuell verwendet werden soll. Dies stammt normalerweise aus dem Feld Table der Workflow-Eigenschaften für diesen Workflow |
| operation | Zeichenfolge | Ausgeführter Datenbankvorgang. Eine der folgenden Optionen: insert, update, delete. |
| vars | Array | Sammlung von Variablen, die dem Workflow hinzugefügt werden sollen. |
| withSchedule | ??? | Zeitplan, der von der Aktivität Timer verwendet wird |
| Typ | Beschreibung |
|---|---|
| GlideRecord | Ein GlideRecord in der Tabelle „wf_context“ für den eingefügten Datensatz für diesen neu erstellten Workflow-Kontext. |
// is this a retroactive start?
////where current is a task record with a workflow context
var msecs = new GlideDateTime().getNumericValue() - current.start_time.getGlideObject().getNumericValue();
// treat this as a retroactive workflow start if the SLA started more than 5 seconds ago
var w = new Workflow();
if (msecs <= 5000)
w.startFlow(id, current, current.operation());
else
w.startFlowRetroactive(id, msecs, current, current.operation());
// update the record in case the workflow changed some values
current.update();
Workflow – Workflow()
Konstruktor für die Klasse Workflow.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| void |
var w = new Workflow();