1. 程式人生 > >工作流入門連結+分享本書《Activiti實戰》

工作流入門連結+分享本書《Activiti實戰》

百度百科-工作流

java 工作流開發框架比較

現在搞工作流的,開源的很多都用Activiti,但相關的中文書其實不多,在噹噹上找到了一本,暫時沒下載到pdf盜版,看了目錄不錯,特別從試讀章節瞭解了歷史,所以分享一下。

目錄
本書推薦
前言
第一部分 準備篇
 第1章 認識Activiti
  1.1 什麼是Activiti
  1.2 工作流基礎
   1.2.1 什麼是BPM
   1.2.2 工作流生命週期
   1.2.3 什麼是BPMN
  1.3 Activiti的特點
  1.4 Activiti的應用
  1.5 Activiti架構與元件
  1.6 Activiti與jBPM5比較
  1.7 本章小結
 第2章 搭建Activiti開發環境
  2.1 下載Activiti
   2.1.1 目錄結構
   2.1.2 Javadocs
  2.2 環境配置檢查
   2.2.1 檢查並安裝JDK
   2.2.2 檢查並安裝Ant
   2.2.3 檢查並安裝Maven
  2.3 配置檔案介紹
   2.3.1 Activiti配置檔案
   2.3.2 Maven配置檔案
  2.4 Hello World
   2.4.1 最簡單的流程定義
   2.4.2 建立單元測試類
   2.4.3 執行Hello World
   2.4.4 新增業務節點
  2.5 Activiti Explorer
   2.5.1 配置並執行Activiti Explorer
   2.5.2 使用Activiti Explorer
  2.6 本章小結
第二部分 基 礎 篇
 第3章 流程設計工具
  3.1 基於B/S架構的流程設計器Activiti Modeler
   3.1.1 Activiti Modeler特點
   3.1.2 下載signavio-core-components
   3.1.3 配置打包與執行
   3.1.4 Windows使用者打包
   3.1.5 設計請假流程
   3.1.6 匯出bpmn2.0.xml
  3.2 在Activiti Explorer中使用Activiti Modeler
  3.3 基於Eclipse外掛的流程設計器Activiti Designer
   3.3.1 Activiti Designer特點
   3.3.2 安裝Activiti Designer
   3.3.3 設計流程
   3.3.4 自動化
   3.3.5 升級歷史遺留的流程設計
   3.3.6 匯入Activiti Modeler設計
   3.3.7 泳池與泳道
   3.3.8 在Activiti Designer中使用泳道與泳池
  3.4 本章小結
 第4章 Activiti與BPMN 2.0規範
  4.1 啟動事件與結束事件
   4.1.1 啟動事件
   4.1.2 結束事件
  4.2 順序流
   4.2.1 標準順序流
   4.2.2 條件順序流
  4.3 任務
   4.3.1 使用者任務
   4.3.2 指令碼任務
   4.3.3 Java Service任務
   4.3.4Web Service任務
   4.3.5業務規則任務
   4.3.6郵件任務
   4.3.7Camel任務
   4.3.8Mule任務
   4.3.9手動任務
   4.3.10接收任務
   4.3.11Shell任務
   4.3.12多例項
  4.4閘道器
   4.4.1排他閘道器
   4.4.2並行閘道器
   4.4.3包容閘道器
   4.4.4事件閘道器
  4.5子流程與呼叫活動
    4.5.1子流程
   4.5.2 呼叫活動
   4.5.3 事件子流程
   4.5.4事務子流程
  4.6邊界與中間事件
   4.6.1邊界事件
   4.6.2中間捕獲事件
   4.6.3中間丟擲事件
  4.7監聽器
   4.7.1執行監聽器
   4.7.2任務監聽器
  4.8本章小結
第三部分 實戰篇
 第5章使用者與組及部署管理
  5.1使用者與組
   5.1.1使用者
   5.1.2組
   5.1.3使用者與組的關係
   5.1.4使用者任務中的使用者與組
  5.2部署流程資源
   5.2.1classpath方式
   5.2.2InputStream方式
   5.2.3字串方式
   5.2.4zip/bar格式壓縮包方式
  5.3流程部署及資源讀取
   5.3.1讀取已部署流程定義
   5.3.2從客戶端部署流程
   5.3.3讀取流程定義的XML
   5.3.4讀取流程定義的圖片及圖片中的中文亂碼
   5.3.5刪除部署
  5.4本章小結
 第6章 任務表單
  6.1動態表單
   6.1.1流程定義
   6.1.2單元測試
   6.1.3在Activiti Explorer中執行流程
  6.2實現自己的Activiti Explorer
   6.2.1完善身份驗證功能
   6.2.2流程啟動表單
   6.2.3任務簽收與辦理
   6.2.4自定義表單的欄位型別
  6.3 外接表單
   6.3.1流程定義
   6.3.2單元測試
   6.3.3自定義表單引擎
   6.3.4 讀取流程啟動表單
   6.3.5任務簽收與辦理
  6.4本章小結
 第7章 Activiti與容器整合
  7.1 流程引擎工廠
   7.1.1 建立引擎的方式
   7.1.2 配置 ProcessEngineFactory-Bean
  7.2 自動部署流程定義
  7.3 表示式
   7.3.1 表示式基礎
   7.3.2 表示式示例
   7.3.3 使用Spring管理變數
  7.4 監聽器
  7.5 Spring容器整合應用例項
   7.5.1 業務建模
   7.5.2 啟動流程
   7.5.3 任務讀取
   7.5.4 任務辦理
  7.6 使用Spring註解初始化引擎
   7.6.1 使用@EnableActiviti註解
   7.6.2 使用Spring Boot初始化引擎
  7.7 CDI模組
   7.7.1 啟動示例
   7.7.2 引擎配置與流程定義
   7.7.3 流程定義與啟動
   7.7.4 任務辦理與完成
   7.7.5 事件監聽
  7.8 本章小結
 第8章 郵件服務
  8.1 配置與測試
   8.1.1 搭建郵件系統
   8.1.2 通過Activiti的郵件任務傳送郵件
   8.1.3 使用Gmail傳送郵件
  8.2 與業務整合
   8.2.1 即時傳送郵件
   8.2.2 定時傳送郵件
  8.3 本章小結
 第9章 多例項
  9.1 非使用者任務
  9.2 使用者任務多例項
   9.2.1 順序方式辦理
   9.2.2 並行方式辦理
   9.2.3 設定結束條件
  9.3 應用例項-請假會籤
   9.3.1 流程定義
   9.3.2 任務辦理
  9.4 審批意見
  9.5 本章小結
 第10章 子流程與呼叫活動
  10.1 子流程
   10.1.1 流程定義
   10.1.2 流程辦理
   10.1.3 分析流程資料
  10.2 呼叫活動
   10.2.1 流程定義
   10.2.2 單元測試
   10.2.3 流程辦理
   10.2.4 分析流程資料
  10.3 事件子流程
   10.3.1 流程定義
   10.3.2 單元測試
  10.4 多例項支援
  10.5 本章小結
 第11章 事件
  11.1 啟動事件
   11.1.1 定時啟動事件
   11.1.2 訊息啟動事件
  11.2 結束事件
  11.3 邊界事件
   11.3.1 異常邊界事件
   11.3.2 訊息邊界事件
   11.3.3 訊號邊界事件
  11.4 中間事件
  11.5 本章小結
 第12章 使用者任務與附件
  12.1 使用者任務
   12.1.1 改進任務列表
   12.1.2 改進任務表單
   12.1.3 任務相關人員
   12.1.4 反簽收任務
   12.1.5 候選人與候選組
   12.1.6 改進任務查詢
  12.2 子任務
  12.3 手動任務
  12.4 附件
  12.5 改進意見列表
  12.6 任務委派
   12.6.1 單元測試
   12.6.2 任務表單中的委派
  12.7 本章小結
 第13章 流程資料查詢與跟蹤
  13.1 Query API簡介
  13.2 執行時資料查詢
   13.2.1 任務查詢
   13.2.2 查詢參與的流程
  13.3 流程圖跟蹤
  13.4 歷史資料查詢
   13.4.1 查詢歷史活動及表單
   13.4.2 查詢已歸檔流程
  13.5 基於MyBatis的CustomSql查詢
   13.5.1 定義Mapper介面
   13.5.2 展示資料
  13.6 本章小結
 第14章 管理員特性
  14.1 流程狀態
   14.1.1 流程定義狀態
   14.1.2 作業查詢
   14.1.3 流程例項狀態
  14.2 作業管理
   14.2.1 作業執行原理
   14.2.2 作業執行異常
   14.2.3 獨佔與非同步
  14.3 刪除流程例項
  14.4 流程定義許可權控制
   14.4.1 許可權攔截
   14.4.2 設定候選啟動人和候選啟動組
   14.4.3 讀取候選啟動資料
  14.5 讀取引擎屬性
  14.6 資料庫查詢
  14.7 使用者與組
  14.8 本章小結
第四部分 高階篇
 第15章 整合WebService
  15.1釋出WebService服務
  15.2在流程中定義WebService任務
  15.3 在流程中呼叫WebService
  15.4本章小結
 第16章 整合規則引擎
  16.1 定義流程與規則
   16.1.1部署規則檔案
   16.1.2單元測試
  16.2本章小結
 第17章 整合JPA
  17.1配置JPA
   17.1.1Standalone模式
   17.1.2Spring模式
  17.2JPA版本的請假流程
   17.2.1啟動流程時持久化JPA實體
   17.2.2更改JPA實體屬性
   17.2.3清理歷史表單資料
  17.3本章小結
 第18章 整合ESB
  18.1Camel簡介與快速入門
  18.2在流程中呼叫Camel
   18.2.1Camel依賴及配置
   18.2.2定義Camel路由
   18.2.3執行單元測試
   18.2.4URI輸入引數
   18.2.5URI輸出引數
  18.3非同步Camel任務
  18.4在Camel中啟動流程
  18.5整合Mule
   18.5.1Mule快速入門
   18.5.2Mule、Spring與Activiti整合
   18.5.3在流程中呼叫Mule
  18.6本章小結
 第19章 統一身份管理
  19.1一套典型的身份系統
  19.2引擎身份介面方式
  19.3用檢視代替物理表
  19.4整合LDAP
  19.5本章小結
 第20章 REST服務
  20.1通訊協議簡介
  20.2REST API概述
  20.3釋出REST API
   20.3.1通過瀏覽器訪問
   20.3.2通過HttpClient訪問
   20.3.3通過Restlet訪問
   20.3.4通過Apache CXF訪問
  20.4整合REST API
   20.4.1依賴及配置檔案
   20.4.2通過Ajax訪問
  20.5完整示例
   20.5.1部署流程
   20.5.2查詢Deployment
   20.5.3查詢流程定義
   20.5.4啟動流程
   20.5.5讀取流程變數
   20.5.6查詢任務
   20.5.7簽收任務
   20.5.8完成任務
   20.5.9查詢歷史資料
  20.6整合流程圖跟蹤元件Diagram Viewer
   20.6.1準備資原始檔
   20.6.2準備配置檔案
   20.6.3訪問Diagram Viewer跟蹤流程
  20.7基於REST服務搭建流程中心
   20.7.1基礎架構
   20.7.2表單模式選型
   20.7.3統一的元件
   20.7.4事務管理
  20.8整合流程設計器Activiti Modeler
   20.8.1準備資原始檔
   20.8.2準備配置檔案
   20.8.3更改預設配置
   20.8.4建立模型
   20.8.5匯出模型的流程XML
   20.8.6把模型轉換為流程定義
   20.8.7把流程定義轉換為模型
   20.8.8刪除模型
  20.9本章小結
 第21章 入侵Activiti
  21.1解析BPMN檔案
   21.1.1BpmnModel物件與XML之間的轉換
   21.1.2動態建立流程
   21.1.3BPMN解析處理器
  21.2全域性事件處理器
   21.2.1定義事件處理器
   21.2.2處理捕獲的事件
   21.2.3事件處理器的異常處理
   21.2.4動態註冊事件處理器
   21.2.5任務自動轉辦
   21.2.6事件日誌
  21.3命令與攔截器
   21.3.1命令與攔截器執行機制
   21.3.2自定義命令
   21.3.3命令攔截器
   21.4流程虛擬機器-PVM
   21.4.1簡述PVM
   21.4.2Hello PVM
  21.4.3PVM進階
  21.5本章小結


第一部分
準備篇
工作流(WorkFlow)引擎被廣泛應用於各種資訊化系統中,將原本散亂甚至混亂的業務梳理後製定成業務規範流程,進而約束業務的規範化處理和運轉。需求人員、開發人員共同協作制定了符合BPMN2.0規範的流程定義,之後將其部署到工作流引擎中,由它自動驅動業務流程的進行。
本部分作為準備篇,第1章先介紹了什麼是Activiti及其歷史背景,然後介紹工作流、BPM、BPMN等概念,使初次接觸工作流的讀者能快速認識相關概念及各種規範。第2章內容從搭建開發環境開始,之後又介紹了Activiti的HelloWorld,幫助讀者快速入門。


第1章
認識Activiti
很多人對工作流(Workflow)應該不陌生。生活中到處都是活生生的“流”:在單位要請假,首先要找領導審批,在領導審批通過之後申請才獲准;從網上購物,下單的那一刻就已經觸發了一條工作流,此時可以跟蹤購物流程,什麼時間下單、什麼時間付款、什麼時候發貨、什麼時候收到貨,在快遞單上簽字的時候才等於一條工作流程結束了。
工作流應用廣泛,在由任務驅動的各種系統中都能見到它的身影,例如,CRM、ERP、ECM、BI、OA等。在企業應用中還有很多產品或平臺整合工作流引擎,用來處理系統執行過程中發起的業務流程。
工作流總是以任務(Task)的形式驅動人處理業務或者驅動業務系統自動完成作業。有了工作流引擎之後,我們不必一直等待其他人的工作進度,直白地說,我們只需要關心繫統首頁的待辦任務數即可,由系統提醒當前有多少待辦任務需要處理。


1.1什麼是Activiti
大家第一次接觸Activiti的時候不理解它為什麼要叫這個名字,從詞典中也沒有找到對它的解釋。可能有人會想到另外一個單詞Activity(活動),與Activiti僅一個字母之差。在工作流方面有些基礎的讀者或許能很快理解,業務流程由多個環節串聯起來並且每個環節被賦予任務,而每個任務又可以分為多個活動。舉個日常的例子—網上購物的下單環節,首先需要搜尋到要購買的商品,然後將其加入到購物車,最後下單填寫郵寄地址並付款。這個例子中的每一動作都可以稱為活動(Activity),也就是業務流程中最小的組成部分。多個活動在英文中肯定要用複數形式,即Activities;最後以複數化簡的方式標示活動的集合,以此來詮釋Activiti與工作流的目的與設計。
此專案是TomBayen(jBPM創始人)自2010年離開jBoss加入Alfresco公司後的又一力作:第一版在2010年5月釋出,當時僅支援最簡單的流程處理,之後的版本陸續完善了對BPMN2.0規範的支援。
值得一提的是,參與專案開發的除了TomBayen和十幾位核心開發人員之外,還有其他公司的員工參與,例如,SpringSource、MuleSoft、Salves、Signavio、FuseSource、NextLevel等。
Activiti是一個針對企業使用者、開發人員、系統管理員的輕量級工作流業務管理平臺,其核心是使用Java開發的快速、穩定的BPMN2.0流程引擎。Activiti是在ApacheV2許可下發布的,可以執行在任何型別的Java程式中,例如伺服器、叢集、雲服務等。Activiti可以完美地與Spring整合。同時,基於簡約思想的設計使Activiti非常輕量級。
Activiti有著活躍的社群,而且越來越多的企業都選擇Activiti作為自己的流程引擎或者將其嵌入到自己的系統平臺中(例如ESB)。
接下來簡單瞭解一下工作流及其相關規範的歷史。


1.2工作流基礎
1.2.1什麼是BPM
BPM是BusinessProcessManagement的縮寫,中文含義是業務流程管理,是一套達成企業各種業務環節整合的全面管理模式。
BPM是為了實現一定的經營目的而執行的一系列邏輯相關的活動的集合。業務流程的輸出是滿足市場需要的產品或服務。根據功能、管理範圍等的不同,企業流程管理一般分為生產流程層、運作層、計劃層和戰略層四個層次。BMP是根據業務環境的變化,推進人與人之間、人與系統之間,以及系統與系統之間的整合及調整的經營方法與解決方案的IT工具。
BPM最早是由工作流和企業應用整合(EnterpriseApplicationIntergration)逐步融合而發展起來的,當時是為了滿足無紙化辦公需求(這也是最早的需求之一)。筆者早期參與OA系統開發時曾經見到過“原始的”工作流—沒有工作流引擎,整個流程均使用一系列單獨為不同任務節點設計的頁面串聯起來,完成一個節點後在資料庫標記當前任務的名稱,以此做到“流程驅動”。
隨著時間的推移,BPM的定義範圍逐步擴充套件,不僅用來滿足無紙化辦公需求,現在BPM是一種企業整合技術,作為對面向服務系統架構SOA(Service-OrientedArchitecture)、企業應用整合EAI(EnterpriseApplicationIntegration)、企業服務匯流排ESB(EnterpriseServiceBus)的補充。
從概念上來說,BPM包含兩個不同方面的意思:管理規範和軟體工程。各大BPM供應商長期以來試圖抽象這兩個不同的方面,但是依然混亂。
作為管理規範,BPM是每一個戰略管理者的責任。BPM是組織必須執行的核心業務流程,包含了企業價值和如何提供其實現。作為日常工作的一部分,業務系統可以藉助模型和流程規範地定義業務流程。BPM流程圖表達的是執行流程的步驟,已完成特定目標。特別說明的是這些模型用於人與人的溝通。這些都是詮釋未決的,這意味著它們可以包含更高級別有價值的資訊而不包括不必要的細節。這種詮釋未決的過程模型也被稱為抽象業務流程(AbstractBusinessProcesses.)。
BPM作為軟體工程時可以由BPM系統(BPMS)執行可執行的業務流程。可執行的業務流程是在一個流程基礎上表示不同的流程順序。流程圖完全可以看做一個抽象的業務流程。可執行流程不同於抽象業務流程,因為它總是以最簡單的方式執行。這部分內容也是被大多數廠商認同並接受的。
1.2.2工作流生命週期
一個完整的工作流生命週期會經過5步,並且迭代迴圈,如圖1-1所示。
定義:工作流生命週期總是從流程定義開始。此階段的任務主要是收集業務需求並轉化為流程定義。一般由業務需求人員進行,然後交由開發人員加工轉化為計算機可以識別的流程定義。
釋出:由開發人員打包各種資源,然後在系統管理(平臺)中釋出流程定義。在具體的流程引擎中包括流程定義檔案(bpmn20.xml結尾)、自定義表單、任務監聽類。
執行:具體的流程引擎(例如,Activiti)按照事先定義的流程處理路線以任務驅動的方式執行業務流程。
監控:此階段是依賴執行階段。業務人員在辦理任務的同時收集每個任務(Task)的結果,然後根據結果做出相應處理,例如,在採購辦公用品流程中,在通過領導審批之後,採購人員就要根據申請單外出採購。
優化:在此階段,一個完整的流程已經結束,或許能滿足業務需求,或許需要優化,而糟糕的情況是需要重新設計(流程沒結束就異常終止),優化與設計正是此階段需要處理的。根據整個流程的執行過程結果分析問題的根源,然後在此基礎上進一步改進,並再次開始一個新的週期。
1.2.3什麼是BPMN
BusinessProcessModelingNotation,簡稱BPMN,中文譯為業務流程建模標註,是由BPMN標準組織釋出的,其第一版BPMN1.0規範於2004年5月釋出。經過多年的改進新的規範BPMN2.0於2011年釋出。之後各大廠商、開源社群均基於2.0規範設計自己的流程引擎,結束了各個廠商“各自為政”的局面,相應地統一了標準,從而利於以後的產品遷移。
BPMN定義了業務流程圖,其基於流程圖技術,同時對建立業務流程操作的圖形化模型進行了裁減。業務流程的模型就是圖形化物件的網圖,包括活動(也可以說工作)和定義操作順序的流控制。
在BPMN1.x版本中的一些概念,如人工任務、可以執行指令碼、自動決策等,都是獨立於供應商的視覺化標準化的方式。在BPMN2.0規範中重點聚焦在如何執行語義和一個被業界認可的通用交換格式。這意味著基於BPMN2.0的流程建模不僅在流程設計器上可以通用,還可以在任何符合BPMN2.0規範的流程引擎上執行。
關於BPMN的細節內容有很多,官方文件足足有500多頁,本書會在第4章介紹Activiti支援的BPMN2.0規範以及Activiti在BPMN2.0規範基礎上的擴充套件。關於BPMN的其他內容本書就不一一列舉了,有興趣的讀者可以仔細閱讀官方文件。


1.3Activiti的特點
1.資料持久化
Activiti的設計思想是簡潔、快速。有過應用開發經驗的開發人員都知道應用的瓶頸體現在和資料庫交換資料的過程中,針對這一點Activiti選擇了使用MyBatis,從而可以通過最優的SQL語句執行Command,僅憑如此就能讓引擎在速度上保持最高的效能。
2.引擎Service介面
Activiti引擎提供了七大Service介面,均通過ProcessEngine獲取,並且支援鏈式API程式設計風格。表1-1簡單列出七個Service介面及其作用,具體使用會在後面的章節陸續介紹。
表1-1Activiti引擎的七大Service介面
Service介面作用
RepositoryService流程倉庫Service,用於管理流程倉庫,例如,部署、刪除、讀取流程資源
IdentifyService身份Service,可以管理和查詢使用者、組之間的關係
RuntimeService執行時Service,可以處理所有正在執行狀態的流程例項、任務等
TaskService任務Service,用於管理、查詢任務,例如,簽收、辦理、指派等
FormService表單Service,用於讀取和流程、任務相關的表單資料
HistoryService歷史Service,可以查詢所有歷史資料,例如,流程例項、任務、活動、變數、附件等
ManagementService引擎管理Service,和具體業務無關,主要是可以查詢引擎配置、資料庫、作業等
3.流程設計器
在jBPM4時代有專門的Eclipse外掛可以用來設計jPDL,同樣Activiti團隊也專門設計了用來設計BPMN2.0規範的流程設計器—EclipseDesigner。此外還有Signavio公司為Activiti定製的基於Web的ActivitiModeler流程設計器。
4.原生支援Spring
Activiti原生支援Spring,這一點對企業應用來說尤為重要:可以很輕鬆地進行Spring整合,非常方便管理事務和解析表示式(Expression)。
5.分離執行時與歷史資料
Activiti繼承自jBPM4,在表結構設計方面也遵循執行時與歷史資料的分離,這樣的設計可以快速讀取執行時資料,僅當需要查詢歷史資料時再從專門的歷史資料表中讀取。這種設計方式可以大幅提高資料的存取效率,尤其是當資料日積月累時依然能夠快速反應。


1.4Activiti的應用
目前Activiti在國外已被很多廠商所使用,甚至有人專門成立了公司來培訓Activiti的使用。Activiti在國內的發展正在呈直線趨勢上升,已經成立了由很多熱心的技術愛好者參與的技術社群。目前,很多新專案、新產品都開始採用Activiti作為新一代工作流引擎。
1.在系統整合方面應用
與ESB(EnterpriseServiceBus,企業服務匯流排)整合,例如Mule。
與規則引擎(RuleEngine)整合,例如JBossDrools。
嵌入已有系統平臺,例如,很多公司都開發了自己的系統平臺,在其中嵌入Activiti作為平臺的一部分。
2.在其他產品中應用
Alfresco公司的ECM(EnterpriseContentManagement)產品Alfresco在企業中應用廣泛,主要涉及文件管理、協作、記錄管理、知識庫管理、Web內容管理等。
如果企業或客戶正在使用Alfresco管理文件,那麼針對文件管理流程設計的流程定義可以直接部署在Alfresco上使用;如果之前沒有接觸過jBPM而現在學會了使用Activiti,那麼不用再去學習其他的流程引擎。關於Activiti與jBPM的區別在1.6節會提到。
在Activiti沒有釋出之前一直使用jBPM作為流程引擎,在Activiti成熟以後Alfresco同時支援兩者,當然在以後的某個時間可能會取消對jBPM的支援。


1.5Activiti架構與元件
Activiti架構中最重要的肯定是引擎,當然還有剛剛提到的外部工具和元件,如圖1-2所示。
圖1-2Activiti架構圖
下面依次介紹Activiti架構圖中的各個元件。
ActivitiEngine:作為最核心的模組,提供針對BPMN2.0規範的解析、執行、建立、管理(任務、流程例項)、查詢歷史記錄並根據結果生成報表。
ActivitiModeler:是模型設計器,其並非由Activiti公司所開發,而是由業界認可的Signavio公司贈送的(Signavio原本是收費的產品,現在被免費授權給Activiti使用者使用)。適用於業務人員把需求轉換為規範流程定義。
ActivitiDesigner:功能和ActivitiModeler類似,同樣提供了基於BPMN2.0規範的視覺化設計功能,但是目前還沒有完全支援BPMN規範的定義。適用於開發人員,可以把業務需求人員用Signavio設計的流程定義(XML格式)匯入到Designer中,從而讓開發人員將其進一步加工成為可以執行的流程定義。
ActivitiExplorer:可以用來管理倉庫、使用者、組,啟動流程、任務辦理等。此元件使用REST風格API(目的在於讓開發人員快速入門),提供一個基礎的設計模型。如果業務簡單,也可以直接使用無需開發。還可以作為後臺管理員的流程、任務管理系統使用。
ActivitiREST:提供Restful風格的服務,允許客戶端以JSON的方式與引擎的RESTAPI互動,通用的協議具有跨平臺、跨語言的特性。


1.6Activiti與jBPM5比較
目前流行的工作流引擎有Activiti和jBPM5,而在jBPM5釋出以前大多數專案、平臺都是基於jBPM3、jBPM4開發的。本節內容從技術和實際應用上對Activiti和jBPM5進行比較。表1-2從技術層面比較了兩者的區別。
表1-2Activiti與jBPM5的技術層面對比
技術組成ActivitijBPM
ORM框架MyBatis3Hibernate3
持久化標準無EJBJPA規範
事務管理MyBatis自帶/Spring整合事務Bitronix,基於JTA事務管理
資料庫連線方式Jdbc/DataSourceJdbc/DataSource
Spring支援原生支援Spring,在流程中可以使用Spring代理的Bean作為表示式的一部分,並且支援JPA及事務管理預設沒有提供對Spring的支援
支援的資料庫Oracle、SQLServer、MySQL、H2、記憶體資料庫等Oracle、SQLServer、MySQL、記憶體資料庫等
設計模式命令模式、觀察者模式等
內部服務通訊Service間通過API呼叫基於ApacheMina非同步通訊
整合介面SOAP、Mule、RESTful訊息通訊
支援的流程格式BPMN2、xPDL、jPDL等(由PVM實現)目前僅只支援BPMN2xml
引擎核心PVM(流程虛擬機器)Drools
技術前身jBPM3、jBPM4DroolsFlow
團隊成員除了Alfresco公司的僱員之外還有Spring-Source、MuleSoft、Salves、Signavio、FuseSource、NextLevel等公司的員工加入有一個專門的團隊,此外還有一些個人參與者
附加工具提供了基於Eclipse外掛的流程設計器—EclipseDesigner,提供基於REST風格的ActivitiExplorer,可以用來管理倉庫、使用者、組、啟動流程、任務辦理等同樣提供Eclipse外掛和一個Web應用管理流程
釋出週期固定每兩個月釋出一版,其中包括:引擎、EclipseDesigner、ActivitiExplorer、REST應用jBPM的釋出週期相對來說不太固定,釋出內容包括引擎及基於Eclipse的設計器
Activiti是基於jBPM4設計的衍生版本,如果選擇Activiti可以繼續沿用jBPM的思想理念設計、整合Activiti到專案或平臺中,這也是相對於jBPM5來說的一個優勢;相反,對於jBPM5來說要花點時間重新接受開發者的設計思想。
在各個流程引擎社群中有很多關於該如何選擇Activiti和jBPM5的討論,這兩者有著很多相似的地方,爭論主要是對規則引擎的支援:jBPM5是基於DroolFlow所有自然深度繼承而來的規則引擎Drools;早期的Activiti功能比較簡單,後來陸續新增的新特性也支援規則引擎Drools,開發人員只要簡單配置規則介面即可達到與jBPM5一樣的效果。

1.7本章小結
本章內容主要是以初識工作流和Activiti的角度去講解什麼是工作流、什麼是Activiti。從Activiti專案的發起、特點、應用、架構,以及與其他同類產品比較的角度在概念層給讀者一個引導和認識。
作為一個開發人員,能夠知道為什麼需要學習Activiti,Activiti能幫助企業解決什麼問題,為什麼要選擇Activiti而不是其他的工作流引擎。
看到這裡你或許會不耐煩了,會想起一句話:“Talkischeap.Showmethecode”。下一章將帶領你體驗Activit
……

本文出自:ouyida3的csdn blog

2015.3.20