Les workflows peuvent émettre des enregistrements d'audit en appelant la fonction audit. Le seul argument de la fonction audit est une chaîne qui doit être placée dans le journal d'audit.
Pour les workflows complexes à durée d'exécution prolongée, il peut être utile de fournir à l'utilisateur qui exécute le workflow des informations claires sur l'avancement. Pour permettre un tel signalement de l'avancement de l'exécution d'un workflow, il faut que le membre execute retourne une série d'étapes. Chaque élément de la série doit contenir les membres suivants :
|
Comme pour la fonction execute appliquée au workflow dans son ensemble, le membre execute de chaque étape accepte comme argument un objet contenant les paramètres du workflow.
Exemple 24 Rapports sur l'exécution de workflowsL'exemple suivant illustre un workflow qui crée un nouveau projet, un nouveau partage et un nouvel enregistrement d'audit en trois étapes :
var steps = [ { step: 'Checking for associated project', execute: function (params) { try { run('shares select ' + params.unit); } catch (err) { if (err.code != EAKSH_ENTITY_BADSELECT) throw (err); /* * We haven't yet created a project that corresponds to * this business unit; create it now. */ run('shares project ' + params.unit); set('mountpoint', '/export/' + params.unit); run('commit'); run('shares select ' + params.unit); } } }, { step: 'Creating share', execute: function (params) { run('filesystem ' + params.name); run('commit'); } }, { step: 'Creating audit record', execute: function (params) { audit('created "' + params.name + '" in "' + params.unit); } } ]; var workflow = { name: 'Create share', description: 'Creates a new share in a business unit', parameters: { name: { label: 'Name of new share', type: 'String' }, unit: { label: 'Business unit', type: 'ChooseOne', options: [ 'development', 'finance', 'qa', 'sales' ], optionlabels: [ 'Development', 'Finance', 'Quality Assurance', 'Sales/Administrative' ], } }, validate: function (params) { try { run('shares select ' + params.unit); run('select ' + params.name); } catch (err) { if (err.code == EAKSH_ENTITY_BADSELECT) return; } return ({ name: 'share already exists' }); }, execute: function (params) { return (steps); } };
La fonction de messagerie permet aux workflows de livrer certains résultats par courrier électronique. Cette fonction doit inclure les arguments suivants : un objet sous la forme de commandes to et subject et une chaîne messageBody représentant le corps du message.
Exemple 25 Exécution de workflows à l'aide d'une fonction de messagerievar workflow = { name: 'email controller state', description: 'email controller state', execute: function () { // verify state of the controller var faulted = run('maintenance hardware "chassis-000" get faulted'); var messageBody = faulted; emailAddress = 'first.last@xyz.com'; subjectLine = 'Controller State'; mail({To: emailAddress, Subject: subjectLine}, messageBody); } };