JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle® ZFS Storage Appliance 管理指南,发行版 2013.1.3.0
Oracle 技术网
文档库
PDF
打印视图
反馈
search filter icon
search icon

文档信息

关于 Oracle ZFS Storage Appliance

配置 Oracle ZFS Storage Appliance

使用服务

维护 Oracle ZFS Storage Appliance

使用维护工作流

了解工作流

了解工作流参数

约束工作流参数

可选工作流参数

工作流错误处理

工作流输入验证

工作流执行审计和报告

了解工作流版本控制

针对警报操作使用工作流

使用调度的工作流

使用调度的工作流

编码工作流调度表

根据指定的驱动器类型创建工作表

使用 BUI 上载工作流

使用 CLI 下载工作流

使用 CLI 列出工作流

使用 CLI 执行工作流

使用共享资源

将设备与 Oracle ZFS Storage Appliance 集成

工作流执行审计和报告

工作流可以通过调用 audit 函数创建审计记录。audit 函数唯一的参数是要放置到审计日志中的字符串。

对于执行时间较长的复杂工作流,向执行工作流的用户提供明确的进度信息可能比较有用。要允许通过这种方式报告工作流的执行情况,execute 成员应该返回步骤数组。每个数组元素必须包含以下成员:

表 4-6  执行报告的必要成员
必要成员
类型
说明
step
字符串
表示执行步骤名称的字符串
execute
函数
执行工作流步骤的函数

与整个工作流上的 execute 函数一样,每个步骤的 execute 成员都将包含工作流参数的对象作为参数。

示例 4-7  工作流执行报告

例如,下面的工作流通过三个步骤创建新的项目、共享资源和审计记录:

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); }
};