Activiti重要知识点

咖啡兔老师的视频:http://www.osforce.cn/course/308/learn#lesson/1919

Activiti提供了多种创建流程引擎的方式,ProcessEngineConfiguration.buildProcessEngine(),或者ProcessEngines.init()方法来创建ProcessEngine实例。

一个ProcessEngine实例代表一个流程引擎。

所有创建ProcessEngine实例均被注册到ProcessEngines中,这里所说的注册,实际上是ProcessEngines类中维护一个Map对象,该对象的key为ProcessEngine实例的名称,value为ProcessEngine的实例。

一、Service

7个api,每个api,每个方法都有一个命令command,把所有的操作放在命令里,所有的命令操作都在一个事物里。简单清晰,易于维护、扩展。命令需要提供上下文的东西,通过拦截器来做。

当调用引擎Service接口时,实际上调用的是不同的Command,但是接口并不是直接调用的命令,而是把命令交给CommandExecutor统一执行,因为通过它可以在命令执行过程中执行若干拦截器。通过CommandContextInterceptor拦截器可以为所有的Command准备好命令上下文CommandContext对象,以便在Command实现类中获取到引擎配置对象、会话对象等。

每个command都可以配置拦截器:前置拦截器、后置拦截器、默认拦截器。其中默认拦截器有LogInterceptor、RetryInterceptor。RetryInterceptor乐观锁重试,缓解乐观锁问题,会做超时等待、重试。

CommandContext通过ThreadLocal实现,和线程绑定,是线程安全的。


二、BPMN

流程驱动、业务流程根据BPMN文件进行解析,去事件处理和流程转换。

Process类时Activiti中用来描述BPMN2.0元素的JavaBean,Process表示一个流程。


流程部署之后,会把流程对象缓存到内存中,简单的一个key-value的map对象缓存

xml可以和bean互转,可以xml做持久化,bean,流程对象缓存到引擎中。

BPMN:Business Process Modeling and Notation业务流程建模与标注,是workflow的建模语言标准之一。定义了业务流程图的一套标准语言,比如活动(任务和子流程)是矩形,条件是菱形。

资源以二进制流的方式保存,通过api获取流对象,转换为需要的资源

三、PVM

底层由PVM来驱动实现

PVM把业务流程的特性抽取出来,怎么去驱动。

PVM抽象了业务驱动模型

JVM抽象了虚拟机的特性

PVM把业务流程的特性抽取出来,驱动流程的流转。


四、事件处理器

在工作流引擎中,有很多事件,通过事件处理器处理:

流程内事件:会做监听类的。在task上配置,在complete上配置,做触发。内部有一个注入。

全局事件:引擎层面的。比如实体创建、流程引擎启动,流程挂起、激活。在引擎配置文件中配置注入事件处理器。

引擎内部先去触发事件,然后找对应的处理器。处理器会有一个注入。提供对应的处理数据。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值