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:流程執行過程中觸發的事件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM