一、条件表达式
- 流程在行进过程中,需要进行分支处理,而如何分支就需要设定一定的条件,条件表达式就是完成这个工作。
编辑流程表达式
1.新建条件环节后,在属性面板进行表达式的编辑。
2.点击新增,新增空行,在列中选择业务字段,操作中选中符号,在值中输入表达式的值。
3.操作符号释义:
操作符号 | 含义 | 示例 |
---|---|---|
等于 | 值相等 | 客户类型等于'VIP' |
不等于 | 值不相等 | 卡类别不等于'白金卡' |
大于 | 值大于 | 金额大于1000 |
小于 | 值小于 | 金额小于1000 |
大于等于 | 值大于等于 | 金额大于等于1000 |
小于等于 | 值小于等于 | 金额小于等于1000 |
包含 | 匹配出目标值 | 公司名称包含'有限' |
包含于 | 存在于目标值中 | 年级包含于'一年级,二年级' |
4.“值”输入框除了输入具体的值之外,还可以通过组合表达式取值,参考示例如下。
toInteger(getValueByUrl(concat('/hr/main/apply/getdeptrecruitnum?dept=',encodeURIComponent(fieldValue('DEPTNAME')))))
toInteger():是将结果转换为整形
getValueByUrl():通过服务取值
concat():拼接字符串
encodeURIComponent():对参数进行编码
fieldValue():根据字段名取流程表单的值
二、事件生效表达式
- 流程事件的生效,可以用表达式来控制,最简单的场景比如当业务上的某个字段满足某个条件时,触发一个事件去执行某个动作。
- 生效条件默认为空,此时的事件会默认执行。
- 当生效条件不为空时,事件的执行会根据条件表达式的返回决定是否执行,返回为true,事件执行,反之不执行。
- 示例:
如果该条件是一个复杂的计算的结果,则可以定义一个服务来处理计算的过程,默认会把主键作为参数传递过去,在自己定义的服务中按名称定义该参数即可。
也可以像条件表达式一样,用多函数拼接的方式返回数据。
getValueByUrl('/oa/main/org/getOrg')
oa:应用名
main:模块名,平台的模块名默认为main
org:服务名
getOrg:函数名
三、执行规则表达式
1. 执行者表达式
- 在设置执行人表达式时,可以直接从组织角色、上下文环境、组织中选择某个执行者单元,也可以通过函数编辑表达式来指定执行者。
- 执行者函数的释义请参考参考业务流程执行者。
- 执行者与条件表达式一样,可以组合多个函数进行取值。
- 这里补充部分表达式示例:
函数 | 释义 | 示例 |
---|---|---|
fieldValue() | 获取表单字段值 | fieldValue('fid') |
getProcessData1() | 获取业务主键 | getProcessData1() |
getVar() | 获取流程变量的值 | getVar('myFlowVar') |
getValueByUrl() | 通过服务获取值 | findOrgUnitsByCode(getValueByUrl('/order/main/order/getreplyexecutorscode')) |
注意:
- 表达式返回的值可以是组织节点的fid(全路径id)、id(标识)、code(编码),如果是多个,返回值可以用逗号隔开,如"001,002,003";
- 返回的值必须通过OrgUnits相关函数,将执行者包装成一个OrgUnits对象,如findOrgUnitsByCode、findOrgUnitsByID等。
2. 执行者范围表达式
- 流程除了设置执行者之外,还可以设置执行者范围,执行者是直接指定执行人,执行者范围是指定一个执行范围,用户在选择执行人时可以从执行者范围选择执行人。
- 如上示例中,当设置了执行者范围为财务部以后,可以在从设定的执行者范围中选择执行人,如下图所示。
3. 生效表达式
- 流程环节的执行也可以通过表达式进行控制。
- 首环节的执行规则默认为isStartingProcess(),其他环节默认为true。
- 也可以像条件表达式一样通过函数来进行控制,比如设置为:fieldValue('total')>1000,表示金额大于1000该环节才执行。
- 也可以通过getValueByUrl函数,从服务的返回值来判断。
4.任务标题表达式
- 任务标题可以设置用户所看到的待办、已办等任务的标题,平台会默认生成简单的任务标题,如下图所示:
- 可以定义复杂的任务标题,在标题中可以带上更多的业务表信息,比如单号、金额、申请人等关键信息,不仅方便审批者从待办任务中就可以直接看出表单相关的关键信息,还可以用于任务的筛选,比如筛选出某位申请人的审批单。
表达式设置如下:
concat('报销审批流程--申请人:',fieldValue('applicant'),'--联系电话:',fieldValue('phone'),'--审批环节:','财务审批')
运行效果如下: