WorkflowManager 模块 API
目录
- WorkflowManager.createInstanceAndDoNext - 创建工作流实例并执行到下一步状态
- WorkflowManager.createInstance - 创建工作流实例
- WorkflowManager.updateInstanceToNextStatus - 更新工作流实例到下一个状态
- WorkflowManager.setInstanceStatus - 设置工作流实例状态
- WorkflowManager.setInstanceHandler - 设置工作流实例处理人
WorkflowManager.createInstanceAndDoNext - 创建工作流实例并执行到下一步状态
- @name {String} 必须工作流名称。
- @title {String} 必须实例标题。
- @action {String} 必须由【开始】发起的动作名称。
- @params {Object} 必须参数键值对,包含动作执行条件所需的@变量@及对应的值,比如:{'金额': @14-TOTAL@, '币种': '美元'}。若无需变量,传入 {} 占位。
- @callback {Function} 必须回调函数- err {Error} 回调错误对象,若无错误则为空。
- result {Object} 正常返回的结果,结构如下:{ instance_id: 123, // 实例 ID next_status_no: 12,// 状态编号 next_status_name: ' 待上级主管审批', // 状态名称 prev_status_no: 10, // 上一个状态变量 prev_status_name: '填写申请表', // 上一个状态名称 next_handler: { // 下一个处理人' id: 6357, name: '王四', title: '上级主管' }, is_next_status_end: false // 下一个状态是否是终态。 }
 
【例】
var WorkflowManager = require('@custom/workflow-manager');
var manager = new WorkflowManager(Enhancer); // 一定要传入全局对象 Enhancer。
manager.createInstanceAndDoNext(
    '报销'      // 工作流名称
    , '张三报销费用100元'// 标题
    , '提交'    // 由【开始】发起的动作名称
    , {'金额': @14-TOTAL@} // 相关参数,来自审批表单。
    , function(err, result) {
        if (err) {
            return done(err);
        }
        // !!! 注意这里的 done 方法,来自本脚本所处的上下文环境,
        // 此处代码示意调用结束,但可能不一定存在或合理。!!!
        done(null, null, {
            '10-INSTANCE_ID': result.instance_id, // 工作流实例 ID
            '10-STATUS': result.next_status_no, // 当前所处状态
            '10-HANDLER_ID': result.next_handler.id
        });
});
WorkflowManager.createInstance - 创建工作流实例
- @name {String} 必须工作流名称。
- @title {String} 必须实例标题
- @params {Object} 必须执行时传入的参数变量,是一个键值对形式比如 {'金额': 1008.88, '员工ID': 123}。若无需变量,传入 {} 占位。
- @callback {Function} 必须回调函数- err {Error} 回调错误对象,若无错误则为空。
- result {Object} 正常返回的结果,结构如下:{ instance_id: 123, // 实例 ID next_status_no: 12, // 状态编号 next_status_name: '填写申请表', prev_status_no: 12, // 先前的状态编号 prev_status_name: '填写申请表', is_next_status_end: false // 下一个状态是否是终态。 }
 
【例】
var WorkflowManager = require('@custom/workflow-manager');
var manager = new WorkflowManager(Enhancer); // 一定要传入全局对象 Enhancer。
manager.createInstance(
    '报销'        // 工作流名称
    , '张三报销费用100元'// 标题
    , {} // 附加参数,无内容保持占位。 
    , function(err, result) {
        if (err) {
            return done(err);
        }
        // !!!注意这里的 done 方法,来自本脚本所处的上下文环境,此处代码示意调用结束,但可能不一定存在或合理。
        done(null, null, {
            '10-INSTANCE_ID': result.instance_id, // 工作流实例 ID
            '10-STATUS': result.next_status_no // 当前所处状态
        });
});
WorkflowManager.updateInstanceToNextStatus - 更新工作流实例到下一个状态
- @instanceId {String} 工作流实例 ID。
- @action {String} 必须当前操作动作名,应与流程图中的动作名一致。
- @params {Object} 必须参数键值对,包含动作执行条件所需的@变量@及对应的值,比如:{'金额': @14-TOTAL@, '币种': '美元'}。若无需变量,传入 {} 占位。
- @approveContent {String} 必须经办人附加的批示内容。
- @callback {Function} 必须回调函数- err {Error} 回调错误对象,若无错误则为空。
- result {Object} 正常返回的结果,结构如下:{ next_status_no: 12, next_status_name: ' 待上级主管审批', prev_status_no: 10, prev_status_name: '填写申请表', next_handler: { // 下一个处理人' id: 6357, name: '王四', title: '上级主管' }, is_next_status_end: false // 下一个状态是否是终态。 }
 
【例】
var WorkflowManager = require('@custom/workflow-manager');
var manager = new WorkflowManager(Enhancer); // 一定要传入全局对象 Enhancer。
manager.updateInstanceToNextStatus(
    @9-ID@                       // 当前工作流实例 ID
    , '通过'                      // 当前操作动作,应与流程图中的动作名一致。
    , {'金额': @11-TOTAL@}        // 流程执行所需要的参数,内容应来自待审批的表单或其他相关内容。
    , '同意'                      // 经办人附加的批示内容。
    , function(err, result) {    // 回调函数
        if (err) {
            return done(err);
        }
        // !!!注意这里的 done 方法,来自本脚本所处的上下文环境,此处代码示意调用结束,但可能不一定存在或合理。
        done(null, null, {
            '10-PREV_STATUS_NO': result.prev_status_no,
            '10-STATUS_NO': result.next_status_no,
            '10-HANDLER_ID': result.next_handler.id
        })
    }
);
WorkflowManager.deleteInstance - 删除工作流实例
- @instanceId {String} 工作流实例 ID。
- @callback {Function} 必须回调函数- err {Error} 回调错误对象,若无错误则为空。
- result {Object} 正常返回的结果。
 
【例】
var WorkflowManager = require('@custom/workflow-manager');
var manager = new WorkflowManager(Enhancer); // 一定要传入全局对象 Enhancer。
manager.deleteInstance(123, function(err, result) {
    if (err) {
        return done(err);
    }
    console.log(result);
    done(null, {success: true, result:result});
});
WorkflowManager.setInstanceStatus - 设置工作流实例状态
- @instance_id {String} 必须工作流实例 ID
- @status_no {String} 必须状态编号。
- @approval_content {String} 必须批复内容。
- @callback {Function} 必须回调函数- err {Error} 回调错误对象,若无错误则为空。
- result {Object} 正常返回的结果,结构如下:{ next_status_no: 12, next_status_name: ' 待上级主管审批', prev_status_no: 10, prev_status_name: '填写申请表', next_handler: { // 下一个处理人' id: 6357, name: '王四', title: '上级主管' }, is_next_status_end: false // 下一个状态是否是终态。 }
 
【例】
var WorkflowManager = require('@custom/workflow-manager');
var manager = new WorkflowManager(Enhancer); // 一定要传入全局对象 Enhancer。
manager.setInstanceStatus(
    @9-ID@        // 当前工作流实例 ID
    , '18'        // 状态
    , '填错了'     // 批复内容
    , function(err, result) {
        if (err) {
            return done(err);
        }
        done(null, {success: true, result: result});
    }
)
WorkflowManager.setInstanceHandler - 设置实例当前处理人
- @instance_id {String} 工作流实例 ID。
- @handler_id {String} 处理人 ID。
- @handler_name {String} 处理人名称。
- @handler_title {String} 处理人职务。
- @callback {Function} 必须回调函数- err {Error} 回调错误对象,若无错误则为空。
- result {Object} 正常返回的结果,结构如下:{ next_status_no: 12, next_status_name: ' 待上级主管审批', prev_status_no: 10, prev_status_name: '填写申请表' }
 
【例】
var WorkflowManager = require('@custom/workflow-manager');
var manager = new WorkflowManager(Enhancer); // 一定要传入全局对象 Enhancer。
manager.setInstanceHandler(
    @9-ID@        // 工作流实例 ID
    , 1           // 处理人 ID
    , '赵汉人'     // 处理人姓名
    , '总裁'       // 处理人职称
    , function(err, result) {
        if (err) {
            return done(err);
        }
        done(null, {success: true, result: result});
    }
)