Los flujos de trabajo pueden emitir registros de auditoría si llaman a la función audit. El único argumento de la función audit es una cadena que se colocará en el log de auditoría.
Para los flujos de trabajo complicados cuya ejecución requiere bastante tiempo, puede ser útil proporcionar información clara acerca del progreso para el usuario que ejecuta el flujo de trabajo. Para permitir que se genere un informe sobre la ejecución de un flujo de trabajo de esta manera, el miembro execute debe devolver una matriz de pasos. Cada elemento de la matriz debe contener los siguientes miembros:
|
Al igual que con la función execute para el flujo de trabajo como un todo, el miembro execute de cada paso toma como argumento un objeto que contiene los parámetros del flujo de trabajo.
Ejemplo 24 Generación de informes de ejecución de flujos de trabajoComo ejemplo, en el siguiente flujo de trabajo, se crea un nuevo proyecto, recurso compartido y registro de auditoría en tres pasos:
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); } };
Mediante el uso de la función de correo, los flujos de trabajo pueden enviar ciertas salidas del flujo de trabajo por correo electrónico. La función de correo debe contener los siguientes argumentos: un objeto con to y subject, y una cadena messageBody.
Ejemplo 25 Ejecución del flujo de trabajo con una aplicación de correovar 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); } };