三、业务流程环节

  业务流程环节是业务流程里最基本最重要的组成元素,它描述业务流程中需要人为参与的处理,自动的处理和业务流程中路径的选择,分支和合并等。需要注意的是,所有业务流程环节定义的各种规则和条件都只有在业务流程执行讯问动作的时候起作用。

1 开始环节

  开始环节是业务流程里的一种标志环节,在一个业务流程定义只能有唯一的一个开始环节。从PetriNet的角度来说,流程必须都是从Place开始的,所以开始环节映射到PetriNet时其实是一个Place。
入口环节,开始环节是比较容易混淆的几个概念。入口环节指的是连在开始环节后的第一个活动环节,它肯定是被画在流程图中开始环节之后的业务环节。
  开始环节的意义不仅仅在于可以让代码能更容易的理解和找到业务流程的“起始点”,更重要的是当一个业务流程有多个入口环节时,在开始环节后可以跟分支环节或者条件环节来定义多入口环节之间的逻辑关系。如图所示。

2 结束环节

  和开始环节一样,结束环节也是业务流程里的一种标志环节,一个业务流程定义只能有唯一的一个结束环节。从PetriNet的角度来说,每个流程结束以后都会产生产物,所以当结束环节映射到PetriNet时其实也是一个Place。
  当结束环节和其他环节组成分支的时候,结束环节和其他环节之间只能是排它(XOR)的关系,也就是说要么流入结束环节,要么流入其他环节,二者同时只能选其一,如图所示。

  需要注意的是,业务流程运行到结束环节并不一定代表整个流程就结束了,判断流程是否结束只有一个依据,那就是所有的活动环节的待办任务是否都处理完了。

3 活动环节

  活动环节代表企业中的一个单独的、独立的业务环节。活动环节其实就是被画在流程图里的业务环节,运行时必须由业务流程通过待办任务触发后才可以运行。
  活动环节是在业务流程运行的过程中唯一可进行人工干预处理的地方。当业务流程运行到活动环节时就会给指定的执行者生成待办任务,并且业务流程的运行会停下来,等执行者以待办任务为入口打开业务环节处理业务表单后,执行者再决定流程是要继续往后运行还是要重新处理。
  活动环节映射到PetriNet里时是一个Activity。需要注意的是此Activity并非指的是业务环节。
*禁用的流程动作
   禁用的流程动作定义此业务流程有哪些流程动作不允许执行,如勾选回收,则此活动环节提交未处理的人不能在任务中心功能中进行回收操作。只有是此活动环节的任务时才可以起作用。

*消息发送方式:
  消息发送方式定义此活动环节在进行流程、回退、转发和回收的流程动作时需要用什么方式给相关的组织发送消息通知,可以选择的有门户、邮件、钉钉、企业微信、短信。
门户方式在相关人员登录后在首页可以展现出已读消息和未读消息;邮件是给相关人员的邮箱发送邮件,邮件中有任务的链接可以直接打开;钉钉相关人员的钉钉会收到消息提醒,消息中有任务的链接可以直接打开;企业微信:相关人员的企业微信中会收到消息提醒,消息中有任务的链接可以直接打开;短信:相关人员可以受到短信提醒,如果手机上按照的有对应的app,通过短信中的链接会提示打开app, 打开app后会自动跳转到相应的处理页面。。

*表单权限:
  表单权限定义当打开此活动环节对应的任务页面时业务表单中的字段是否只读、是否必填、是否隐藏。

*批处理表单字段:
  批处理表单字段定义批流转时同一批次的业务表单之间设置的字段数据同步。

*执行规则(ExecuteRule)
  执行规则定义活动环节的执行者,表单地址和处理方式等信息。执行规则只有在其他环节做流转操作流入当前活动环节时才起作用,它为生成活动环节的待办任务提供素材信息,当待办任务生成了以后它就不再作用了。执行规则不是必须设置的,当它没有设置的时候会根据缺省的执行规则计算活动环节执行者和生成待办任务。执行规则的详细描述,详见[执行规则](#3-执行规则)。

*流转规则(AdvanceRule)
  流转规则定义活动环节在做流转操作时的一些处理选项。流转规则不是必须设置的,当它没有设置的时候会根据缺省的流转规则进行流转操作。流程规则的详细描述,详见[流转规则](#4-流转规则)。

*回退规则(BackRule)
  回退规则定义活动环节在做回退操作时的一些处理选项。回退规则不是必须设置的,当它没有设置的时候会根据缺省的回退规则进行回退操作。回退规则的详细描述,详见[回退规则](#5-回退规则)。

*转发规则(TransferRule)
  转发规则定义活动环节在做转发操作时的一些处理选项。转发规则不是必须设置的,当它没有设置的时候会根据缺省的转发规则进行转发操作。转发规则的详细描述,详见[转发规则](#6-转发规则)。

*通知规则(NoticeRule)
  通知规则定义活动环节在做流转,回退和转发等操作时需要通知其他人的处理选项。通知规则不是必须设置的,当它没有设置的时候就表示不需要通知。通知规则的详细描述,详见[通知规则](#noticerule)。

4 自动环节

  自动环节是通过调用指定业务动作或指定代码完成业务处理的环节,它一般用来实现同步更新业务数据或调用其他WebService等需求。当业务流程运行进入自动环节时并不会停下来,而是调用完指定业务动作或执行完指定代码后就直接进入下一步环节。自动环节只有在其他环节做流转操作进入它时,它才会起作用。
  调用指定业务动作和执行指定代码的需求当然可以在事件实现,但是自动环节的好处在于可以从业务流程的图上看出有一个明显的自动处理。
  自动环节本质上也属于“处理”,所以映射到PetriNet里时是Activity(处理)。
*条件(condition)
  条件使用表达式的方式定义自动环节满足什么条件才可以被激活。自动环节的条件属性上定义的表达式只有在其他环节做流转操作流入当前自动环节时计算,计算结果为true则表示当前自动环节可以激活并进行自动处理,计算为false则表示当前自动环节不允许激活。条件是必须设置的属性,如果定义常量则直接写true或false就可以了。条件表达式的设置和其中的函数,如何取业务数据[详见](#3-业务表达式)。
*业务动作(Action)
  自动环节上业务动作的设置和业务环节是一样的,不同点在于自动环节上设置的业务动作将被自动调用。业务动作在自动环节中是必须设置的属性。

5 条件环节

  条件环节就是通过定义条件表达式的方式描述环节能否激活,从而控制路径是否畅通的环节,类似公路上的红绿灯。条件环节采用条件表达式的方式,根据表达式计算结果来控制流程能流入哪些环节,不能流入哪些环节。条件环节只有在其他环节做流转操作流入它时才起作用,如果条件表达式计算结果为true,则表示“此路畅通”可以直接经过条件环节后进入到下一步环节,反之则不能经过。那么,在活动环节前加一个条件环节和直接设置活动环节的条件属性,两者是等价的。

   条件环节本质上属于“处理”,所以映射到PetriNet里时是Activity。 *条件(condition)   条件使用表达式的方式定义条件环节满足什么条件才可以被激活,激活的意思进入。条件环节的条件属性上定义的表达式只有在其他环节做流转操作流入当前条件环节时计算,计算结果为true则表示“此路畅通”直接进入下一步环节,计算为false则表示“此路不通”而不能进入下一步环节。条件是必须设置的属性,如果定义常量则直接写true或false就可以了。条件表达式的设置和其中的函数,如何取业务数据详见

6 条件分支环节

  条件分支环节虽然和条件环节一样是通过条件表达式的方式来描述路径是否畅通的环节。但是条件分支环节和条件环节有着本质上的不同,条件分支环节无论条件表达式怎么设置其实它一直都是畅通的,条件表达式只是用来选择它要从哪个输出流出而已。条件分支环节只允许有两个输出,一个输出用来定义是当条件表达式计算结果为真(true)时走的路径,另外一个则用来定义条件表达式结果为假(false)时走的路径。条件分支只有在其他环节做流转操作流入它时,它才起作用。
  条件分支环节本质上属于“处理”,所以映射到PetriNet里时是多个Activity的组合,如图所示。

*条件(condition)
  使用条件表达式的方式选择输出,条件表达式计算结果为真(frue)就流入条件为真的输出,反之就流入条件为假的输出。条件是必须设置的属性,如果定义常量则直接写true或false就可以了。条件表达式的设置和其中的函数,如何取业务数据[详见](#3-业务表达式)。
*条件为真的输出(true-output)

  条件为真的输出上的属性值只能从与条件分支直接连接的输出的环节中选择。用来标识条件表达式计算结果为真(true)时要走的输出路径。它的选择范围是直接连在条件分支环节后的环节。条件为真的输出此属性是必须设置的。 *条件为假的输出(false-output)   条件为假的输出上的属性值只能从与条件分支直接连接的输出的环节中选择。用来标识条件表达式计算结果为假(false)时要走的输出路径。它的选择范围是直接连在条件分支环节后的环节。条件为假的输出此属性是必须设置的。

7 会签环节(AND)

  连接弧用来描述环节间的前后顺序,则环节间的逻辑关系则是使用逻辑环节(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合并的所有输入都是必须的原则来处理。合并规则详细描述,详见5.4.7。

8 或签环节(XOR)

  逻辑环节中的AND环节所描述的是环节之间的同时同步的关系,或者叫并发关系。XOR环节则描述的是环节间的独立排它的关系。
  XOR环节也有两种模式分别为分支模式和合并模式,XOR环节有两种模式分别为分支模式和合并模式,当它有多个输出时即为XOR分支,当它有多个输入时即为XOR合并。XOR环节可以同时具有多个输入和多个输出,即同时处于XOR分支和XOR合并下,也可以只单独处于分支模式或者单独处于合并模式。XOR环节同样也只有在其他环节做流转操作流入XOR环节时起作用。
  XOR环节映射到Pertri Net里时是一个Place。 

*XOR分支
  XOR分支表示XOR环节所有输出的畅通的路径中只能同时走其中唯一的一条路径。从使用的角度来说,业务流程运行经过XOR分支会在所有畅通的输出中缺省选出其中当一条路径作为默认流出,同时在流转对话框中用户也可以更改默认选择,但是流转对话框限制了同时只能选中一个输出来保证XOR分支的特性。
  当前待办任务经过XOR分支以后还是一条待办任务,所以经过XOR分支不会造成待办任务的拆分。

*XOR合并
  XOR合并表示XOR环节所有输入中任何一个输入达到XOR环节都可以接通行到流入下一环节。
  当前待办任务经过XOR分支以后还是一条待办任务,所以本质上XOR分支不会造成任何待办任务之间的等待或合并。

9 子流程

子流程定义当业务流程进入此环节会时启动一个指定的子流程。子流程环节本质是一个业务环节,它比业务环节多了以下属性:
子流程: 选择要设置为子流程的子流程标识;
子流程启动方式: 取值范围自动、手动, 默认值是自动;自动模式是进入此子流程环节选择的子流程会自动启动,手动模式是由用户手工调用启动子流程操作启动子流程,一般在流程结转的时候设置为手动启动。流程结转是多个主流程实例在某个子流程环节需要合并启动一个子流程。
业务主键:要启动的子流程需要的业务数据的业务主键值。业务主键可以是单值也可以是多值,单值只会启动一个子流程,多值会启动多个子流程。
业务主键名称:跟业务主键是一一对应的。

results matching ""

    No results matching ""

    results matching ""

      No results matching ""