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

文档信息

使用本文档

 1 Oracle ZFS Storage Appliance 概述

 2 状态

 3 初始配置

 4 网络配置

 5 存储配置

 6 存储区域网络配置

 7 用户配置

 8 设置 ZFSSA 首选项

 9 警报配置

 10 群集配置

 11 ZFSSA 服务

 12 共享资源、项目和模式

 13 复制

 14 影子迁移

 15 CLI 脚本化

 16 维护工作流

使用工作流

工作流执行上下文

工作流参数

约束参数

可选参数

工作流错误处理

工作流输入验证

工作流执行审计

工作流执行报告

版本控制

设备版本控制

工作流版本控制

作为警报操作的工作流

警报操作执行上下文

审计警报操作

使用调度的工作流

使用 CLI

对调度表进行编码

示例:设备类型选择

BUI

CLI

下载工作流

查看工作流

执行工作流

 17 集成

索引

工作流执行报告

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

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

与整个工作流上的 execute 函数一样,每个步骤的 execute 成员都将包含工作流参数的对象作为参数。例如,下面的工作流通过三个步骤创建新的项目、共享资源和审计记录:

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