zoukankan      html  css  js  c++  java
  • activiti 7 + springboot2(一) 简单介绍

    官网文档 

    https://activiti.gitbook.io/activiti-7-developers-guide/   

    示例代码 

    https://github.com/Activiti/activiti-examples

    https://activiti.gitbook.io/activiti-7-developers-guide/getting-started/getting-started-activiti-core

    Activiti是基于Apache许可的开源BPM平台。基于Spring,ibatis等框架,并在此之上构建了非常清晰的开发框架。是由Alfresco软件发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。 Activiti最新版本分为Activiti Core与Activiti Cloud两块,本文基于Activiti7的Activiti Core,基于Spring Boot做简单学习总结。

    以下是基本概念摘抄:

    核心类
    1 ProcessEngine
    流程引擎的抽象,可以通过此类获取需要的所有服务。

    2 服务(Service)类
    通过ProcessEngine获取,Activiti将不同生命周期的服务封装在不同Service中,包括定义、部署、运行。通过服务类可获取相关生命周期中的服务信息。

    1 TaskService
    流程运行过程中,每个任务节点的相关操作接口,如complete,delete,delegate等。

    2 RepositoryService
    流程定义和部署相关的存储服务。

    3 RuntimeService
    流程运行时相关的服务,如根据流程好启动流程实例startProcessInstanceByKey。

    3 HistoryService
        历史记录相关服务接口。

    3 CommandContextIntercepter或CommandExecutor
        Activiti使用命令模式作为基础开发模式,如Service中调用的各个方法都对应相应的命令对象。Service将请求委托给命令对象,命令对象来命令接受者,接受者接收后执行并返回结果。而CommandContextIntercepter的作用是拦截所有命令,并在命令前后执行一些公共方法。

    4 核心业务对象
        org.activiti.engine.impl.persistence.entity包下的类,包括Task,ProcessInstance,Execution等。会根据不同职责实现相应接口的方法(如需要持久化则继承PersistentObject接口),与传统的实体类不同。

    3. 上下文组件(Context)
    用来保存生命周期比较长,全局性的信息,类似Application,主要包括如下三类。

    3.1 CommandContext
    命令上下文,保存每个命令必要的资源,如持久化需要的session。

    3.2 ProcessEngineConfigurationImpl
    流程引擎相关配置信息,整个引擎全局的配置信息,如数据源DataSource等。该对象为单例,在流程引擎创建的时候初始化。

    3.3 ExecutionContext
    持有ExecutionEntity对象。

    4. 持久化组件
        Activiti使用ibatis作OR映射,并在此基础上增加设计了自己的持久化框架。在流程引擎创建时初始化。顶层接口Session、SessionFactory。Session有两个实现类:DbSqlSession,负责sql表达式的执行。AbstractManager负责对象的持久化操作。SessionFactory有两个实现类:DbSqlSessionFactory负责DbSqlSession相关操作,GenericManagerFactory负责AbstractManager相关操作。

    5. Event-Listener组件
        Activiti允许客户代码介入流程执行,提供了事件监听组件。监听的事件类型可以分为TaskListener、JavaDelegate、Expression、ExecutionListener。ProcessEngineConfigurationImpl持有DelegateInterceptor的某个实例,方便调用handleInvocation。

    6. Cache组件
        DbSqlSession中有cache的实现,Activiti基于List和Map来做缓存。如查询时先查缓存,没有则直接查询并放入缓存。

    7. 异步执行组件
        Activiti可以执行任务,JobExecutor为启核心类,JobExecutor包含三个主要属性:JobAcquisitionThread,BlockingQueue,ThreadPoolExecutor。方法ProcessEngines在引擎启动时调用JobExecutor.start,JobAcquisitionThread 线程即开始工作,其run方法不断循环执行AcquiredJobs中的job,执行一次后线程等待一定时间直到超时或者JobExecutor.jobWasAdded方法,因为有新任务而被调用。

    8. PVM:Process Virtal Machine
    流程虚拟机API暴露了流程虚拟机的POJO核心,流程虚拟机API描述了一个工作流流程必备的组件,这些组件包括:
        PvmProcessDefinition:流程的定义,形象点说就是用户画的那个图。静态含义。
        PvmProcessInstance:流程实例,用户发起的某个PvmProcessDefinition的一个实例,动态含义。
        PvmActivity:流程中的一个节点
        PvmTransition:衔接各个节点之间的路径,形象点说就是图中各个节点之间的连接线。
        PvmEvent:流程执行过程中触发的事件

  • 相关阅读:
    香港两日游的那些事儿
    香港两日游的那些事儿
    Node.js下的Hello World
    Node.js下的Hello World
    Node.js下的Hello World
    WP SyntaxHighlighter 初探
    WP SyntaxHighlighter 初探
    WP SyntaxHighlighter 初探
    Google的代码高亮-code-prettify
    Java 18套JAVA企业级大型项目实战分布式架构高并发高可用微服务电商项目实战架构
  • 原文地址:https://www.cnblogs.com/zsg88/p/12156045.html
Copyright © 2011-2022 走看看