自定义流程函数
系统提供了大量的流程函数,参考《流程函数》,用于形成各种表达式。对于开发者而言,可能存在一些常用组合。系统提供自定义流程函数,实现将组合后的表达式定义为一个函数,支持定义参数。在流程设计中和系统定义的流程函数显示在一起,用法一致,从而实现快速开发
新建函数
在门户应用的工作流管理中提供的“自定义流程函数”功能,在此功能中可以创建函数,目前支持了执行者、子流程和通用函数的创建。
- 执行者函数会在设置处理人的函数列表中显示
- 子流程函数在动态子流程函数中显示
- 通用函数在设置任务标题或者生效条件的常见规则的列表显示
如下把“流程发起人的主管”这个执行者类型的复合表达式创建为可以配置的表达式
- 函数名称设置为:流程发起人的主管
- 序号为:自定义函数列表中的显示顺序,在函数列表中优先显示自定义函数
- 函数类型为:执行者函数
- 函数模版:findDirectorWF(firstOrgUnitFID(findActivityExecutor('START')), {level})
函数模版就是最终需要的多个原子函数的组合函数,如果原子函数中有参数需要设置,在函数模版中通过 {} 设置参数,如上 {level},然后在添加参数列表中添加参数
添加参数
点击“添加参数”会在列表中添加一条记录,在记录中设置参数的标识、名称、类型、默认值、编辑器等
参数类型有“文本、数字和布尔”三个选项,如本案例中的 level 参数就是数字类型的。
参数编辑器有“组织选择器、表单选择器、环节选择器、角色选择器、枚举、输入”
- 组织选择器:在流程定义中设置此参数值时,可以直接打开组织树进行选择
- 数据选择器:在流程定义中设置此参数值时,可以直接列出当前流程定义关联的业务数据集的字段进行选择
- 环节选择器:在流程定义中设置此参数值时,可以直接列出当前流程定义中的环节列表进行选择
- 角色选择器:在流程定义中设置此参数值时,可以直接打开已有的角色列表进行选择
- 组织类型选择器:在流程定义中设置此参数值时,可以直接打开组织类型列表进行选择
- 枚举:在流程定义中设置此参数值时,可以在函数定义中枚举的值进行选择
- 输入:在流程定义中设置此参数值时,需要自己手动输入
如本例中 level 设置参数编辑器为枚举,在枚举列中编辑需要的值
参数定义完成后就相当于复合函数已经定义完成,在 ide 中、流程定义和流程定制中设置流程表达式时都可以读取到自定义函数
案例
子流程函数
系统中提供的子流程函数中的流程标签是静态的,如果需要将业务数据作为流程标签,需要自定义一个子流程函数
定义函数
在企业门户中,打开“系统管理-工作流管理-自定义流程函数”,添加一个函数,设置如下图所示
- 函数类型:选择子流程函数
- 函数模版:输入
findProcessByTagAndOrg({tag}, parentFIDByKind(currentPersonMemberFID(), 'ogn', true))
,表示当前人机构类型下有特定标签的流程 - 参数:添加 tag 参数,设置参数名称为业务数据,设置编辑器为数据选择器,用于选择当前流程定义关联的业务数据集的字段
使用函数
在流程图的子流程环节上,设置动态子流程属性,函数列表中显示出上面新建的函数及参数,点击参数名,弹出数据编辑器,选择一列即可,设计界面如下图所示