流程表达式
流程、流程环节、流程规则的属性支持设置为表达式,根据属性的功能,设置不同的表达式
- 组织表达式:用于设置处理人、通知人、处理人范围
- 普通表达式:用于设置任务标题、通知标题
- 条件表达式:用于设置条件、生效条件
- 其它表达式:用于设置流程、业务主键等
组织表达式
用于处理人、通知人、处理人范围,返回值必须是组织单元 OrgUnits 类型
处理人表达式
在设置处理人表达式时,可以直接从组织、组织角色中选择处理人,也可以通过表达式来指定处理人。处理人请参考《流程环节》中活动环节的处理人。处理人与条件表达式一样,可以组合多个函数进行取值
常用表达式
函数 | 释义 | 示例 |
---|---|---|
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 等
普通表达式
用于任务标题、通知标题
任务标题表达式
任务标题可以设置用户所看到的待办、已办等任务的标题,系统生成任务标题的默认规则为:环节名:流程名,如下图所示:
流程支持自定义任务标题,在标题中可以带上业务数据,比如单号、金额、申请人等关键信息,不仅方便审批者从待办任务中就可以直接看出表单相关的关键信息,还可以用于任务的筛选,比如筛选出某位申请人的审批单。
表达式设置如下:
concat('报销审批流程--申请人:',fieldValue('applicant'),'--联系电话:',fieldValue('phone'),'--审批环节:','财务审批')
运行效果如下:
条件表达式
用于条件、生效条件
条件编辑器
条件分支和条件环节的条件属性,都支持使用条件编辑器
条件编辑器
- 连接:支持设置多个条件,条件之间支持并且、或者、小括号
- 列:支持两种方式:在下拉框中选择业务字段,在 ┇ 中选择一个表达式
- 操作:选择操作符
- 值:支持两种方式:输入值,在 ┇ 中选择一个表达式
操作符号释义:
操作符号 | 含义 | 示例 |
---|---|---|
等于 | 值相等 | 客户类型等于'VIP' |
不等于 | 值不相等 | 卡类别不等于'白金卡' |
大于 | 值大于 | 金额大于1000 |
小于 | 值小于 | 金额小于1000 |
大于等于 | 值大于等于 | 金额大于等于1000 |
小于等于 | 值小于等于 | 金额小于等于1000 |
包含 | 匹配出目标值 | 公司名称包含'有限' |
包含于 | 存在于目标值中 | 年级包含于'一年级,二年级' |
常用表达式
toInteger():将结果转换为整形
getValueByUrl():通过服务取值
concat():拼接字符串
encodeURIComponent():对参数进行编码
fieldValue():根据字段名取流程表单的值
例如
toInteger(getValueByUrl(concat('/hr/main/apply/getdeptrecruitnum?dept=',encodeURIComponent(fieldValue('DEPTNAME')))))
无条件编辑器
有些规则的布尔类型的属性,系统没有提供条件编辑器,例如执行规则的生效条件属性
此时需要写出完整的表达式,如下图所示
常用表达式
- 判断表单中字段的值等于某个值
fieldvalue('name')='abc'
- 判断表单中字段的值包含某个值
contains(fieldValue('orderNo'),'abc')
- 判断表单中字段的值不等于某个值
fieldValue('code')<>'001'
- 判断表单中字段的值大于或小于某个值
fieldValue('num')>5000
- 多个判断条件,使用 or 或者 and 连接
fieldValue('name') ='abc' and fieldValue('createPerson')='北生一'
fieldValue('name') ='abc' or fieldValue('createPerson')='北生一'
- 判断表单字段值不为空
not(fieldValue('name')=null)
- 使用三元运算符用
iff(contains(fieldValue('name'),'abc'),fieldValue('code')<>'001',fieldValue('num')>5000)
- 调用服务查询
getValueByUrl('/oa/main/org/getOrg')
其它表达式
返回流程编码
用于动态子流程
业务主键
用于业务主键