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