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

results matching ""

    No results matching ""