用微搭开发应用经常会遇到这样一种场景,即提交表单保存数据以后希望触发工作流,工作流中审批通过以后系统能够自动更新数据模型中的部分数据,这种情况下我们推荐在工作流中使用自定义 API 实现。实践案例如下:
操作步骤
步骤1:创建数据模型
创建一个合同的数据模型,主要有合同 ID、合同名称、审批日期、审批状态四个字段。实践案例计划合同 ID、合同名称在表单中进行添加,审批日期、审批状态在工作流中通过自定义 API 完成数据更新。
![](https://qcloudimg.tencent-cloud.cn/image/document/cc8acb32194f69b732772b3c6b9f7fe0.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/cc8acb32194f69b732772b3c6b9f7fe0.png)
步骤2:创建自定义 API
创建一个合同 API 的 APIs,使用修改合同方法完成对合同数据模型中审批日期、审批状态两个字段的更新。
修改合同的相关参数如下截图。
![](https://qcloudimg.tencent-cloud.cn/image/document/6f9f79daed95e361b27a8e41142aab2a.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/6f9f79daed95e361b27a8e41142aab2a.png)
修改合同方法的核心代码如下。
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 的时候直接赋值。
开始节点
![](https://qcloudimg.tencent-cloud.cn/image/document/c34ec39333e89e70b4345055dee3a25f.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/c34ec39333e89e70b4345055dee3a25f.png)
开始节点打开流程中变量输入开关,在输入变量中设置输入变量 ID 作为数据标识 ID,用于接收页面传参。
![](https://qcloudimg.tencent-cloud.cn/image/document/9ec2ced7cc6f3478a8d58e492d917d88.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/9ec2ced7cc6f3478a8d58e492d917d88.png)
人工任务(审批节点)
是否为审批开始节点设置成否,任务接收人设置成用户,用户选择超级管理员。
![](https://qcloudimg.tencent-cloud.cn/image/document/1c9a220be46897262a407d35d46e7b28.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/1c9a220be46897262a407d35d46e7b28.png)
自定义 API
API 配置选择前面创建的合同 API。
![](https://qcloudimg.tencent-cloud.cn/image/document/170ca8b045618b2c455f31c4d211bcfb.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/170ca8b045618b2c455f31c4d211bcfb.png)
操作设置中将数据标识设置成变量 ID,通过页面传参数获取值;审批状态设置成常量,通过直接赋值审批通过。
![](https://qcloudimg.tencent-cloud.cn/image/document/1c17a80c5f28c24aef23336d051d3add.png)
设置完工作流相关节点后保存并发布。
![](https://qcloudimg.tencent-cloud.cn/image/document/1c17a80c5f28c24aef23336d051d3add.png)
步骤4:创建应用
![](https://qcloudimg.tencent-cloud.cn/image/document/643cf3537a29386a309a5b65d7c316b9.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/643cf3537a29386a309a5b65d7c316b9.png)
创建触发工作流页面
创建名称为合同创建触发工作流的自定义页面。为了实现通过页面表单提交后触发工作流,这里使用表单容器组件绑定数据模型合同,保留合同 ID、合同名称两个字段作为表单提交字段。
![](https://qcloudimg.tencent-cloud.cn/image/document/a209dcca474abff736817c19417b8304.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/a209dcca474abff736817c19417b8304.png)
创建存储数据标识 ID 的变量
创建变量 ID,用于存储表单提交保存以后返回的数据标识 ID,以及作为工作流的传递参数。
![](https://qcloudimg.tencent-cloud.cn/image/document/0609d2b01501151891971605ae1fc94f.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/0609d2b01501151891971605ae1fc94f.png)
增加变量赋值事件
选择调用数据源事件,将出参的新记录 ID(即数据标识 ID)保存至上面创建的变量 ID。
![](https://qcloudimg.tencent-cloud.cn/image/document/4f1e0401b035a9bdabee57cc14a0307f.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/4f1e0401b035a9bdabee57cc14a0307f.png)
增加触发流程事件
在变量赋值成功时添加触发流程动作,流程选择上面创建的合同流程。
![](https://qcloudimg.tencent-cloud.cn/image/document/3237c6aee1358fa7a26688be51109d0f.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/3237c6aee1358fa7a26688be51109d0f.png)
参数 ID 使用上面创建的变量 ID,作为流程开发的传入变量参数。
![](https://qcloudimg.tencent-cloud.cn/image/document/33e2c357e7d38cfd4ac67d9810b72d1e.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/33e2c357e7d38cfd4ac67d9810b72d1e.png)
以上设置完成后,可以发布应用测试结果。
步骤5:结果验证
应用发布以后,在合同创建触发工作流页面录入数据。
![](https://qcloudimg.tencent-cloud.cn/image/document/472215a431226acf8ada4e068bdb11b4.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/472215a431226acf8ada4e068bdb11b4.png)
数据提交后,在数据详情页面会看到审批状态、审批日期为空。
![](https://qcloudimg.tencent-cloud.cn/image/document/60ad0f33d381009be03c32c0f6b97949.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/60ad0f33d381009be03c32c0f6b97949.png)
去流程中心我的待办查看流程申请并审批。
![](https://qcloudimg.tencent-cloud.cn/image/document/594ccad87dbe60e93900f06148e20735.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/594ccad87dbe60e93900f06148e20735.png)
审批同意后,在数据详情页面会看到审批状态、审批日期出现预期值。
![](https://qcloudimg.tencent-cloud.cn/image/document/681aac386caab31f1604931338178da7.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/681aac386caab31f1604931338178da7.png)