Activiti工作流引擎——组件说明

  • 工作流引擎简介
  • Activiti的特点
  • Activiti引擎的七大Service接口
  • Activiti架构
  • Activiti与BPMN 20规范
      • 启动事件与结束事件Event
        • 启动事件
          • 空启动事件
          • 定时启动事件
          • 异常启动事件
        • 空结束事件
          • 空结束事件
          • 异常结束事件
          • 终止结束事件
          • 取消结束事件
      • 顺序流Sequence Flow
        • 标准顺序流
        • 条件顺序流
      • 任务Task
        • 用户任务
        • 脚本任务
        • web service任务
        • 业务规则任务
        • 邮件任务
        • Camel任务
        • Mule任务
        • 手动任务
        • 接收任务
        • Shell任务
      • 网关Gateway
        • 排他网关
        • 并行网关
        • 包容网关
        • 事件网关
      • 子流程Subprocess
      • 边界事件Boundary Event
        • 边界事件
      • 中间事件Intermediate Event
        • 中间捕获事件
        • 中间抛出事件
      • 监听器Listener

工作流引擎简介

工作流引擎被广泛应用于各种信息化系统中,将原本散乱的业务梳理后定制成业务规范流程,进而约束业务的规范化处理和运转,定制流程规范后,将其部署到工作流引擎中,由他自动驱动业务流程的进行。

Activiti可以运行在任何类型的java程序中,例如服务器、集群、云服务等。
Activiti可以完美的与spring集成。


Activiti的特点

  • 数据持久化,底层使用MyBatis
  • 引擎Service接口
  • 流程设计器(Eclipse Designer、IDEA actiBMP、基于web的Activiti Modeler)
  • 原生支持Spring
  • 分离运行时与历史数据

Activiti引擎的七大Service接口

Service接口 作用
RepositoryService 流程仓库Service,用于管理流程仓库,例如部署、删除、读取流程资源
IdentifyService 身份Service,用于管理和查询用户、组之间的关系
RuntimeService 运行时Service,可以也拿过来处理所有正在运行状态的流程实例、任务等
TaskService 任务Service,用于管理和查询任务,例如签收、办理、指派等
FormService 表单Service,用于读取流程、任务相关的表单数据
HistoryService 历史Service,用于查询所有历史数据,例如流程实例、任务、活动、变量、附件
ManagementService 引擎管理Service,和具体业务无关,主要可以查询引擎配置、数据库、作业等

Activiti架构

Activiti工作流引擎——组件说明_第1张图片



Activiti与BPMN 2.0规范

启动事件与结束事件(Event)

启动事件

启动事件都是触发型的,等待第三方触发后才可以启动。在ACTIVITI中可以通过调用API触发启动事件。

空启动事件

Activiti工作流引擎——组件说明_第2张图片

<process id="myProcess_1" isClosed="false" isExecutable="true" processType="None">
    <startEvent id="_9" name="StartEvent"/>
  process>

由于startEvent 标签中没有任何其他的元素定义,所以称为空启动事件。
属性列表为
Activiti工作流引擎——组件说明_第3张图片

form key:用来指定空启动事件关联的表单文件
initiator:用来记录启动流程的人的ID

定时启动事件

定时启动事件用来一次性定时启动、特定时间间隔后启动。
timeDate:一次性定时启动
timeDuration:设置多长时间后启动流程
timeCycle:周期性启动任务,用来设定循环的时间间隔、表示多长时间执行一次循环。

异常启动事件

异常启动事件可以触发一个异常子流程,但不能通过API方式启动,他总是在另外一个流程抛出异常结束事件的时候被触发。

空结束事件

Activiti工作流引擎——组件说明_第4张图片

空结束事件

结束事件是抛出型的,空结束时间不处理抛出的结果。

异常结束事件

异常结束事件定义了需要抛出的错误代码,如果找到合适的异常开始时间则触发异常开始事件,否则按照空结束事件处理。

终止结束事件

可以终止一个流程实例的运行。

取消结束事件

可以取消一个事务子流程的执行,同时只能在子流程中使用。


顺序流(Sequence Flow)

Activiti工作流引擎——组件说明_第5张图片
如果一个元素在流程期间被访问,流程会沿着该元素所有的输出顺序流继续执行。多个输出顺序流会创建多条独立的、并行的执行路径。

标准顺序流

允许添加监听器

条件顺序流

添加条件表达式,只有满足条件才能通过顺序流到达目标活动。
条件顺序流的XMl描述是在顺序流中添加条件表达式标签conditionExpression,并且在conditionExpression中设置UEL表达式用于计算逻辑值。


任务(Task)

用户任务

必须人为的触发
Activiti工作流引擎——组件说明_第6张图片

脚本任务

脚本任务可以运行引擎依赖语言之外的脚本语言,如Groovy、JavaScript
Activiti工作流引擎——组件说明_第7张图片

web service任务

通过web service任务可以调用外部的web service资源,完成调用只需要一些必须的配置就可以,并且支持标准的web service和rest风格的service。
Activiti工作流引擎——组件说明_第8张图片

业务规则任务

业务规则任务可以根据流程变量的值处理预设的业务规则。
Activiti工作流引擎——组件说明_第9张图片

邮件任务

邮件任务可以通过activiti发送邮件,其中邮件信息通过变量方式传递。
Activiti工作流引擎——组件说明_第10张图片

Camel任务

Camel是用来解决消息路由的框架。

Mule任务

Mule任务和Camel任务相似,但他们是基于不同标准实现的。

手动任务

activiti把手动任务当作一个空任务来处理,当到达此任务时由引擎自动完成并转向下一个任务。
Activiti工作流引擎——组件说明_第11张图片

接收任务

接收任务是一个功能简单且单一的任务,在任务创建后开始等待消息的到来,直到被触发才会完成任务。
Activiti工作流引擎——组件说明_第12张图片

Shell任务

Shell任务允许在流程运行过程中执行本地操作系统中的脚本、命令,是Activiti基于serviceTask扩展的一种任务。


网关(Gateway)

排他网关

排他网关用来对流程中的决定进行建模。
Activiti工作流引擎——组件说明_第13张图片

并行网关

并行网关用来对并发的任务进行流程建模,它能把单条线路任务拆分成多个路径并行执行或将多条路线合并。
Activiti工作流引擎——组件说明_第14张图片

包容网关

包含网关融合了排它网关和并行网关的特性,排它网关运行在每条线路上设置条件,并行网关可以同时执行多条线路,包含网关既可以同时执行多条线路,又允许在网关上设置条件。
Activiti工作流引擎——组件说明_第15张图片

事件网关

它允许多个输出流指向多个不同的中间捕获时间。

Activiti工作流引擎——组件说明_第16张图片

子流程(Subprocess)

Activiti工作流引擎——组件说明_第17张图片


边界事件(Boundary Event)

边界事件

边界事件是绑定在活动上的“捕获型”事件,会一直监听所有处于活动的某种事件的触发,在捕获到事件之后中断活动,然后从边界事件类型的数据流继续执行。
Activiti工作流引擎——组件说明_第18张图片


中间事件(Intermediate Event)

中间捕获事件

Activiti工作流引擎——组件说明_第19张图片

中间抛出事件


监听器(Listener)

监听器是业务和流程的“非侵入式粘合剂”,在activiti中开发人员可以通过配置监听器的方式监听各种动作,例如流程启动、结束、任务创建、任务完成。
监听器分为两类:执行监听器和任务监听器。

你可能感兴趣的:(JavaEE专业技能)