Workflow : global
L’include de script Workflow fournit des méthodes qui interagissent 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 qu’il soit transmis aux activités d’exécution.
L’utilisation typique de cette méthode est d’activer les activités qui attendent qu’une action se produise avant de poursuivre. Pour plus d’informations sur l’utilisation de broadcastEvent, reportez-vous à la section Fonctions spécifiques aux événements du workflow.
Pour obtenir la liste des événements prêts à l’emploi 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 |
|---|---|---|
| enregistrement | 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 aux activités de 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 les activités Coordonnateur d’approbation, Minuteur, Verrou et quelques autres.
| Nom | Type | Description |
|---|---|---|
| eventRecord | 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 les activités Coordonnateur d’approbation, Minuteur, Verrou et quelques autres.
| Nom | Type | Description |
|---|---|---|
| eventRecordId (ID de l’enregistrement) | 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 |
|---|---|---|
| enregistrement | 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 exécuter les contextes de workflow. |
| Type | Description |
|---|---|
| GlideRecord | GlideRecord dans la table Contexte du workflow [wf_context] filtré pour tous les contextes de workflow pour l’enregistrement spécifié (quel que soit l’é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 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 à partir d’une durée GlideDuration (par exemple, 3 jours), ou vide si inconnue. |
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 à partir d’une durée 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, Boolean result)
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 | Le 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 null. |
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 un enregistrement de n’importe quelle table pour lequel l’appelant souhaite exécuter les contextes de workflow.
| Nom | Type | Description |
|---|---|---|
| enregistrement | GlideRecord | GlideRecord de l’enregistrement pour lequel l’appelant souhaite obtenir la 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 | Le 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.
Consultez 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 le 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 | Le 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 spécifié.
Cela inclut les contextes de workflow en cours d’exécution et terminés.
| Nom | Type | Description |
|---|---|---|
| enregistrement | GlideRecord | GlideRecord à la loupe. 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 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 ni les 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 pour les 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 sur n’importe quelle table. |
| maintainStateFlag (en anglais seulement) | 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 avec le fichier d’approbation qui passe 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.
Des exemples d’utilisation peuvent être vus dans les includes de script « SNC : exécuter les workflows parents » et « SNC : exécuter les workflows parents (approbation) ».
| Nom | Type | Description |
|---|---|---|
| enregistrement | GlideRecord | GlideRecord par rapport auquel 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é.
Reportez-vous à l’include de script 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 | Le 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 se fait normalement depuis le 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 | Le sys_id du workflow à démarrer. Cette sys_id fait référence à la table wf_workflow. |
| MSecs rétroactifs | 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 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 de workflow .
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| nul |
var w = new Workflow();