用微搭开发应用经常会遇到这样一种场景,即提交表单保存数据以后希望触发工作流,工作流中审批通过以后系统能够自动更新数据模型中的部分数据,这种情况下我们推荐在工作流中使用自定义 API 实现。实践案例如下:
操作步骤
步骤1:创建数据模型
创建一个合同的数据模型,主要有合同 ID、合同名称、审批日期、审批状态四个字段。实践案例计划合同 ID、合同名称在表单中进行添加,审批日期、审批状态在工作流中通过自定义 API 完成数据更新。
步骤2:创建自定义 API
创建一个合同 API 的 APIs,使用修改合同方法完成对合同数据模型中审批日期、审批状态两个字段的更新。
修改合同的相关参数如下截图。
修改合同方法的核心代码如下。
module.exports = async function (params, context) {const result = await context.callModel({dataSourceName: 'ht_nljaaz5', // 数据模型名称methodName: 'wedaUpdate', // 更新方法params: {_id:params.id, // 合同更新数据标识idsprq:new Date().getTime(), // 合同审批日期,获取当前时间戳spzt:params.spzt // 合同审批状态},});return result;}
步骤3:创建工作流
创建一个合同流程工作流,流程节点主要有开始、人工任务(审批节点)、API、结束四个节点。
因为要通过自定义 API 变更数据模型的字段,所以需要传递两个参数分别是 ID(数据标识 ID)和 spzt(审批状态)。为了说明变量参数和常量参数的用法,这里把数据标识 ID 作为变量参数,审批状态作为常量参数。变量参数通过页面触发流程传参形式获取,常量参数在调用自定义 API 的时候直接赋值。
开始节点
开始节点打开流程中变量输入开关,在输入变量中设置输入变量 ID 作为数据标识 ID,用于接收页面传参。
人工任务(审批节点)
是否为审批开始节点设置成否,任务接收人设置成用户,用户选择超级管理员。
自定义 API
API 配置选择前面创建的合同 API。
操作设置中将数据标识设置成变量 ID,通过页面传参数获取值;审批状态设置成常量,通过直接赋值审批通过。
设置完工作流相关节点后保存并发布。步骤4:创建应用
创建触发工作流页面
创建名称为合同创建触发工作流的自定义页面。为了实现通过页面表单提交后触发工作流,这里使用表单容器组件绑定数据模型合同,保留合同 ID、合同名称两个字段作为表单提交字段。
创建存储数据标识 ID 的变量
创建变量 ID,用于存储表单提交保存以后返回的数据标识 ID,以及作为工作流的传递参数。
增加变量赋值事件
选择调用数据源事件,将出参的新记录 ID(即数据标识 ID)保存至上面创建的变量 ID。
增加触发流程事件
在变量赋值成功时添加触发流程动作,流程选择上面创建的合同流程。
参数 ID 使用上面创建的变量 ID,作为流程开发的传入变量参数。
以上设置完成后,可以发布应用测试结果。
步骤5:结果验证
应用发布以后,在合同创建触发工作流页面录入数据。
数据提交后,在数据详情页面会看到审批状态、审批日期为空。
去流程中心我的待办查看流程申请并审批。
审批同意后,在数据详情页面会看到审批状态、审批日期出现预期值。