Workflow : global
L’include de script de workflow fournit des méthodes qui s’interfacent avec le moteur de workflow.
Utilisez ces méthodes pour manipuler les workflows.
Workflow : broadcastEvent(String, contextId, String, eventName)
Envoie l’événement spécifié (message) dans le contexte du workflow pour le transmettre aux activités d’exécution.
L’utilisation typique de cette méthode consiste à activer les activités qui attendent qu’une action se produise avant de continuer. Pour plus d’informations sur l’utilisation de broadcastEvent, reportez-vous à la section Fonctions spécifiques à l’événement du workflow.
Pour obtenir la liste des événements OOB disponibles, consultez Événements de workflow dans le système de base.
| Nom | Type | Description |
|---|---|---|
| contextId | Chaîne | ID de contexte. |
| eventName | Chaîne | Le nom de l'événement. |
| Type | Description |
|---|---|
| nul |
//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 : annuler (enregistrement GlideRecord)
Annule tous les workflows en cours d’exécution sur cet enregistrement en diffusant l’événement cancel aux activités de tous les workflows en cours d’exécution sur cet enregistrement.
| Nom | Type | Description |
|---|---|---|
| record | GlideRecord | GlideRecord sur n’importe quelle table. Tous les workflows en cours d’exécution sur cet enregistrement seront annulés. |
| Type | Description |
|---|---|
| nul |
//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(contexte GlideRecord)
Annule ce contexte d’exécution en diffusant un cancel événement aux activités dans ce contexte de workflow.
| Nom | Type | Description |
|---|---|---|
| contexte | GlideRecord | GlideRecord du contexte en cours d’exécution à annuler. |
| Type | Description |
|---|---|
| nul |
// 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 actuel)
Supprime tous les workflows de l’enregistrement.
| Nom | Type | Description |
|---|---|---|
| current | GlideRecord | GlideRecord pour lequel l’appelant veut supprimer tous les workflows. Il peut s’agir de n’importe quel enregistrement sur n’importe quelle table. |
| Type | Description |
|---|---|
| nul |
//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)
Déclenche l’événement nommé d’un workflow en cours d’exécution sur l’enregistrement d’entrée.
Utilisé dans le coordonnateur d’approbation des activités, le minuteur, le verrou et quelques autres.
| Nom | Type | Description |
|---|---|---|
| enregistrement d’événement | GlideRecord | Enregistrement d’événement répertorié dans la table Workflow d’exécution des activités [wf_executing]. |
| eventName | Chaîne | Nom de l’événement à envoyer au workflow en cours d’exécution. |
| eventParms | Objet | Facultatif. Paramètres au format JSON utilisés par l’événement. |
| Type | Description |
|---|---|
| nul |
// where current is a task record with a workflow context
var w = new Workflow();
w.fireEvent(current, 'execute');
Workflow : fireEventById(String eventRecordId, String eventName)
Déclenche l’événement nommé sur l’enregistrement spécifié par l’ID d’enregistrement.
Utilisé dans le coordonnateur d’approbation des activités, le minuteur, le verrou et quelques autres.
| Nom | Type | Description |
|---|---|---|
| eventRecordId | Chaîne | Le sys_id de l’enregistrement Glide. |
| eventName | Chaîne | Nom de l’événement à envoyer au workflow en cours d’exécution. |
| Type | Description |
|---|---|
| nul |
var wkfw = new Workflow();
wkfw.fireEventById('f2400ec10b0a3c1c00ca5bb5c6fae427','Timer');
Workflow : getContexts (enregistrement GlideRecord)
Renvoie tous les contextes de workflow pour un enregistrement spécifié.
| Nom | Type | Description |
|---|---|---|
| record | GlideRecord | GlideRecord pour lequel l’appelant souhaite une liste de tous les contextes de workflow. Il peut s’agir de n’importe quel enregistrement sur n’importe quelle table pour lequel l’appelant souhaite que les contextes de workflow s’exécutent. |
| Type | Description |
|---|---|
| GlideRecord | GlideRecord dans la table Contexte du workflow [wf_context] filtré pour tous les contextes de workflow pour l’enregistrement spécifié (dans n’importe quel état, tel que En cours d’exécution, Annulé, Terminé). |
//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)
Obtient la durée estimée de l’achèvement d’un workflow.
| Nom | Type | Description |
|---|---|---|
| workflowId | Chaîne | Sys_id du workflow (table wf_workflow) pour obtenir la durée d’exécution estimée. |
| Type | Description |
|---|---|
| Chaîne | Afficher la valeur à partir d’une GlideDuration (par exemple, 3 jours) ou vide si inconnue. |
var wkfw = new Workflow();
gs.print(wkfw.getEstimatedDeliveryTime('b99a866a4a3623120074c033e005418f'));
2 Jours
Workflow : getEstimatedDeliveryTimeFromWFVersion(GlideRecord wfVersion)
Obtenir la durée d’exécution écoulée estimée pour la version du workflow.
| Nom | Type | Description |
|---|---|---|
| wfVersion | GlideRecord | GlideRecord sur la table wf_workflow_version d’une version de workflow spécifique pour laquelle l’appelant souhaite une estimation de la durée d’exécution. |
| Type | Description |
|---|---|
| Chaîne | Afficher la valeur à partir d’une GlideDuration (par exemple, 3 jours) ou vide si inconnue. |
//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, Résultat booléen)
Obtient la valeur de retour de workflow appropriée pour l’ID de workflow d’entrée. Il s’agit soit du workflow extrait par l’utilisateur actuel, soit du workflow publié avec la date la plus récente.
Il s’agit soit du workflow extrait par l’utilisateur actuel, soit du workflow publié avec la date la plus récente. Cette méthode est disponible à partir de la version Fuji.
| Nom | Type | Description |
|---|---|---|
| ID du workflow | Chaîne | La sys_id du workflow (table wf_workflow) |
| calculer le montant de | Numéro | calculer le montant de |
| résultat | Booléen | Vrai, si vrai |
| Type | Description |
|---|---|
| ??? | Valeur de retour du workflow telle que spécifiée par l’activité Valeur de retour. Les workflows sans activité de valeur de retour renvoient une valeur nulle. |
var wkfw = new Workflow();
wkfw.getReturnValue('context');
*** Script: b99a866a4a3623120074c033e005418f
Workflow : getRunningFlows(enregistrement GlideRecord)
Obtient tous les contextes de workflow en cours d’exécution pour l’enregistrement d’entrée.
L’enregistrement d’entrée est tout enregistrement sur n’importe quelle table pour lequel l’appelant souhaite que les contextes de workflow s’exécutent.
| Nom | Type | Description |
|---|---|---|
| record | GlideRecord | GlideRecord de l’enregistrement pour lequel l’appelant souhaite une liste de tous les workflows en cours d’exécution. |
| Type | Description |
|---|---|
| GlideRecord | GlideRecord sur la table wf_context et filtré pour tous les contextes de workflow en cours d’exécution. |
//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)
Obtient la version de workflow appropriée pour l’ID de workflow d’entrée. Il s’agit soit du workflow extrait par l’utilisateur actuel, soit du workflow publié avec la date la plus récente.
Il s’agit soit du workflow extrait par l’utilisateur actuel, soit du workflow publié avec la date la plus récente.
| Nom | Type | Description |
|---|---|---|
| ID du workflow | Chaîne | La sys_id du workflow (table wf_workflow) |
| Type | Description |
|---|---|
| aucun |
var wkfw = new Workflow();
wkfw.getVersion('b99a866a4a3623120074c033e005418f');
Workflow : getVersionFromName(String workflowName)
Renvoie la version de workflow appropriée pour le nom de workflow d’entrée.
Voir getVersion() pour plus d’informations.
| Nom | Type | Description |
|---|---|---|
| Nom du workflow | Chaîne | Nom du workflow (table wf_workflow) |
| Type | Description |
|---|---|
| nul |
var wkfw = new Workflow();
wkfw.getVersionFromName('Emergency Change');
Workflow : getWorkflowFromName(String workflowName)
Renvoie l’sys_id du workflow associé au nom de workflow spécifié.
| Nom | Type | Description |
|---|---|---|
| Nom du workflow | Chaîne | Nom du workflow. |
| Type | Description |
|---|---|
| Chaîne | L’sys_id du workflow associé au nom transmis. |
var wflw = new Workflow();
gs.print(wflw.getWorkflowFromName('Emergency Change'));
Workflow : hasWorkflow(enregistrement GlideRecord)
Détermine si des contextes de workflow sont associés à un enregistrement donné.
Cela inclut les contextes de workflow en cours d’exécution et terminés.
| Nom | Type | Description |
|---|---|---|
| record | GlideRecord | GlideRecord sous surveillance. Ce GlideRecord peut provenir de n’importe quelle table. |
| Type | Description |
|---|---|
| Booléen | Vrai, si l’enregistrement a un workflow associé ; sinon, renvoie la valeur Faux. |
var wkfw = new Workflow();
gs.print(wkfw.hasWorkflow('f2400ec10b0a3c1c00ca5bb5c6fae427'));
Faux
Workflow : restartWorkflow(GlideRecord actuel, booléen maintainStateFlag)
Recalcule les approbations et les tâches d’un workflow en ajoutant de nouvelles approbations et tâches, sans réinitialiser les approbations et tâches actuelles.
Vous pouvez utiliser cette méthode pour effectuer des tâches telles que l’ajout d’une société à une demande de changement, sans réinitialiser les approbations actuelles des sociétés déjà présentes dans le workflow.
| Nom | Type | Description |
|---|---|---|
| current | GlideRecord | GlideRecord de l’enregistrement que ce workflow exécute. Cela peut être fait par n’importe quel enregistrement dans n’importe quelle table. |
| maintainStateFlag | Booléen | Marqueur indiquant s’il faut maintenir toutes les approbations et tâches dans leur état actuel. Valeurs valides :
|
| Type | Description |
|---|---|
| nul |
Cet exemple montre le workflow en cours de redémarrage, le fichier d’approbation passant de Rejeté à Demandé.
(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 (enregistrement GlideRecord, opération de chaîne)
Exécute tous les workflows pour un enregistrement donné dans une table donnée et ses tables descendantes.
Vous pouvez voir un exemple d’utilisation dans les includes de script « SNC - Exécuter les workflows parents » et « SNC : Exécuter les workflows parents (approbation) ».
| Nom | Type | Description |
|---|---|---|
| record | GlideRecord | GlideRecord par rapport auquel exécuter des workflows. |
| operation | Chaîne | Opération de base de données. Valeurs valides :
|
| Type | Description |
|---|---|
| nul |
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, Opération de chaîne, Array vars)
Démarre un workflow spécifié.
Consultez l’include de script WorkflowScheduler et la règle métier « Démarrer le workflow » sur la table sc_req_item pour des exemples d’utilisation.
| Nom | Type | Description |
|---|---|---|
| workflowId | Chaîne | L’sys_id du workflow à démarrer. Cette sys_id fait référence à la table wf_workflow. |
| current | GlideRecord | Enregistrement à utiliser comme actuel dans ce workflow. Cela provient normalement du Table champ des propriétés du workflow pour ce workflow. |
| operation | Chaîne | Opération à effectuer sur current. Valeurs possibles : insérer, mettre à jour, supprimer. |
| variables | Tableau | Collection de variables à ajouter au workflow |
////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 (contexte GlideRecord, opération de chaîne)
Méthode d’aide pour la règle Auto start on contextmétier .
| Nom | Type | Description |
|---|---|---|
| contexte | GlideRecord | GlideRecord sur la table wf_context d’un nouvel enregistrement (l’enregistrement « actuel » dans la règle métier). |
| operation | Chaîne | Opération de base de données en cours d’exécution. L’un des insert, update, delete. |
| Type | Description |
|---|---|
| nul |
//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, ???)
Utilisé par la règle Start Workflow métier sur la table task_sla. Cela démarre un workflow et les arguments supplémentaires de cette méthode sont utilisés par l’activité « Timer » pour mettre en pause l’exécution du workflow pendant un certain temps.
| Nom | Type | Description |
|---|---|---|
| ID du workflow | Chaîne | L’sys_id du workflow à démarrer. Cette sys_id fait référence à la table wf_workflow. |
| rétroactiveMSec | Numéro | Retard, en millisecondes, utilisé par le minuteur d’activité. |
| current | GlideRecord | GlideRecord de l’enregistrement à utiliser comme actuel dans ce workflow. Cela provient normalement du Table champ des propriétés du workflow pour ce workflow |
| operation | Chaîne | Opération de base de données en cours d’exécution. L’un des insert, update, delete. |
| variables | Tableau | Collection de variables à ajouter au workflow. |
| withSchedule | ??? | Calendrier utilisé par le minuteur de l’activité |
| Type | Description |
|---|---|
| GlideRecord | Un GlideRecord sur la table wf_context sur l’enregistrement inséré pour ce contexte de workflow nouvellement créé. |
// 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()
Constructeur pour la classe de workflow .
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| nul |
var w = new Workflow();