流程规则
流程规则定义流程的处理人,各种操作的处理选项和通知等信息。为了支持复杂流程,所有流程规则都是可以设置多条的,在流程运行的时候根据设置的生效条件和规则的排列顺序计算出唯一的一条生效的规则。也就是说相同类型的流程规则在同一时刻只有唯一的一条可以生效。
流程规则的计算一般都在调用讯问相关的流程动作时计算,计算时根据流程规则定义的顺序一条一条的计算,当找到一条可以生效就不再往下计算了。
作用范围
流程规则
在流程上设置的规则,用于整个流程。点击流程图旁边的空白处,点击右侧属性面板的“高级设置-更多设置”,打开流程设置窗口,设置流程的启动规则和通知规则
环节规则
在环节上设置的规则,用于当前环节。点击流程图中的某个环节,点击右侧属性面板的“高级设置-更多设置”
打开规则设置窗口,设置环节的执行规则、转发规则、通知规则、流转规则和回退规则
规则种类
启动规则
启动规则是定义在流程上的,当调用 startProcessQueryAction 动作启动流程时,为流程实例数据做初始化的规则定义。在启动规则里一般做一些流程实例的标题,限制时间的初始化,但是其实启动规则可以对流程实例所属的数据库表 SA_Task 的所有字段赋值。
启动规则只有在调用 startProcessQueryAction 时生效,而以后流程运行中就不再起作用了。所以当流程运行中业务数据值发生改变时这里是不会自动跟着变的,而只能写代码主动去刷新。
- 生效条件
生效条件使用表达式的方式定义规则满足什么条件才起作用。生效条件里定义的表达式最终计算结果必须是真(true)或假(false)。生效条件属性是必须设置的,如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
- 任务标题
任务标题使用表达式的方式定义流程实例的标题。任务标题里定义的表达式最终计算结果必须是一个字符串,如果定义常量则也需要使用单引号引起来。任务标题属性不是必须设置的,当没有设置时默认使用流程的标题作为流程实例的标题。任务标题表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
流程实例的标题最重要的作用是被用来生成各个活动环节的待办任务标题和通知的待办任务标题,如果把业务单据的制单人姓名和单据编号生成到流程实例的标题中,则此所有通知和活动环节的待办任务就可以很容易通过标题就区分开来。
任务标题最终被存入流程实例所属库表 SA_Task 的 sName 字段中。
- 表单地址
表单地址定义一个流程关联的表单,每个活动环节的执行规则上也可以设置表单地址。区别在于启动规则中设置的是整个流程实例的,执行规则中设置的是此环节的任务打开的表单地址,如果执行规则中没有设置默认就用启动规则中设置的表单地址。
表单地址最终被存入通知的待办任务所属的库表 SA_Task 的 sEURL 字段中。
- 示例
在启动规则时,设置流程标题,在待办任务中可看到设置的流程标题
通知规则
通知规则用于当流程在运行的过程中做了某个操作而需要通知有关人时。通知规则里定义通知接收人,接收人的处理方式等信息。当通知规则定义于流程自身上时是根据一些流程级别的操作生效,而当通知规则定义于活动环节上是就根据活动环节级别的一些操作来生效。
- 生效条件
生效条件使用表达式的方式定义规则满足什么条件才起作用。生效条件里定义的表达式最终计算结果必须是真(true)或假(false)。生效条件属性是必须设置的,如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
- 通知确认
在执行操作的过程中如果产生通知的话,是否需要弹出对话框,使当前用户可以手工修改一下通知的接受者或者通知的属性。当通知规则设置于活动环节上时是否要弹出流转对话框由活动环节上的流转规则和回退规则来确定,通知规则里的通知确认不起作用。由于流转而引发的流程结束时通知也一样流转规则确定是否弹出对话框。
- 通知时机
通知时机定义流程执行什么操作时通知规则才起作用。它其实和生效条件意义是一样的,都是为了定义满足什么条件通知规则才起作用。在流程运行时,通知时机被转换成条件表达式使用 isExecutionAction 函数来判断目前正在调用的流程动作,和生效条件一起决定通知规则是否起作用。
流转时通知是只有通知规则被定义在活动环节上时才有的属性。它表示在活动环节上做流转操作时通知规则才起作用。流转时通知其实是判断当前调用的流程动作是否是 advanceProcessQueryAction 动作。
回退时通知是只有通知规则被定义在活动环节上时才有的属性。它表示在活动环节上做回退操作时通知规则才起作用。回退时通知其实是判断当前调用的流程动作是否是 backProcessQueryAction 动作。
结束时通知是只有通知规则被定义在流程上时才有的属性。它表示整个流程实例结束时通知规则才起作用。结束时通知其实是判断当前调用的流程动作是否是 finishProcessAction 动作,此流程动作在做流转操作时如果流程实例可以被结束就会被自动触发,当然了也可以外界主动的调用它结束流程。
终止时通知是只有通知规则被定义在流程上时才有的属性。它表示执行流程终止操作时通知规则才起作用。结束时通知其实是判断当前调用的流程动作是否是 abortProcessQueryAction。
转发时通知可以定义在流程或活动环节上。它表示执行流程转发操作时通知规则才起作用。转发时通知其实是判断当前调用的流程动作是否是 transferTaskQueryAction。
- 通知标题
通知标题使用表达式的方式定义生成通知的待办任务的标题。任务标题里定义的表达式最终计算结果必须是一个字符串,如果定义常量则也需要使用双引号引起来。任务标题属性不是必须设置的,当没有设置时默认使用“通知:”加流程实例的标题作为通知的待办任务的标题。通知标题表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
通知标题表达式计算结果的值,最终被存入通知的待办任务所属的库表 SA_Task 的 sName 字段中。
- 是否需要保存
当前通知中选择的信息是否保存,以供下次使用。
- 限制时间
限制时间定义通知接收者在指定的时间点一起必须要把通知的待办任务处理掉。限制时间里定义的表达式最终计算结果必须是一个日期时间类型的值,一般是根据当前日期加上几天来定义通知的待办任务必须在几天内处理完。限制时间表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
限制时间属性的计算结果将被存入通知的待办任务的限制时间属性里,基于这个可以做一些自动的处理,例如超过限制时间自动结束,自动提醒和自动催办等。
限制时间表达式计算结果的值,最终被存入通知的待办任务所属的库表 SA_Task 的 sLiimitDate 字段中。
- 表单地址
表单地址定义通知的待办任务的接受者使用表单页面打开待办任务。
表单地址最终被存入通知的待办任务所属的库表 SA_Task 的 sEURL 字段中。
- 打开时自动完成
打开时自动完成定义通知的接收者收到待办任务以后,在待办页面或者任务中心打开待办任务时立即把待办任务的状态设置为已结束(tesFinished)。本质上打开待办任务的时候其实是调用了 executeTaskAction 流程动作,在此流程动作里去结束当前待办任务。
打开时自动完成属性如果设置上,那最终其实是把通知的待办任务所属的库表 SA_Task 中的字段 sExecuteMode2 的值设置为 finishWhenOpen。在调用 executeTaskAction 流程动作时判断此标记更新待办任务的状态。
- 当流出到此环节时
当流出到此环节时通知属性是只有通知规则在活动环节上定义时才会起作用的,和通知时机一样用来决定通知规则在什么时候起作用。例如某个活动环节后续有多个环节,那么可以定义只有流出到其中某个环节时才需要通知,否则不通知。此属性的取值范围是直接连在活动环节后的活动环节。当流出到此环节时不是必须设置的,当它没有设置是就表示流入任意环节都产生通知。
当流出到此环节时通知属性一般用在某个活动环节后既有结束环节又有其他环节时,只想流出到结束时产生通知,而流入其他环节则不产生通知,此时属性值的就可以设置成结束环节。
- 处理人设置
处理人设置通过组织机构范围函数的方式定义通知的待办任务的接收者的可选范围和默认选择的接收者。处理人表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
处理人不仅仅指人员成员,还可以是机构,部门和岗位。也就是说,待办任务不仅仅可以发给人,还可以发给机构,部门和岗位等属于“组织”的组织单元。当待办任务是发给组织时,此组织下的所有人员成员都会收到待办任务,这些人员成员根据待办任务上定义的执行模式来处理待办任务。
处理人类型定义的是在流转对话框中用户可以选择什么类型的组织节点。此属性和其他属性没有任何关系,而仅仅作用于流转对话框。如果不弹流转对话框,则它就没什么意义。
处理人表达式通过组织机构函数的方式定义通知的默认接收者。实际流程运行时,不管是否有弹出流转对话框默认接收者都是起作用的,都会给默认接收者生成通知的待办任务。处理人表达式的计算结果必须是组织单元的列表,其表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
处理人范围表达式通过组织机构函数的方式定义通知的接收者的最大的可选范围。处理人范围表达式的计算结果一般只在流转对话框里使用,用它来确定流转对话框中组织机构树的显示和选择范围。如果它的计算结果是一个组织则流转对话框会默认显示组织下的人员成员。处理人范围表达式的计算结果必须是组织单元的列表,其表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
如果最大的接收者可选范围和默认选择接收者一样的或者不需要流转对话框时,就把处理人表达式和处理人范围表达式设置成一样就可以避免重复组织机构表达式计算造成速度慢。
执行规则
执行规则用于定义活动环节的处理人,处理人可选范围,待办任务属性和处理方式等信息。执行规则是在其他环节做流转动作(且只有在做流转动作)流入当前活动环节时起作用的,在给当前活动环节计算处理人且生成了待办任务以后执行规则就不再起作用了。
- 生效条件
生效条件使用表达式的方式定义执行规则满足什么条件才起作用。生效条件里定义的表达式最终计算结果必须是真(true)或假(false)。生效条件属性是必须设置的,如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
首环节执行规则的生效条件默认为 isStartingProcess(),其他环节默认为 true。
- 任务标题
任务标题使用表达式的方式定义生成活动环节的待办任务的标题。任务标题里定义的表达式最终计算结果必须是一个字符串,如果定义常量则也需要使用双引号引起来。任务标题属性不是必须设置的,当没有设置时默认使用当前活动环节的标题加“:”号再加流程实例的标题作为当前待办任务的标题。任务标题表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
任务标题表达式的计算结果,最终是被存入到活动环节的待办任务所属库表 SA_Task 中的字段 sName 上的。
- 表单地址
表单地址定义此环节的任务打开的表单地址,如果没有设置默认用的启动规则中设置的表单地址。
表单地址最终被存入通知的待办任务所属的库表 SA_Task 的 sEURL 字段中。
- 限制时间
限制时间定义活动环节的处理人在指定的时间点必须要把活动环节的待办任务处理完毕。限制时间里定义的表达式最终计算结果必须是一个日期时间类型的值,一般是根据当前日期加上几天来定义待办任务必须在几天内处理完。限制时间表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
限制时间表达式的计算结果,最终是被存入到活动环节的待办任务所属库表 SA_Task 中的字段 sLimitDate 上的。
- 处理人设置
处理人设置通过组织机构范围函数的方式定义活动环节的待办任务的处理人可选范围和默认选择的处理人。处理人表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
处理人不仅仅指人员成员,还可以是机构,部门和岗位。也就是说,待办任务的不仅仅 可以发给人,还可以发给机构,部门和岗位等属于“组织”的组织单元。当待办任务是发给组织时,此组织下的所有人员成员都会收到待办任务,这些人员成员根据待办任务上定义的执行模式来处理待办任务。
处理人类型定义的是在流转对话框中用户可以选择什么类型的组织节点。此属性和其他属性没有任何关系,而仅仅作用于流转对话框。
处理人表达式通过组织机构函数的方式定义活动环节的默认处理人。实际流程运行时,不管是否有弹出流转对话框默认处理人都是起作用的,都会给默认处理人生成待办任务。处理人表达式的计算结果必须是组织单元的列表,参考《流程表达式》。
处理人范围表达式通过组织机构函数的方式定义活动环节的处理人的最大的可选范围。处理人范围表达式的计算结果一般只在流转对话框里使用,用它来确定流转对话框中组织机构树的显示和选择范围。如果它的计算结果是一个组织则流转对话框会默认显示组织下的人员成员。
一般情况下,如果处理人范围和默认处理人一样的或者不需要流转对话框的话,就把处理人表达式和处理人范围表达式设置成一样。
- 任务协作
任务协作定义如何给任务的接收者生成待办任务,是多个接收者一起一条待办任务还是每个接收者一条待办任务,以及接收者应该如何来处理待办任务。
任务分配模式定义给处理人生成待办任务的模式。共同分配就是给所有处理人生成一条待办任务,那么只有等所有处理人都处理完成或被其中一个处理人抢占处理完成后此待办任务才算结束,才可以进行流转回退等操作。独立分配就是给每个处理人都生成一条待办任务,它们各自独立互不影响。每个处理人都可以把自己的结束待办任务处理完成后进行流转和回退等操作。部门间独立分配指的是给属于同一个部门的处理人生成同一条待办,用于在只有在部门之间要求待办任务互相独立的需求时,各部门下的人员成员都处理完成或者被某个一个人员成员抢占处理完成后自己部门的待办任务就结束,但不影响其他部门的。机构间独立分配和组织间独立分配的意思和部门间独立分配是一样的。
任务执行模式定义每一条待办任务内的处理人处理待办任务的方式,执行模式最终被存入到待办任务所属库表 SA_Task 的 sExecuteMode 字段中。抢占模式(temPreempt)表示待办任务的所有处理人中根据抢占模式只有一个处理人能抢到此待办任务进行处理,那么在抢的同时把其他处理人状态都设置为取消(tesCanceled)。同时模式(temSimultaneous)指的是待办任务中所有处理人都可以处理此待办任务,当所有处理人都处理完毕或者当控制者处理完毕了以后,待办任务才可以做流转和回退等操作。顺序模式(temSequential)指的是待办任务的处理人可以按照一定顺序来处理此待办任务,顺序是由处理人表达式里返回的组织单元顺序或者在流转对话框中选择处理人的顺序来确定的,当生成待办任务时只有第一个处理人的状态是待办(tesReady),其他处理人状态都是等待中(tesSleeping),等第一个处理人处理完毕以后才把第二个处理人的状态设置为(tesReady),以此类推到所有处理人都处理完毕后待办任务才可以做流转或回退操作。任务执行模式最终被存到待办任务的执行模式属性里了。
任务抢占模式定义当任务执行模式为抢占时,待办任务处理人做什么操作可以抢到待办任务。打开时抢占(tpmOpen)是指谁先打开待办任务就算谁的,其实就是在执行 executeTaskAction 时执行抢占操作。处理时抢占(tpmExecute)是指谁先做流转,回退或者转发等待办任务操作就算谁的。抢占是把除当前操作者以外的其他所有处理人的状态都设置为取消(tmsCanceled)。任务抢占模式最终被存到待办任务的执行模式属性里了。
- 任务属性
任务属性是用来在生成活动环节的待办任务时给它的属性赋值的,其实任务标题和限制时间本质上都是给待办任务的属性赋值,把它们单独拿出来配置是出于方便性的考虑。任务属性可以给待办任务的任意属性赋值,只要指定属性名和对应的值表达式即可。在通知时会把所有任务属性里的属性的计算结果存入到待办任务对应的各个属性中。
任务属性一般用来给用户扩展的或者默认没有提供配置选项的属性赋值。
由于待办任务本质上也是存入任务表的,所以任务属性这里属性名的选择范围就是库表 SA_Task 下的所有字段。
- 打开后自动流转
打开后自动流转设置此活动环节的待办任务打开后自动流转到下个环节,不需要手动执行流转操作。
- 处理人为空时自动执行
处理人为空时自动执行设置后当流转到此活动环节时根据执行规则中设置的处理人表达式计算出处理人为空时不自动流转到后续环节,并且将此活动环节的任务状态设置为完成。
流转规则
流程运行中当某个活动环节处理完毕以后要流到下一步去,即为流转。顾名思义流转规则就是在当前活动环节做流转操作时生效的规则,这来的流转操作指的是 advanceProcessQueryAction 动作。它定义的是当前活动环节调用 advanceProcessQueryAction 动作时的一些选项,例如是否需要弹出流转对话框等。
需要注意的是,流转到下一步是哪些环节和是哪些处理人则由环节间的关系和下一步活动环节的执行规则来定的。
- 生效条件
生效条件使用表达式的方式定义流转规则满足什么条件才起作用。生效条件里定义的表达式最终计算结果必须是真(true)或假(false)。生效条件属性是必须设置的,如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
- 流转确认
流转确认定义活动环节在做流转操作时,是否需要弹出流转对话框。如果直接调用 advanceProcessAction 流程动作实现流转操作,则此选项是不起作用的。只要是流转操作,则在流转规则上的流转确认起着决定性的作用,不管引发它通知的通知规则里是怎么设的,都以这里的为准。
- 允许跳转
允许跳转定义活动环节在做流转操作时,是否允许抛弃原有流转而跳转入其他后续环节。允许跳转仅仅作用于需要流转对话框时,如果允许跳转则在流转对话框里就会显示跳转页面进行跳转选择,否则不显示。
在流转对话框中跳转的选择范围是当前活动环节后的任意活动环节。由于跳转本身就属于一种特殊情况,所以跳转到当前活动环节的后续环节时,这些后续环节的执行规则是不起作用的,处理人也只能从整个组织机构中任意选择。
对于流程动作来说,不管此属性如何设置其实都是支持跳转的,只要能构造出 ProcessControl 就可以了。
- 是否需要保存
当前流转动作中选择的信息是否保存,以供下次使用。
- 强制流转
强制流转定义在活动环节做流转操作时,是否忽略存储于待办任务中的执行模式而直接可以进行流转或回退操作。其实只有在执行模式设置为同时或顺序,并且当前处理人不是待办任务的最后一个处理人或不是控制者时此属性才起作用。强制流转就是待办任务的任意处理人都可以做流转操作,否则就要收到执行模式的约束。
强制流转以后,把其他尚未处理完成的处理人的状态都设置为取消(tmsCanceled)。类似于做了抢占处理一样。
- 任务等待
任务等待的基础是任务分支。在流程中有两种情况会造成任务分支,第一种是经过了 AND 分支,而第二种则是在某个活动环节上的执行规则中任务分配模式被设置为独立分配。流程中的待办任务在某个点分支以后,可以理解为在流程中出现了多条线路并行处理。
任务等待就是定义当前待办任务流转时是否需要等待其他有可能流入当前活动环节的待办任务,如果需要任务等待且确实还有其他待办任务可能流入当前活动环节,则流转操作只是把当前待办任务状态设置为已结束(tmsFinished)而并不实际往下流转到下一步,反之如果已经没有可能流入当前活动环节的其他待办任务了,那就把当前待办任务和其他已经结束而尚未实际流转的待办任务一起流转。
任务等待会造成当前环节的下一步活动环节同时收到多条待办任务,因为流转操作时可能以前已经有待办任务结束了但尚未实际流转,而流转操作会把此类待办任务和当前的待办任务一起流转。本质上和这些待办任务单个单独的流转是没有区别的。
- 任务合并
在流程中有两种情况会造成任务合并,第一种就是经过了 AND 合并,而第二种则是这里的任务合并。任务合并是要以任务等待为基础的,如果已经没有可能流入当前环节的待办任务了,那就把当前待办任务和其他已经结束但没有流转的待办任务一起流转,但后续每个活动环节只会收到一条待办任务。
- 任务分支环节
需要任务等待的时候,流程引擎会自动计算待办任务是从哪个环节开始分支的,确定一个分支环节到当前环节的范围,根据范围内的待办任务参与任务等待和任务合并的计算。但是自动计算出来的就分支环节未必是百分支百严格,所以任务分支环节用于配置当自动计算结果不严格是可以手工指定待办任务发生分支的环节。
任务分支环节可以是一个活动环节也可以是一个 AND 分支。
回退规则
流程运行中在某个活动环节由于某种原因不能继续发流到下一步,而需要发回给上一步重新处理既为回退。顾名思义流转规则就是在当前活动环节做回退操作时生效的规则,这里的回退操作指的是 backProcessQueryAction 动作。它定义的是当前活动环节调用 backProcessQueryAction 动作时的一些选项,例如是否需要弹出流转对话框等。
需要注意的是,回退操作是把待办任务再发给曾经经过的活动环节,所以给曾经经过的活动环节生成新的待办任务的依据不再是这些活动环节上定义的执行规则,而是这些活动环节当初用来流转的待办任务。曾经的待办任务由谁处理就把新待办任务发给谁,并且执行模式,抢占模式等一些属性都从旧待办任务上直接拷贝到新待办任务里的。
- 生效条件
生效条件使用表达式的方式定义执行规则满足什么条件才起作用。生效条件里定义的表达式最终计算结果必须是真(true)或假(false)。生效条件属性是必须设置的,如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
- 是否需要保存
当前回退动作中选择的信息是否保存,以供下次使用。
- 回退确认
回退确认定义活动环节在做回退操作时,是否需要弹出回退对话框。如果直接调用 backProcessAction 流程动作实现回退操作,则此选项是不起作用的。只要是回退操作,则在回退规则上的回退确认起着决定性的作用,不管它引发通知的通知规则里是怎么设的,都以这里的为准。
- 强制回退
强制回退定义活动环节在做回退操作时,是否忽略存储于待办任务中的执行模式而直接可以进行回退操作。其实只有在执行模式设置为同时或顺序,并且当前处理人不是待办任务的最后一个处理人或不是控制者时此属性才起作用。强制回退就是待办任务的任意处理人都可以做回退操作,否则就要受到执行模式的约束。
强制回退以后,把其他尚未处理完成的处理人的状态都设置为取消(tmsCanceled)。类似于做了抢占处理一样。
- 按原路返回
在活动环节上做回退操作了以后,把待办任务发给某个活动环节曾经的处理人。那么此处理人处理完成了以后是把待办任务直接再发给退来的环节呢,还是根据流程定义把待办任务再重新一步一步流到退来环节。如图所示,途中虚线表示回退和回退后的流转,左边是按原路返回,右边是重新一步一步流到退来环节。
按原路返回指的就当前活动环节的待办任务回退以后,要求待办任务的处理人处理完成以后就把待办任务再直接发回来,而不要再重新流一次。按原路返回最终是把发给对方的待办任务所属的库表 SA_Task 的字段 sExcuteMode2 赋值为 flowToFront。再对方做流转操作时,根据此关系的的值作为依据就可以知道流转操作的目标。
如果当前活动环节处于一个 AND 分支中的,并且回退操作的目标活动环节处于 AND 分支外。当指定了按原路返回属性时,回退操作不会吧 AND 分支中的其他待办任务取消。否则就默认取消 AND 分支中的其他待办任务。本质在于如果待办任务曾经经过了分支处理,回退操作时的目标活动环节超过了分支范围的话,做回退操作时按原路返回属性不会导致其他分支范围内待办任务的取消。否则就会取消分支范围内的其他待办任务。
如果当前活动环节是需要多人处理的,并且执行模式是同时或顺序时。执行回退操作时按原路返回属性不会导致其他分支范围内待办任务的取消。否则就会取消分支范围内的其他待办任务。
- 回退范围
回退范围定义活动环节在做回退操作时,可以退到曾经经过的活动环节中的哪些环节。回退范围的选择范围是当前活动环节前序的所有活动环节,此属性是必须设置的。
前序人指的是退给当前待办任务的前一个待办任务的处理人。需要注意的是当前待办任务的前一个待办任务未必就是当前活动环节的前一个活动环节的待办任务。例如当前待办任务是转发过来的,那么当前待办任务和前一个待办任务就属于同一个活动环节。
前序环节指的是退给当前待办任务所属活动环节的前一个活动环节的待办任务的处理人。如果当前活动环节的前面有多个活动环节相连,例如 AND 合并后的活动环节,则可以任意选择其中活动环节的处理人回退。
首环节指的是退给流程启动时生成待办任务的活动环节的处理人。首环节一般都是指入口环节,但是并不一定是入口环节,因为流程其实可以把任意活动环节作为入口环节。
指定环节指的是退给指定的某个前序环节的处理人。指定环节可以是单个或者多个,但是都必须是当前活动环节的前序环节。当指定的是多个环节时,可以从其中任选一个退给它的处理人。
所有前序环节指的是回退时把当前待办任务所有曾经经过活动环节都列出来,任选其中一个退给它的处理人。
转发规则
流程运行中某个活动环节的处理人无法决定要怎么处理,或者需要先把待办任务发给其他人看看然后再做处理即为转发。转发规则就是在当前活动环节做转发操作时生效的规则,这里的转发操作指的是 transferTaskQueryAction 动作。它定义的是当前活动环节调用 transferTaskQueryAction 动作时的一些选项,例如是否需要弹出流转对话框等。
转发和流转区别在于,流转是把待办任务发给了下一步活动环节的处理人,流程的当前活动环节和处理人都变了。而转发虽然也把待办任务流给了其他处理人,但是流程的当前活动环节没有发生改变。
转发规则的属性配置和执行规则一摸一样,所以转发规则的详细信息请参考执行规则的详细信息。
分支规则
合并规则是定义在 AND 分支上用来定义 AND 分支的多个输出之间的关系的。分支规则是在 AND 分支前的活动环节做流转操作时起作用的。例如某个活动环节后的 AND 分支后有3个活动环节,在此活动环节流转时想要做到其中2个活动环节是必须选择的,剩下1个活动环节是否选择由用户自己定。在分支规则中描述,用户自己决定的活动环节为可选输出,剩下就是必选输出了。
- 生效条件
生效条件使用表达式的方式定义分支规则满足什么条件才起作用。生效条件里定义的表达式最终计算结果必须是真(true)或假(false)。生效条件属性是必须设置的。如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
- 可选输出
可选输出定义 AND 分支后的环节中,哪些是用户在流转时可自己决定选还是不选。在流转对话框中,可选环节是可以被去掉的,而必选环节则不可以被去掉。以保证必选和可选的特性。
合并规则
合并规则是定义在 AND 合并上用来描述 AND 合并的多个输入之间的关系的。合并规则是在所有直接输入到 AND 合并的活动环节中,只要任意活动环节做流转操作时它都会起作用。
- 生效条件
生效条件使用表达式的方式定义合并规则满足什么条件才起作用。生效条件里定义的表达式最终计算结果必须是真(true)或假(false)。生效条件属性是必须设置的。如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,以及如何取业务数据参考《流程表达式》。
- 合并模式
合并模式是 AND 合并上对输入的待办任务应该如何做合并的定义。在此过程中所有流入 AND 合并的属于合并规则可选输入的待办任务是没有任何决定权限,只有属于必选输入的待办任务流入 AND 合并才会计算 AND 合并是否允许通行。
AND 合并是否允许通行的规则是就计算是否还存在有可能流入 AND 合并的属于必选输入的待办任务,如果有则不允许通行。反之允许通行。AND 合并通行的规则是,把当前待办任务和已经结束但是尚未实际流转的待办任务合并成一条待办任务,往下流转。
合并指是常规的待办任务合并。当有必选输入流入 AND 合并时,判断是否还有属于必选输入的待办任务可能会流入 AND合 并,如果有则 AND 合并不能通行,把当前待办任务状态设置为已完成(tmsFinished)但不实际流入下一环节。如果已经没有了,则把当前待办任务和已完成且尚未实际流转的待办任务合并后流入下一步环节,同时取消(tmsCanceled)其他所有尚未流入 AND 合并的待办任务。在此过程中所有属于可选输入的待办任务流入 AND 合并都缺省被当作 AND 合并不能通过处理。
抢占指的是在 AND 合并所有的必选输入中只要有其中一条待办任务流入 AND 合并,则 AND 合并就可以通行流入下一环节,同时把所有尚未流入 AND 合并的待办任务都取消(tmsCanceled)。
- 分支环节
未指定分支环节时,系统自动推算分支环节,以便计算所有必选输入。指定分支环节后,系统根据指定的分支环节计算所有必选输入,这样计算得更准确。
- 可选输入
可选输入定义 AND 合并哪些输入是可选的,剩下的则是必选的。可选输入的选择范围是和 AND 合并直接相连的前顺环节。可选输入只有在计算合并模式的使用起作用。