节点配置
通用节点配置
常规
常规节点可以配置当前节点的基本信息
ID
:当前节点的ID
名称
:当前节点的显示名称
描述
:当前节点的描述信息
执行监听器
暂略
开始/结束
开始
/结束
节点分别代表流程的开始和结束,是最基本的两个基础节点,在ZeroCloud中,任何的流程必然以开始节点开始,以结束节点结束
开始节点需要配置数据表,这样数据才能落库。
审批
审批节点主要用于确定对审批的办理人和审批的规则
审批节点
此区域主要用于配置审批节点的审批规则,如
办理人
、处理规则
等
其中:
办理人
指定此审核节点的办理人(处理人),详细规则请参考办理人配置
部分的介绍
共享处理
指定此审核节点是否允许多个办理人共享处理,打开共享处理,任务会进入到共享任务中,需要先获取处理权,才能继续处理
到期时间
指定此审核节点的到期时间
无对应办理人策略
当此审核节点没有对应的办理人时执行的操作
跳过本步骤
:自动跳过当前审核节点不允许提交
:不允许用户执行提交操作
自动同意规则
指定此审核节点在何时可以自动同意,可以有效的避免重复审核
办理人为发起人
:如果当前节点的办理人是发起人自己
,将自动跳过此审核节点
操作权限
给指定节点配置权限 配置完成后,发起流程,就可以看到操作权限
退回重填
:退回重填,回到发起节点退回某部步
: 首先在流程定义中获取所需节点的元素id
,再填入历史节点id中委托
:指定某人代替自己处理事务撤销
:撤销这支流程,比如请假之后又不想请了删除
:删除这只流程
表单配置
配置当前审核节点
对应的表单
- 点击选择框右侧的放大镜图标
- 在打开的
选择表单
对话框中,选择对应的表单即可。明细表需要勾选明细表的选项,根据需求决定是否需要自动创建行。
数据表配置
配置当前审核节点
使用的数据表
- 点击编辑表定义按钮
- 在打开数据表定义页面中配置需要使用到的数据表
- 数据表中可以设置默认值及提交值
默认值为这个字段没有值的时候才会生效。距离说明,前置节点已经设置了提交值,那么后置节点的默认值不会生效。
提交值跟默认值都是实际都是java语句,所以需要赋值常量时,需要加上""括起来。 提交值跟默认值也支持使用上下文变量直接赋值。
右侧通过单选框的形式控制读写权限。
会签
会签节点
和审批节点
类似,与审核节点不同,会签节点有一些额外的配置,可以更灵活的控制多人审核
时的场景
配置审核节点
中的项和普通的审核节点一致,区别是额外多了一个会签节点
的配置
其中:
会签模式
用于控制会签的签核模式
,有顺序签核
以及并行签核
顺序签核
:是由审核节点
中配置的办理人
列表的顺序依次审批
并行审核
:则是办理人
列表中所有办理人并行审批
会签通过比例
会签通过比例
用于配置在审核的通过规则
全部通过
:当所有
办理人均同意
时方可通过
半数以上通过
:当一半以上
办理人同意
时通过
按比例通过
:当指定比例
的办理人同意
时通过
按数量通过
:当指定数量
的办理人同意
时通过
一票通过
:有一个办理人同意
即可通过
自由签核
自由签核节点和会签节点类似,在配置中仅多了一个会签人指定节点
选项
知会节点
知会节点正常配置办理人,但是无需办理人做任何操作,流程自动流转到下一个节点。
该任务会推送到流程门户
->待办事项
->我的待阅
中,在这里可以进行已阅操作,或者知会操作
互斥网关
互斥网关和其他节点不同,条件节点的主要配置不在节点配置中,而在连线的配置中
在连接条件节点和其他节点后,选择连线
,出现以下配置页面
其中:
条件类型
用于控制判断的方式,可选脚本
或表达式
,脚本方式可以通过脚本
来进行条件判断,而表达式方式则允许通过js表达式
进行判断
条件内容
填写具体的脚本或表达式
例如,需要判断指定数据表中的amount
字段是否大于1000
,这里使用的是juel表达式,建议使用juel表达式
${form_data_snapshot.ZeroCloudData.purchase_m.get(0).amount>=1000}
例如判断这个字段中是否包含指定字符
${form_data_snapshot.erp.buyer.get(0).user_name.indexOf("老师")!=-1}
这里也支持Groovy条件语言
def name = form_data_snapshot?.erp?.buyer?.get(0)?.user_name?: ''
def containsNurse = name.contains('护士')
使用提示
选中连线后,点击小扳手
选择默认流程。 这样在互斥网关发现没有符合条件内容的路径时,会走默认流程,如果不设置,流程就会报错。
或者能确定路径的配置可以包含所有情况,也可以。
并行网关
并行网关
可以将流程
的走向分离
或整合
,如果流程经过并行网关
时,会分为多条流程
继续执行,如果多条流程
经过同一个并行网关
时,会合并为一条流程
通过并行网关
,可以控制流程走向
包容网关
包容网关
是互斥网关
和并行网关
的综合体。当进行决策判断时,与互斥网关
所不同的是,所有条件为true的后继分支都会被依次执行,如果所有分支条件决策都为false且该网关定义了一个默认的连线,那么该默认分支将被执行。如果没有可到达的分支,抛出异常,该网关所处的分支被中断,在流程设计上应避免这种情况发生。包容网关有分支和合并两种行为,允许多进多出。
SQL脚本
数据源
首先需要配置sql语句交互的数据源
通过sql语句,直接交互数据库
赋值可以使用js变量,注意用''括起来。
INSERT INTO `erp`.`stock`(`item_code`, `item_name`) VALUES ('010', '${formData["erp"]["buyer"][0]["user_name"]}')
sql脚本支持freeMarker语法
以下示例很简单,只是从一张buyer表中取一个字段,插入另一个stock表中。没有什么业务语义,仅为展示freeMarker用法。
设置变量
<#assign item_code = '010'>
<#assign item_name = formData["erp"]["buyer"][0]["user_name"]>
INSERT INTO `erp`.`stock`(`item_code`, `item_name`) VALUES ('${item_code}', '${item_name}')
判断传参是否为空
<#assign item_code = '010'>
<#assign user_name_exists = formData["erp"]["buyer"][0]["user_name"]?has_content>
<#if user_name_exists>
<#assign item_name = formData["erp"]["buyer"][0]["user_name"]>
<#else>
<#assign item_name = 'Default User Name'>
</#if>
INSERT INTO `erp`.`stock`(`item_code`, `item_name`) VALUES ('${item_code}', '${item_name}')
循环明细表并判断
<#list formData["erp"]["buyer"] as buyer>
<#assign item_code = '010'>
<#assign user_name_exists = buyer.user_name?has_content>
<#if user_name_exists>
<#assign item_name = buyer.user_name>
<#else>
<#assign item_name = 'Default User Name'>
</#if>
INSERT INTO `erp`.`stock`(`item_code`, `item_name`) VALUES ('${item_code}', '${item_name}')
</#list>
HTTP服务
通过http调用后端接口,完成业务逻辑
Method
:接口调用方式URL
:接口请求路径,当请求的是平台内置的自定义服务时,可以根据nacos别名使用/custom/**/**来请求。 使用本地项目或者其他第三方项目时,使用公网可以访问的urlQuery
:携带在路径上的参数,可以点击右侧放大镜选择数据Header
:携带在请求头上的参数Content Type
:body请求体类型Body
:post请求请求体,使用java代码封装成请求的json格式数据
示例语句就是把[数据源
][表名
]转换为一组json格式的数据
return new ObjectMapper().writeValueAsString(formData["zerocloud_data"]["purchase_t"]
);
调用子流程
绑定流程key,可以在流程中调用流程
嵌入子流程
嵌套子流程跟住流程使用一套数据,使用嵌套子流程的目的是方便流程展示,保证流程可读性。 点击右下角小箭头可以编辑子流程
进入子流程后,必须配置开始
节点跟结束
节点 点击左上角超链接,可以回到主流程。