De manière optionnelle, les workflows peuvent valider leurs entrées ; ceci s'effectue par l'ajout d'un membre validate qui accepte comme paramètre un objet contenant les paramètres du workflow en tant que membres. La fonction validate doit renvoyer un objet dans lequel chaque membre possède le nom du paramètre dont la validation a échoué, et chaque membre a pour valeur le message d'échec de validation affiché à la vue de l'utilisateur.
Exemple 23 Validation des entrées des workflowsL'exemple ci-dessous développe l'exemple précédent et génère une erreur lorsque l'utilisateur tente de créer un partage existant :
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) { 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); } run('filesystem ' + params.name); run('commit'); return ('Created new share "' + params.name + '"'); } };