流程环节
流程环节是流程里最基本最重要的组成元素,它描述流程中需要人为参与的处理,自动的处理和流程中路径的选择,分支和合并等。需要注意的是,所有流程环节定义的各种规则和条件都只有在流程执行讯问动作的时候起作用。
开始环节
开始环节是流程里的一种标志环节,在一个流程定义只能有唯一的一个开始环节。从 PetriNet 的角度来说,流程必须都是从 Place 开始的,所以开始环节映射到 PetriNet 时其实是一个 Place。
入口环节,开始环节是比较容易混淆的几个概念。入口环节指的是连在开始环节后的第一个活动环节,它肯定是被画在流程图中开始环节之后的业务环节。
开始环节的意义不仅仅在于可以让代码能更容易的理解和找到流程的“起始点”,更重要的是当一个流程有多个入口环节时,在开始环节后可以跟分支环节或者条件环节来定义多入口环节之间的逻辑关系。如下图所示
结束环节
和开始环节一样,结束环节也是流程里的一种标志环节,一个流程定义只能有唯一的一个结束环节。从 PetriNet 的角度来说,每个流程结束以后都会产生产物,所以当结束环节映射到 PetriNet 时其实也是一个 Place。
当结束环节和其他环节组成分支的时候,结束环节和其他环节之间只能是排它(XOR)的关系,也就是说要么流入结束环节,要么流入其他环节,二者同时只能选其一,如下图所示。
需要注意的是,流程运行到结束环节并不一定代表整个流程就结束了,判断流程是否结束只有一个依据,那就是所有的活动环节的待办任务是否都处理完了。
活动环节
活动环节代表企业中的一个单独的、独立的业务环节。活动环节其实就是被画在流程图里的业务环节,运行时必须由流程通过待办任务触发后才可以运行。
活动环节是在流程运行的过程中唯一可进行人工干预处理的地方。当流程运行到活动环节时就会给指定的执行者生成待办任务,并且流程的运行会停下来,等执行者以待办任务为入口打开业务环节处理业务表单后,执行者再决定流程是要继续往后运行还是要重新处理。
活动环节映射到 PetriNet 里时是一个 Activity。需要注意的是此 Activity 并非指的是业务环节。
属性
环节编码
从我的待办打开任务时,通过 this.params.activity 获取环节编码
环节名称
设置流程图上的环节名称。支持换行符\n
例如:环节名称太长,在需要换行的地方加上\n,如下图所示
运行效果如下图所示
宽度、高度
流程图中活动环节的大小不支持拖拽,默认宽度为120,高度为42,可在“宽度”属性和“高度”属性中修改
任务
处理人
设置流程环节的执行者。不设置表示整个组织都可选择
选中某个活动环节,在右侧属性面板的“基础设置”中,点击“处理人”右下角的蓝色齿轮按钮,打开组织选择对话框
系统提供常用规则、组织、组织角色、自定义规则等4种设置方式
常用规则
在常用规则中列出常用的处理人表达式
常用规则 | 说明 |
---|---|
xxx 的主管 | “选择级别”可指定向上查找的级数,级别为1时表示直接主管,主管为空会自动向上查找 |
根据组织标识查找 | 用于在业务数据中指定处理人,在“选择数据字段”中选择处理人 ID 或 FID 的列 |
拥有指定角色的组织 | 用于流转给拥有某个角色的人,在“选择角色”中选择指定角色 |
组织
从组织机构中选择固定执行者
组织角色
列出系统中定义的组织角色,参考《角色》中的组织角色。“管理范围”包括流程发起人和当前人,根据选择的组织角色,计算出管理范围对应的管理者,作为环节的处理人
自定义规则
列出系统支持的函数,通过某个函数或函数嵌套,获取组织单元 OrgUnit,作为处理人。规则中函数说明参考《流程函数》
当执行者不能通过系统提供的函数获取时,可以通过系统提供的“通过 url 获取值”getValueByUrl 方法调用一个自定义的服务,实现根据自己的规则查询处理人,getValueByUrl 用法参考《流程函数》
- 在服务中返回一个(或多个,用逗号隔开)执行者的 fid,外面嵌套 findOrgUnitsByFID 函数,可以转换为组织单元
- 返回这样的格式时 [{fid:"",fcode:"",fname:""}],外面嵌套 jsonStringToOrgUnits 函数,可以转换为组织单元
例如:处理人表达式设置如下
findOrgUnitsByFID(getValueByUrl(concat('/flow/main/flow/getmanager?fid=',currentPersonMemberFID())))
函数说明
- findOrgUnitsByFID():通过 fid(组织全路径 ID)获取对应的组织单元
- getValueByUrl():获取请求地址的返回值
- concat():字符串拼接
- currentPersonMemberFID():获取当前人的 fid
通过 ProcessControl 设置
除了在流程图中设置处理人,系统还支持在执行流程动作前,修改 ProcessControl 实现通过写代码设置处理人,参考《按数据顺序处理(工序排程)》中的设置审批人
处理人数量
设置处理人是单人还是多人,设置单人后,不允许选择多人
多人处理方式
设置多人同时处理一个待办任务时的处理方式
- 或签:一人处理后,其他人无需处理,处理包括流转和回退
- 会签:所有人都需要处理
- 顺序:依照顺序依次处理
处理人表决权重
设置处理人的表决权重,具体用法参考《环节多人处理及表决权重》
任务消息通道
系统将任务发送到企业门户首页上的两个地方,分别是“我的待办”和右上角的铃铛图标。通过设置“任务消息通道”还可以发送到门户、邮件、钉钉、企业微信、短信。
- 发送到门户,指的是发送到消息中心小部件,参考《消息中心功能》
- 发送到邮件,需要配置,参考《用户手册-中间件用户手册-系统集成-邮件集成》
- 发送到钉钉,需要配置,参考《用户手册-中间件用户手册-系统集成-钉钉集成》
- 发送到企业微信,需要配置,参考《用户手册-中间件用户手册-系统集成-企业微信集成》
- 发送到短信,需要配置,参考《用户手册-中间件用户手册-系统集成-短信集成》
环节通知
流程执行流转、回退等动作时,会产生一条条任务。这些任务显示在企业门户首页的“我的待办”里。流程在执行某些动作时,还可以给一些人发送通知。这些通知显示在企业门户首页的“我的待阅”里。例如出库申请流转后,提前给库管发送一个通知“XXX 商品即将出库,请提前准备”。这样库管可以提前准备。
通知人
通知人设置通过组织函数的方式定义通知的待阅任务的接收者。通知人表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》
通知时机
通知时机定义流程执行什么操作时,会发送通知。提供5个时机:流转、回退、转发、超期自动流转、超期自动回退
通知消息通道
系统将环节通知发送到企业门户首页上的两个地方,分别是“我的待阅”和右上角的铃铛图标。通过设置“通知消息通道”还可以发送到门户、邮件、钉钉、企业微信、短信。
- 发送到门户,指的是发送到消息中心小部件,参考《消息中心功能》
- 发送到邮件,需要配置,参考《用户手册-中间件用户手册-系统集成-邮件集成》
- 发送到钉钉,需要配置,参考《用户手册-中间件用户手册-系统集成-钉钉集成》
- 发送到企业微信,需要配置,参考《用户手册-中间件用户手册-系统集成-企业微信集成》
- 发送到短信,需要配置,参考《用户手册-中间件用户手册-系统集成-短信集成》
表单权限
表单权限定义活动环节对应的表单中的列是否只读、是否必填、是否隐藏。
选中某个活动环节,在右侧属性面板的“表单权限”中,列出工作流组件关联数据集的所有列,用于设置这些列的只读、必填、隐藏
自动执行
当流程环节处理人为以下四种情况时,可设置自动跳过当前环节执行到下一个环节,并且将此活动环节的任务状态设置为完成
- 处理人为空
- 处理人是上一环节处理人
- 处理人是上一环节处理人的父
- 自定义条件判断为真
自动执行的4个条件支持多选,在运行时当流转到此环节时,系统判断是否满足选中的条件,如果满足则会自动跳过当前环节
案例:活动环节的处理人是流程发起人时,自动跳过当前环节
活动环节的处理人为:表单字段的 fExecutorFID 列
在活动环节的高级设置中,设置自动执行的表达式:首环节发起人和活动环节处理人,进行包含判断,为真时自动执行,具体表达式如下:
in(getValueFromList(orgUnitsToOrgIDs(findActivityCreator('START')), 0),fidToID(fieldValue('fExecutorFID')))
或
inOrgUnits(fieldValue('fExecutorFID'), findActivityCreator('START'))
其中:
- in:包含于,例如:in('a', list('a', 'b'))
- inOrgUnits:判断某个组织单元是否在某个组织单元列表中
- getValueFromList:获取列表的指定项,例如获取第一项:getValueFromList(list('a', 'b'), 0)
- orgUnitsToOrgIDs:获取组织单元列表中的 ID
- fidToID:根据组织的 FID 获取组织的 ID
批处理表单字段
批处理表单字段定义批流转时,同一批次的业务表单数据同步赋值。值可以来自用户界面输入,也可以来自流程事件中设置的数据回写。
在流程设计器中,选中某个流程环节,点击“高级设置-批处理表单字段”中的蓝色齿轮按钮
打开选择数据字段窗口,勾选要批量写入数据的表单字段
从待办任务打开流程表单,在“批处理表单回写”中选中的列中输入值
点击批量流转,打开批量处理任务页面,在此页面中显示属于同一流程同一环节的待办任务,不包括当前任务。勾选待办任务,表示这些任务和当前任务一起流转,且给这些任务对应的表单数据,在“批处理表单字段”中勾选的列赋同样的值
从已办任务中,打开这几个批量流转的表单,可看到在“批处理表单字段”中勾选的列具有同样的值
禁用的流程动作
禁用的流程动作定义此流程有哪些流程动作不允许执行,如勾选回收,则此活动环节提交未处理的人不能在任务中心功能中进行回收操作。只有是此活动环节的任务时才可以起作用。
流程默认有流转、回退、回收、暂停、唤醒、终止、转发、特送流程动作,在某些业务场景下需要禁止其中的某些动作,通过设置流程动作白名单实现
- 禁止整个流程的动作
在流程上设置禁止动作,表示这个流程所有的环节都不能进行此动作的操作,在进行此操作时会提示不支持此操作。
点击流程图旁边的空白处,点击右侧属性面板的“高级设置-禁用的流程动作”,打开禁用的流程动作窗口
勾选需要禁用的动作
- 禁止流程环节的动作
在环节上设置禁止动作,表示这个环节不能进行此动作的操作,在进行此操作时会提示不支持此操作。
点击流程图中的某个环节,点击右侧属性面板的“高级设置-禁用的流程动作”,打开禁用的流程动作窗口
勾选需要禁用的动作
执行禁用动作时,提示如下图所示
超时设置
任务超时后,支持到期前提醒,到期后处理(流转、回退、终止)
到期时限,支持5种时限
- 无:表示不设置到期时限
- 间隔一定时期后到期:表示任务从开始时间到设置间隔时间后到期,支持按分钟、小时、天、周设置
- 未来某个时间到期:表示设置一个固定到期时间
- 间隔一定时期后的某个时间点到期:表示从任务开始时间到设置间隔天、周后到期时间
- 表单字段的值表示到期时间:表示从表单字段中获取设置的时间为到期时间
到期前提醒,可选
- 是否提醒
- 提醒方式:支持门户、邮件、短信、钉钉、企业微信,使用前需要配置对应第三方平台参数
- 提醒消息模板:消息模板编码,参数同任务消息模板,参考《企业微信消息卡片内容定制》
- 提前时间
- 提醒频率:支持提醒一次或者反复提醒
到期后处理,可选其一
- 到期自动流转,触发“超期自动流转”事件
- 到期自动回退,触发“超期自动回退”事件
- 到期自动终止,触发“超期自动终止”事件
如果需要回写数据,添加流程事件,通过回写数据、调用服务等方式实现
使用依赖
- 任务超时机制依赖定时调用“处理超时任务”请求
- 租户管理员添加“任务调度”和“任务调度集群服务”两个应用
- 在“任务调度”中添加定时任务,定时触发“工作流应用”的“处理超时任务”请求
流程变量
在流程中定义变量,前后端均可取值赋值,具体用法参考《流程变量》
流程事件
系统提供执行流程动作的前后事件,由开发者完成一段逻辑,具体参考《流程事件》
对话框设置
设置运行时流转对话框中签名和处理意见的显示方式,参考《流转对话框相关设置》中单个环节单独的控制
更多规则设置
- 执行规则
执行规则定义活动环节的执行者,表单地址和处理方式等信息。执行规则只有在其他环节做流转操作流入当前活动环节时才起作用,它为生成活动环节的待办任务提供素材信息,当待办任务生成了以后它就不再作用了。执行规则不是必须设置的,当它没有设置的时候会根据缺省的执行规则计算活动环节执行者和生成待办任务。执行规则的详细描述,详见《流程规则》中的执行规则。
- 转发规则
转发规则定义活动环节在做转发操作时的一些处理选项。转发规则不是必须设置的,当它没有设置的时候会根据缺省的转发规则进行转发操作。转发规则的详细描述,详见《流程规则》中的转发规则。
- 通知规则
通知规则定义活动环节在做流转,回退和转发等操作时需要通知其他人的处理选项。通知规则不是必须设置的,当它没有设置的时候就表示不需要通知。通知规则的详细描述,详见《流程规则》中的通知规则。
- 流转规则
流转规则定义活动环节在做流转操作时的一些处理选项。流转规则不是必须设置的,当它没有设置的时候会根据缺省的流转规则进行流转操作。流程规则的详细描述,详见《流程规则》中的流转规则。
- 回退规则
回退规则定义活动环节在做回退操作时的一些处理选项。回退规则不是必须设置的,当它没有设置的时候会根据缺省的回退规则进行回退操作。回退规则的详细描述,详见《流程规则》中的回退规则。
服务环节
服务环节用于调用指定的服务,通常用来实现同步更新业务数据或调用其他 WebService 等需求。当流程运行进入服务环节时并不会停下来,而是调用完服务后就直接进入下一步环节。服务环节只有在其他环节做流转操作进入它时,它才会起作用。
调用指定服务的需求当然可以在流程事件中实现,但是服务环节的好处在于可以从流程的图上看出有一个明显的处理环节。
服务环节本质上也属于“处理”,所以映射到 PetriNet 的 Activity(处理)。
具体服务调用可参考《流程事件》下“事件处理方式->服务请求”。
条件分支环节
条件分支环节虽然和条件环节一样是通过条件表达式的方式来描述路径是否畅通的环节。但是条件分支环节和条件环节有着本质上的不同,条件分支环节无论条件表达式怎么设置其实它一直都是畅通的,条件表达式只是用来选择它要从哪个输出流出而已。条件分支环节只允许有两个输出,一个输出用来定义是当条件表达式计算结果为真(true)时走的路径,另外一个则用来定义条件表达式结果为假(false)时走的路径。条件分支只有在其他环节做流转操作流入它时,它才起作用。
条件分支环节本质上属于“处理”,所以映射到 PetriNet 里时是多个 Activity 的组合,如图所示。
- 条件
使用条件表达式的方式选择输出,条件表达式计算结果为真(frue)就流入条件为真的输出,反之就流入条件为假的输出。条件是必须设置的属性,如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
- 条件为真的输出
条件为真的输出上的属性值只能从与条件分支直接连接的输出的环节中选择。用来标识条件表达式计算结果为真(true)时要走的输出路径。它的选择范围是直接连在条件分支环节后的环节。条件为真的输出此属性是必须设置的。
- 条件为假的输出
条件为假的输出上的属性值只能从与条件分支直接连接的输出的环节中选择。用来标识条件表达式计算结果为假(false)时要走的输出路径。它的选择范围是直接连在条件分支环节后的环节。条件为假的输出此属性是必须设置的。
条件环节
条件环节就是通过定义条件表达式的方式描述环节能否激活,从而控制路径是否畅通的环节,类似公路上的红绿灯。条件环节采用条件表达式的方式,根据表达式计算结果来控制流程能流入哪些环节,不能流入哪些环节。条件环节只有在其他环节做流转操作流入它时才起作用,如果条件表达式计算结果为 true,则表示“此路畅通”可以直接经过条件环节后进入到下一步环节,反之则不能经过。那么,在活动环节前加一个条件环节和直接设置活动环节的条件属性,两者是等价的。
条件环节本质上属于“处理”,所以映射到 PetriNet 里时是 Activity
条件使用表达式的方式定义条件环节满足什么条件才可以被激活,激活的意思进入。条件环节的条件属性上定义的表达式只有在其他环节做流转操作流入当前条件环节时计算,计算结果为 true 则表示“此路畅通”直接进入下一步环节,计算为 false 则表示“此路不通”而不能进入下一步环节。条件是必须设置的属性,如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
会签环节
连接线用来描述环节间的前后顺序,而环节间的逻辑关系则是使用逻辑环节(XOR 或 AND)来描述。在流程中,逻辑环节有会签 AND 环节和或签 XOR 环节。它们都可以用来做分支和做合并,描述环节间的协作和同步的关系。
AND 环节有两种模式分别为分支模式和合并模式,当它有多个输出时即为 AND 分支,当它有多个输入时即为 AND 合并。AND 环节可以同时具有多个输入和多个输出,即同时处于 AND 分支和 AND 合并下,也可以只单独处于分支模式或者单独处于合并模式。
AND 环节映射到 PetriNet 里时是一个 Activity。
- AND 分支
AND 分支表示所有输出路径中只要是畅通的路径就必须都走。从使用上说,只要经过 AND 分支系统就会默认把所有畅通的输出都默认选上,并且在流转对话框中不能取消选择,以达到 AND 分支的目的。从待办任务的角度来说是把待办任务进行了拆分,一条待办任务在经过 AND 分支以后就拆分成了多条待办任务,每条待办任务都可以做各自独立的流转和回退操作。
AND 分支其实本质就是一个待办任务拆分的过程。它和执行规则中多个执行者同时处理一条待办任务的不同点在于,多个执行者同时处理一条待办任务时执行者间具有协作关系的,而 AND 分支是把待办任务拆分到后续多个活动环节了,除非是遇到 AND 合并,要不然多个活动环节间是不具备任何协作关系的。AND 分支后的每个活动环节的执行者都会收到在活动环节间各自独立的待办任务。毫无疑问这种待办任务拆分也只有在其他环节做流转操作,流入 AND 分支时才起作用的。
分支规则是对 AND 分支的一些特殊情况的处理,例如在 AND 的三个输出中只有两个是必选的,而另外一个选不选要用户自己决定。分支规则不是必须设置的属性,当它没有设置时会默认按照 AND 分支每个都是必须走的原则来处理。分支规则的详细说明参考《流程规则》中的分支规则。
- AND 合并
AND 合并表示它所有的输入路径中只要有可能流入到 AND 环节中的待办任务,那就必须等到全部都流入 AND 环节了以后把所有流入的待办任务合并成一条待办任务,流程才可以继续运行到下一步环节。从待办任务的角度来说 AND 合并进行了待办任务的合并,多条待办任务经过 AND 合并以后就合并成了一条待办任务往下走,AND 合并的后序的活动环节只会收到一条待办任务。
AND 合并其实本质就是一个待办任务合并的过程,一般都和 AND 分支配对使用。当流程运行经过了 AND 分支以后,同时给多个活动环节生成了待办任务,每个待办任务可以独立流转和回退,只有在经过 AND 合并以后多个待办任务才会又合并成一个待办任务继续运行。
在 AND 合并的多个输入中,有可能有的输入的待办任务会先流转到 AND 合并,有的则后到。这时的处理原则是,先到达 AND 合并的待办任务需要等待其他尚未到达 AND 合并的待办任务,直到已经没有待办任务会流入 AND 合并时才允许通行到它的下一步环节。
合并规则是对 AND 合并多个输入之间的逻辑规则,描述什么情况下才进行待办任务的合并。例如某些重要的主要的输入先达到 AND 合并,那就可以不需要等待其他次要输入了。而次要的输入先到达就必须要等待主要的输入达到后才可以流入到下一环节。合并规则不是必须设置的属性,当它没有设置时会按照 AND 合并的所有输入都是必须的原则来处理。合并规则详细描述参考《流程规则》中的合并规则。
或签环节
逻辑环节中的 AND 环节所描述的是环节之间的同时同步的关系,或者叫并发关系。XOR 环节则描述的是环节间的独立排它的关系。
XOR 环节有两种模式分别为分支模式和合并模式,当它有多个输出时即为 XO R分支,当它有多个输入时即为 XOR 合并。XOR 环节可以同时具有多个输入和多个输出,即同时处于 XOR 分支和 XOR 合并下,也可以只单独处于分支模式或者单独处于合并模式。XOR 环节同样也只有在其他环节做流转操作流入 XOR 环节时起作用。
XOR 环节映射到 Pertri Net 里时是一个 Place。
- XOR 分支
XOR 分支表示 XOR 环节所有输出的畅通的路径中只能同时走其中唯一的一条路径。从使用的角度来说,流程运行经过 XOR 分支会在所有畅通的输出中缺省选出其中当一条路径作为默认流出,同时在流转对话框中用户也可以更改默认选择,但是流转对话框限制了同时只能选中一个输出来保证 XOR 分支的特性。
当前待办任务经过 XOR 分支以后还是一条待办任务,所以经过 XOR 分支不会造成待办任务的拆分。
- XOR 合并
XOR 合并表示 XOR 环节所有输入中任何一个输入达到 XOR 环节都可以接通行到流入下一环节。
当前待办任务经过 XOR 合并以后还是一条待办任务,所以本质上 XOR 合并不会造成任何待办任务之间的等待或合并。
子流程环节
子流程示例参考《子流程》
子流程运行效果
在主流程中使用子流程环节实现子流程,流程图及运行效果大致描述如下
在一个流程(主流程)中触发另一个流程(子流程),触发后主流程暂停,子流程结束后,主流程自动唤醒。
在主流程的流程图中,点击子流程环节
显示子流程的流程图
子流程业务数据
主子流程之间存在数据联系,有如下两种情况
- 主流程的业务数据中记录子流程的业务主键
例如:主流程业务数据
主键 | 列1 | 列2 | 子流程业务主键 |
---|---|---|---|
01 | 101 | ||
02 | 101 | ||
03 | 102 |
子流程业务数据
主键 | 列3 | 列4 |
---|---|---|
101 | ||
102 |
- 子流程的业务数据中记录主流程的业务主键
例如:主流程业务数据
主键 | 列1 | 列2 |
---|---|---|
01 | ||
02 |
子流程业务数据
主键 | 列3 | 列4 | 主流程业务主键 |
---|---|---|---|
101 | 01 | ||
102 | 01 | ||
103 | 02 |
启动子流程时,系统生成子流程环节的任务数据,不会生成业务数据
- 如果已有业务数据
- 在子流程环节的业务主键中配置子流程业务主键,当打开子流程表单时,流程组件自动过滤业务数据
- 如果没有业务数据
- 在子流程环节的业务主键中配置子流程业务主键,当打开子流程表单时,新建业务数据,新建数据的主键会使用子流程业务主键
- 在子流程环节的业务主键中配置主流程业务主键,通过主流程业务主键,查找子流程业务主键
- 找到子流程业务主键,使用此值,当打开子流程表单时,新建业务数据,新建数据的主键会使用子流程业务主键
- 未找到子流程业务主键,生成一个 UUID 作为子流程业务主键,当打开子流程表单时,新建业务数据,新建数据的主键会使用子流程业务主键
通过主流程业务主键,查找子流程业务主键
- 使用目的:
- 当主流程再次执行到子流程环节时,可以获取到相同的子流程业务主键
- 使用前提:
- 主流程和子流程的业务数据是一对一的关系
- 使用方法:
- 使用“根据流程上下文生成业务主键”函数,该函数有两个参数
- 主键字段:选择子流程主数据的主键字段
- 存储流程上下文业务主键的字段:选择子流程主数据中存储主流程业务主键的字段
- 查找过程
- 查询子流程业务数据
- 查询条件为“存储流程上下文业务主键的字段”等于“主流程业务主键”
- 查询列为“主键字段”
- 结果处理
- 能查到,就使用查询结果
- 查不到,则生成一个 UUID 作为子流程业务主键
- 查询子流程业务数据
- 使用“根据流程上下文生成业务主键”函数,该函数有两个参数
子流程环节设置
子流程环节定义当流程进入此环节时,会启动一个指定的子流程。子流程环节本质是一个业务环节,它比业务环节多了以下属性
- 动态子流程:
- 通过表达式计算出使用哪个流程作为子流程,具体使用参考《子流程》中的动态子流程
- 默认子流程:
- 选择一个流程作为子流程
- 子流程启动方式:
- 取值范围为自动、手动,默认值是自动
- 自动:子流程会自动启动
- 手动:子流程不会自动启动。由用户调用启动子流程。通常在流程结转时设置为手动启动。流程结转是指多个主流程实例在某个子流程环节需要合并为一个子流程的场景。具体使用参考《子流程》中的流程结转
- 异步执行:
- 取值范围为是、否,默认值是否
- 同步:子流程启动时,主流程暂停
- 异步:子流程启动时,主流程继续执行
- 子流程结束后自动流转:
- 取值范围为是、否,默认值是否
- 是:子流程结束后,主流程自动流转到下一个环节
- 否:子流程结束后,主流程还是处于子流程环节
- 业务主键:
- 传递给子流程的一个参数,通常用于传递业务主键
- 传递主流程的业务主键:为空即可,为空表示传递主流程的业务主键
- 传递子流程的业务主键,支持单值和多值(逗号分隔),单值只会启动一个子流程,多值会启动多个子流程
- 业务主键名称:
- 传递给子流程的第二个参数(第一个是业务主键),跟业务主键是一一对应的,即同为单值或多值
- 执行规则:
- 可设置执行人不允许修改
子流程设置
用作子流程的流程,需要如下的一些配置项
- 业务主键:和子流程环节中设置的业务主键配合使用
- 如果子流程环节中设置的业务主键是主流程的业务主键
- 子流程使用主流程的业务主键,则设置为“流程上下文中的业务主键”
- 子流程使用主流程的业务主键查找子流程的业务主键,则设置为“根据流程上下文生成业务主键”
- 如果子流程环节中设置的业务主键是子流程的业务主键
- 设置为“流程上下文中的业务主键”
- 如果子流程环节中设置的业务主键是主流程的业务主键
- 首环节处理人
- 设置为“流程上下文中的执行者”
- 流程启动后事件,用于流程结转场景
- 绑定子流程,选择一个存储"主流程业务主键"的列,支持使用主表的 ID 列表字段,或从表的 ID 列(系统自动转换为 ID 列表),系统给这些主流程设置子流程
子流程页面
在页面中,流程组件提供“获取流程上下文中的业务主键”方法,用于获取在主流程中子流程环节上设置的业务主键