Workflow : global
Les scripts de workflow fournissent une interface avec le moteur de workflow.
Utilisez ces méthodes pour manipuler les workflows.
Workflow : broadcastEvent(String contextId, String eventName)
Envoie l’événement (message) spécifié dans le contexte du workflow pour le transmettre aux activités d’exécution.
Cette méthode est généralement utilisée pour 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 aux fonctions spécifiques à l’événement du workflow.
Pour obtenir une liste des événements OOB disponibles, reportez-vous à la section É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 exécutés 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 sur les activités de ce contexte de workflow.
| Nom | Type | Description |
|---|---|---|
| contexte | GlideRecord | GlideRecord du contexte 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 current)
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 coordinateur d’approbation d’activités, le minuteur, le verrou et d’autres.
| Nom | Type | Description |
|---|---|---|
| Enregistrement d’événement | GlideRecord | Enregistrement d’événement répertorié dans la table Activités d’exécution du workflow [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 coordinateur d’approbation d’activités, le minuteur, le verrou et d’autres.
| Nom | Type | Description |
|---|---|---|
| ID d’enregistrement d’événement | Chaîne | La 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 de n’importe quelle table pour lequel l’appelant souhaite que les contextes de workflow s’exécutent. |
| Type | Description |
|---|---|
| GlideRecord | GlideRecord dans la table de contexte du workflow [wf_context] filtrée pour tous les contextes de workflow de l’enregistrement spécifié (quel que soit l’état, tel que exécution, annulation ou finition). |
//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 le temps estimé pour qu’un workflow se termine.
| 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 | Valeur d’affichage d’une GlideDuration (par exemple, 3 jours), ou vide si inconnu. |
var wkfw = new Workflow();
gs.print(wkfw.getEstimatedDeliveryTime('b99a866a4a3623120074c033e005418f'));
2 Jours
Workflow : getEstimatedDeliveryTimeFromWFVersion(GlideRecord wfVersion)
Obtenez le temps d’exécution écoulé estimé 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 l’estimation en cours d’exécution. |
| Type | Description |
|---|---|
| Chaîne | Valeur d’affichage d’une GlideDuration (par exemple, 3 jours), ou vide si inconnu. |
//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 de l’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é 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 n’importe quel enregistrement de n’importe quelle table pour laquelle l’appelant souhaite exécuter les contextes de workflow.
| 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 de l’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 du 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 la 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 | 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 un enregistrement spécifié est associé à des contextes de workflow.
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 un workflow est associé à l’enregistrement. sinon, renvoie la valeur Faux. |
var wkfw = new Workflow();
gs.print(wkfw.hasWorkflow('f2400ec10b0a3c1c00ca5bb5c6fae427'));
faux
Workflow : restartWorkflow(GlideRecord current, 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 les tâches actuelles.
Vous pouvez utiliser cette méthode pour effectuer des tâches telles que l’ajout d’une entreprise à 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 en cours d’exécution de ce workflow. Cela peut être fait par n’importe quel enregistrement sur n’importe quelle table. |
| maintainStateFlag (en anglais seulement) | Booléen | Marqueur indiquant si toutes les approbations et toutes les tâches doivent rester dans leur état actuel. Valeurs valides :
|
| Type | Description |
|---|---|
| nul |
Cet exemple montre le workflow en cours de redémarrage avec le fichier d’approbation passé 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 trouverez un exemple d’utilisation dans les script includes « SNC : exécuter les workflows parents » et « SNC : exécuter les workflows parents (approbation) ».
| Nom | Type | Description |
|---|---|---|
| record | GlideRecord | GlideRecord sur lequel exécuter les 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, String operation, Array vars)
Démarre un workflow spécifié.
Voir le script include WorkflowScheduler et la règle métier « Start Workflow » sur la table sc_req_item pour des exemples d’utilisation.
| Nom | Type | Description |
|---|---|---|
| workflowId | Chaîne | La sys_id du workflow à démarrer. Cette sys_id se réfère à 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 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ée 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 suspendre l’exécution du workflow pendant une certaine durée.
| Nom | Type | Description |
|---|---|---|
| ID du workflow | Chaîne | La sys_id du workflow à démarrer. Cette sys_id se réfère à la table wf_workflow. |
| MSecs rétroactifs | Numéro | Délai 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 d’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 de la classe Workflow .
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| nul |
var w = new Workflow();