Guide d'administration des systèmes Oracle® ZFS Storage Appliance, version 2013.1.5.0

Quitter la vue de l'impression

Mis à jour : Février 2016
 
 

Audits et rapports sur l'exécution des workflows

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 :

Table 114  Membres obligatoires des rapports sur l'exécution
Membre obligatoire
Type
Description
step
String
Chaîne indiquant le nom de l'étape d'exécution
execute
Fonction
Fonction exécutant le l'étape du workflow

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 18  Rapports sur l'exécution de workflows

L'exemple suivant illustre un workflow qui crée un nouveau projet, un nouveau partage et un nouvel enregistrement d'audit au cours de 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); }
};