Workflow 模块 API
【准备工作】在使用 API 之前,务必在【工作台】-【全局配置】-【系统启动函数】中进行初始化。其中 @custom/workflow 模块即为使用工作流模板引擎引入的自定义模块。初始化后,Workflow 会被作为全局对象,可以在任意后台运行的配置代码中使用。
function (Enhancer, done) { var workflow = require('@custom/workflow'); workflow.init(Enhancer); done(); }
Workflow.createInstance - 创建工作流实例
- @name {String}
必须
工作流名称。 - @action {String}
必须
由【开始】发起的动作名称。 - @params {Object}
必须
参数键值对,包含动作执行条件所需的@变量@及对应的值,比如:{'金额': @14-TOTAL@, '币种': '美元'}。若无需变量,传入 {} 占位。 - @userId {String | Number}
必须
当前操作人,一般由系统变量 @USER_ID@ 提供。 - @callback {Function}
必须
回调函数- err {Error} 回调错误对象
- result {Object} 正常返回的结果,包含创建的工作流实例 id,和当前所处的状态。比如:{instance_id: 123, status: '12 待主管审批'}
【例】
Workflow.createInstance(
'报销' // 工作流名称
, '提交' // 由【开始】发起的动作名称
, {'金额': @14-TOTAL@} // 相关参数,来自审批表单。
, @USER_ID@ // 当前操作人
, function(err, result) {
if (err) {
return done(err);
}
// !!!注意这里的 done 方法,来自本脚本所处的上下文环境,此处代码示意调用结束,但可能不一定存在或合理。
done(null, null, {
'10-INSTANCE_ID': result.instance_id, // 工作流实例 ID
'10-STATUS': result.status // 当前所处状态
});
});
Workflow.updateInstance - 更新工作流实例
- @instanceId {String} 工作流实例 ID。
- @action {String}
必须
当前操作动作名,应与流程图中的动作名一致。 - @params {Object}
必须
参数键值对,包含动作执行条件所需的@变量@及对应的值,比如:{'金额': @14-TOTAL@, '币种': '美元'}。若无需变量,传入 {} 占位。 - @approveContent {String}
必须
经办人附加的批示内容。 - @userId {String | Number}
必须
当前操作人,一般由系统变量 @USER_ID@ 提供。 - @callback {Function}
必须
回调函数- err {Error} 回调错误对象
- result {Object} 正常返回的结果,包含实例前一个状态和当前所处的状态。比如:{prev_status: '11 待财务审核', status: '12 待出纳确认'}
【例】
Workflow.updateInstance(
@9-ID@ // 当前工作流实例 ID,来此从【审核报销页面】和【我的报销页面】跳转传递的参数。
, '通过' // 当前操作动作,应与流程图中的动作名一致。
, {'金额': @11-TOTAL@} // 流程执行所需要的参数,内容应来自待审批的表单或其他相关内容。
, '同意' // 经办人附加的批示内容。
, @USER_ID@ // 经办人 ID。
, function(err, result) { // 回调函数
if (err) {
return done(err);
}
// !!!注意这里的 done 方法,来自本脚本所处的上下文环境,此处代码示意调用结束,但可能不一定存在或合理。
done(null, null, {
'10-PREV_STATUS': result.prev_status,
'10-STATUS': result.status
})
}
);