有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
文档中心 > 腾讯云微搭低代码 > 最佳实践 > 工作流实践指南 > 工作流调用自定义 API 实现数据模型更新
用微搭开发应用经常会遇到这样一种场景,即提交表单保存数据以后希望触发工作流,工作流中审批通过以后系统能够自动更新数据模型中的部分数据,这种情况下我们推荐在工作流中使用自定义 API 实现。实践案例如下:

操作步骤

步骤1:创建数据模型

创建一个合同的数据模型,主要有合同 ID合同名称审批日期审批状态四个字段。实践案例计划合同 ID合同名称在表单中进行添加,审批日期审批状态在工作流中通过自定义 API 完成数据更新。



步骤2:创建自定义 API

创建一个合同 API 的 APIs,使用修改合同方法完成对合同数据模型中审批日期审批状态两个字段的更新。

如果不熟悉自定义 APIs 如何创建,请参见 新建自定义 API
修改合同的相关参数如下截图。


修改合同方法的核心代码如下。
module.exports = async function (params, context) {

const result = await context.callModel({
dataSourceName: 'ht_nljaaz5', // 数据模型名称
methodName: 'wedaUpdate', // 更新方法
params: {
_id:params.id, // 合同更新数据标识id
sprq:new Date().getTime(), // 合同审批日期,获取当前时间戳
spzt:params.spzt // 合同审批状态
},
});
return result;
}
如果不熟悉自定义 API 代码如何编写,请参见 自定义代码(云函数)

步骤3:创建工作流

创建一个合同流程工作流,流程节点主要有开始人工任务(审批节点)、API结束四个节点。 因为要通过自定义 API 变更数据模型的字段,所以需要传递两个参数分别是 ID(数据标识 ID)和 spzt(审批状态)。为了说明变量参数和常量参数的用法,这里把数据标识 ID 作为变量参数,审批状态作为常量参数。变量参数通过页面触发流程传参形式获取,常量参数在调用自定义 API 的时候直接赋值。

开始节点



开始节点打开流程中变量输入开关,在输入变量中设置输入变量 ID 作为数据标识 ID,用于接收页面传参。




人工任务(审批节点)

是否为审批开始节点设置成任务接收人设置成用户用户选择超级管理员



自定义 API

API 配置选择前面创建的合同 API


操作设置中将数据标识设置成变量 ID,通过页面传参数获取值;审批状态设置成常量,通过直接赋值审批通过


设置完工作流相关节点后保存并发布。

步骤4:创建应用

创建一个合同管理应用,为了方便查看、验证数据,在创建应用的同时使用合同数据模型自动创建了 CRUD 页面。

创建触发工作流页面

创建名称为合同创建触发工作流的自定义页面。为了实现通过页面表单提交后触发工作流,这里使用表单容器组件绑定数据模型合同,保留合同 ID合同名称两个字段作为表单提交字段。



创建存储数据标识 ID 的变量

创建变量 ID,用于存储表单提交保存以后返回的数据标识 ID,以及作为工作流的传递参数。



增加变量赋值事件

选择调用数据源事件,将出参的新记录 ID(即数据标识 ID)保存至上面创建的变量 ID



增加触发流程事件

变量赋值成功时添加触发流程动作,流程选择上面创建的合同流程


参数 ID 使用上面创建的变量 ID,作为流程开发的传入变量参数。

以上设置完成后,可以发布应用测试结果。

步骤5:结果验证

应用发布以后,在合同创建触发工作流页面录入数据。

数据提交后,在数据详情页面会看到审批状态审批日期为空。

去流程中心我的待办查看流程申请并审批。

审批同意后,在数据详情页面会看到审批状态审批日期出现预期值。