本文主要介绍activiti构建流程定义时使用的基础构件:须要和Activiti学习(六)——基本事件一块儿理解java
下图时idea中actiBPM插件中构件流程图使用的基本构件:api
构件主要有开始事件、中间事件、边界事件、结束事件四种 。下面是各类构件的详细介绍。并发
启动事件时触发型的,等待第三方触发以后才能启动,可经过activiti的相关api触发。ide
能够设置处理用户、用户组、表单等属性,必须由人为来触发。学习
脚本任务不须要人为的触发,流程轮转到脚本任务会自动执行,脚本任务能够运用引擎依赖语言以外的脚本语言,如Groovy、JavaScript,也便可以直接在xml内容插入其余语言的代码。idea
能够不受人工干涉,流转到自动运行,调用java中的方法。须要把类实现JavaDelegate接口,而且把这个实现类设置到服务事件的class属性上去。spa
邮件任务能够经过activiti发送邮件,其中邮件信息经过变量方式传递。 .net
手动任务:activiti把手动任务看成一个空任务来处理,当到达此任务时由引擎自动完成并转向下一个任务。插件
接收任务:接收任务是一个功能简单且单一的任务,在任务建立后开始等待消息的到来,直到被触发才会完成任务。 code
业务规则任务,业务规则任务能够根据流程变量的值处理预设的业务规则。
当流程执行到callActivity,会建立一个新分支,它是到达调用节点的流程的分支。 这个分支会用来执行子流程,默认建立并行子流程,就像一个普通的流程。 上级流程会等待子流程完成,而后才会继续向下执行。
子流程:有嵌入子流程和调用子流程,嵌入子流程时主流程的一部分,只能被主流程调用;调用子流程反之。
并行网关:并行网关用来对并发的任务进行流程建模,它能把单条线路任务拆分红多个路径并行执行或将多条路线合并。
分支: 并行后的所有外出顺序流,为每个顺序流都建立一个并发分支。
汇聚: 所有到达并行网关。在此等待的进入分支。 直到所有进入顺序流的分支都到达之后。 流程就会经过汇聚网关。
排他网关:排他网关用来对流程中的决定进行建模。与单纯使用线上的condition有什么区别呢,单纯使用线上condition判断,全部为true的流程都会被执行,而使用排他网关就算有多个为true也只会选择第一个进行执行,若是没有符合要求的执行流,那么排他网关将会抛出一个异常。
分支: 所有外出顺序流的条件都会被解析。结果为true的顺序流会以并行方式继续运行。 会为每个顺序流建立一个分支。
汇聚: 所有并行分支到达包括网关。会进入等待章台, 直到每个包括流程token的进入顺序流的分支都到达。 这是与并行网关的最大不一样。换句话说,包括网关仅仅会等待被选中运行了的进入顺序流。 在汇聚以后,流程会穿过包括网关继续运行。
事件网关:它容许多个输出流指向多个不一样的中间捕获事件。
基于事件网关赞成依据事件推断流向。
网关的每个外出顺序流都要链接到一个中间捕获事件。 当流程到达一个基于事件网关,网关会进入等待状态:会暂停运行。 与此同一时候,会为每个外出顺序流建立相对的事件订阅。
注意基于事件网关的外出顺序流和普通顺序流不一样。这些顺序流不会真的"运行"。
相反。它们让流程引擎去决定运行到基于事件网关的流程需要订阅哪些事件。
要考虑下面条件:
基于事件网关必须有两条或以上外出顺序流。
基于事件网关后,仅仅能使用intermediateCatchEvent
类型。 (activiti不支持基于事件网关后链接ReceiveTask。)
链接到基于事件网关的intermediateCatchEvent
仅仅能有一条进入顺序流。
边界事件是绑定在活动上的捕获事件、会一直监听处于某种事件的触发在捕获到事件以后中断活动,而后从边界事件类型的数据流继续执行。能够捕获信号、消息、定时器、错误信号
中间捕获事件,能够捕获信号、消息、定时器错误。
中间抛出事件:能够抛出信号事件