工作流简介
工作流是由用户定义,事件驱动,按逻辑顺序自动执行的工作流程。
[!TIP|style:flat] 配置工作流时经常会出现两个术语:物理表和数据集。
物理表,就是数据库中存储的数据表。
数据集,是从数据库中查取出来的数据结果。
一、需求场景
例如:新创建一个工单后,按照定义,先移交给客服部门确认,再移交给技术部门确认工单性质,再分发给对应的服务部门处理;每天网店结束营业后,都要扎帐和统计当天的营业收入和利润;员工发起采购申请后,需要按公司既定的采购流程进行审批和执行,等。
二、工作流触发器
工作流的触发器,现在有六种:
- DB触发器:当数据库(数据记录、数据字段)有新增、修改、删除操作的时候,触发工作流。
- API触发器:可以定义接口,供外部系统获取零代码系统应用的数据。
- 时间触发器:约定时间,以便启动工作流。
- 按钮触发器:约定按钮被点击后执行的流程。在自定义按钮时设置,在工作流中进行管理。
- 审批触发器:约定审批被发起后执行的流程。在定义审批时设置,在工作流中进行管理。
- 导入触发器:约定导入某种数据后执行的流程。在定义导入行为时设置,在工作流中进行管理。
[!DANGER|style:flat]
系统不支持触发器触发第二个触发器。比如:使用按钮触发器将数据写入DB,不能再次触发DB触发器。例如,通过按钮触发器,改变了一个货物入库的状态,从待检验到已入库,这个DB的更新,是不能立即触发DB触发器驱动的统计工作流的。
使用API触发器时,如果需要用到API输出数据(返回的数据),就选择同步。如果只是调用,不需要该接口返回的数据,就选择异步。可以理解为:同步模式是等待处理结果,异步模式是不等结果将任务放到队列中处理。
三、工作流节点类型
工作流节点有六种:数据、组件、数据源、服务、数据整理、消息通知。
3.1 数据
数据功能,主要是对数据的操作,包括:
- 新增:向数据库中新增一条记录。
- 批量新增:向数据库中(一次)新增多条记录。
- 查找单条数据:从数据库中查满足约定条件的一条数据记录。
- 查找多条数据:从数据库中查满足约定条件的多条数据记录。
- 更新单条数据:从数据库中查满足约定条件的一条数据记录,用新数据更新指定字段。
- 更新多条数据:从数据库中查满足约定条件的多条数据记录,用新数据更新指定字段。
- 删除:从数据库中查满足约定条件的数据记录,然后删除。
- 区块链:接入区块链,实现数据上链操作。
- 获取子表数据:获得本表的关联子表中的数据。
- 脚本:如果零代码方式不满足需求时,可以通过脚本的方式扩展功能。目前支持js脚本。
- 审批:提供审批功能。
- 数据锁定:如果零代码方式不满足需求时,可以通过脚本的方式扩展功能。目前支持js脚本。
- 数据解锁:如果零代码方式不满足需求时,可以通过脚本的方式扩展功能。目前支持js脚本。
3.2 组件
- 条件分支:提供判断能力,在满足条件的情况下执行一组逻辑,不满足条件的情况下执行另外一种条件。类似于编程中的if/else判断。
- 并行节点:引入并行节点后,可以同时进行多种路径的计算。
- 循环条件:在多条数据中一条一条的进行循环遍历操作。
3.3 数据源
- API数据源:通过配置功能项可以实现对外部API的调用。
- SQL数据源:引入SQL数据库成的操作能力,使工作流可以调用SQL数据。
3.4 服务
- 第三方服务:系统预置的第三方服务提供商的API。
3.5 数据整理
- 数据输出:将数据进行结构编排后进行输出。
- 数据导出:将数据通过模板导出成不同格式文件,支持excel、word、pdf格式文件。
- 中间结果:将数据转化为指定数据结构的中间数据。
- 运算节点:相当于引入了一个“中间”数据,用于数据的过渡性存储,方便转移搬运数据。
3.6 消息通知
- 发送邮件:提供发送邮件通知的能力,需要自有邮件服务器。
- 发送短信:提供发送短信通知的能力,需要自有短信网关和过审的短信模板。
- 发送消息通知:提供发送站内消息通知的能力。
- 企业微信:提供推送企业微信消息通知的能力,需要配置对接企业微信。
- 钉钉:提供推送钉钉消息通知的能力,需要配置对接钉钉。
四、工作流节点整理
节点的整理,包括两种:
- 复制:将已配置的节点复制到指定的位置。
- 移动:将已配置的节点移动到指定的位置。
以 “复制” 为例,在指定的位置,点击 “复制”,勾选需要 “复制” 的节点,然后,点击 “确认选择” 即可。
“移动” 操作同上。
[!DANGER|style:flat]勾选选择节点时:
- 对于 “条件节点”:①全选,且 “条件节点” 下辖的节点不可反选。②单选一个条件,则其他条件不可选。
- 选择节点,只能在已选节点的相邻范围内选择(前一个或后一个),其他位置节点不可选。
- 反选节点,需从已选节点中的第一个或最后一个开始。
五、页面缩放
对于工作流节点多,一屏无法显示全部的情况,可通过右下侧的 “缩放” 按钮进行缩放调节。
[!TIP|style:flat] 工作流中会经常接触到2种数据结构,数组和对象。 数组和对象的区别,主要是: 数组:a=[1,2,3,4];对象:a={0:1, 1:2, 2:3, 3:4} 数组,表示有序数据的集合;对象表示无序数据的集合; 数组,的数据没有”名称”(name);对象,的数据有”名称”(name); 数组,有长度,能用for循环,对象不行。