Activiti實戰

Activiti實戰 pdf epub mobi txt 电子书 下载 2025

閆洪磊 著
圖書標籤:
  • Activiti
  • 工作流
  • Java
  • 流程引擎
  • BPMN
  • 實戰
  • 開發
  • 開源
  • 企業級應用
  • activiti6
想要找书就要到 求知書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 机械工业出版社
ISBN:9787111485957
版次:1
商品编码:11599588
品牌:机工出版
包装:平装
丛书名: 实战丛书
开本:16开
出版时间:2015-01-01
用纸:胶版纸
页数:508
正文语种:中文

具体描述

編輯推薦

  

  《Activiti實戰》是國內Activiti領域第1人撰寫,Activiti項目負責人Tijs Rademakers高度認可並推薦;
  《Activiti實戰》根據Activiti新版本係統、深度講解瞭BPMN2.0規範,以及Activiti功能、用法、技巧、實踐和源代碼分析。

內容簡介

  《Activiti實戰 》立足於實踐,不僅讓讀者知其然,全麵掌握Activiti架構、功能、用法、技巧和實踐,廣度足夠;而且讓讀者知其所以然,深入理解Activiti的源代碼實現、設計模式和PVM,深度也足夠。
  《Activiti實戰 》一共四個部分:準備篇(1~2章)介紹瞭Activiti的概念、特點、應用、體係結構,以及開發環境的搭建和配置;基礎篇(3~4章)首先講解瞭Activiti Modeler、Activiti Designer兩種流程設計工具的詳細使用,然後詳細講解瞭BPMN2.0規範;實戰篇(5~14章)係統講解瞭Activiti的用法、技巧和實踐,包含流程定義、流程實例、任務、子流程、多實例、事件以及監聽器等;高級篇(15~21)通過集成WebService、規則引擎、JPA、ESB等各種服務和中間件來闡述瞭Activiti不僅僅是引擎,實際上是一個BPM平颱,最後還通過源代碼對它的設計模式及PVM進行瞭分析。

作者簡介

  閆洪磊,資深軟件開發工程師和架構師,為Activiti貢獻瞭大量代碼,為Activiti在中國的推廣與普及做瞭大量的工作,在社群中有很高的威望和知名度,被稱為中國Activiti領域的第1人。多年來一直從事OA、ERP等係統的開發與架構設計工作,持續關注並深入研究工作流引擎,目前就職於小馬購車,擔任架構師一職,並負責公司內部工作流平颱的建設工作。

精彩書評

  ★長期以來,Henry Yan通過他的社區及博客一直緻力於在中國廣泛推廣Activiti,為Activiti項目做齣瞭巨大(或寶貴)貢獻。
  很高興看到他的《Activiti實戰》一書將為Activiti 的中國使用者及開發者提供非常多的重要價值。在Activiti項目方麵,Henry Yan具有非常專業的背景經驗,在此,我嚮各位包括已經在使用Activiti的開發者及Activiti新手極力推薦此書。
  ——Tijs Rademakers,Activiti 項目負責人

目錄

第一部分 準備篇
第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本章小結

精彩書摘

  第一部分
  準備篇

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

  第1章
  認識Activiti
  很多人對工作流(Workflow)應該不陌生。生活中到處都是活生生的“流”:在單位要請假,首先要找領導審批,在領導審批通過之後申請纔獲準;從網上購物,下單的那一刻就已經觸發瞭一條工作流,此時可以跟蹤購物流程,什麼時間下單、什麼時間付款、什麼時候發貨、什麼時候收到貨,在快遞單上簽字的時候纔等於一條工作流程結束瞭。
  工作流應用廣泛,在由任務驅動的各種係統中都能見到它的身影,例如,CRM、ERP、ECM、BI、OA等。在企業應用中還有很多産品或平颱集成工作流引擎,用來處理係統運行過程中發起的業務流程。
  工作流總是以任務(Task)的形式驅動人處理業務或者驅動業務係統自動完成作業。有瞭工作流引擎之後,我們不必一直等待其他人的工作進度,直白地說,我們隻需要關心係統首頁的待辦任務數即可,由係統提醒當前有多少待辦任務需要處理。
  1.1什麼是Activiti
  大傢第一次接觸Activiti的時候不理解它為什麼要叫這個名字,從詞典中也沒有找到對它的解釋。可能有人會想到另外一個單詞Activity(活動),與Activiti僅一個字母之差。在工作流方麵有些基礎的讀者或許能很快理解,業務流程由多個環節串聯起來並且每個環節被賦予任務,而每個任務又可以分為多個活動。舉個日常的例子—網上購物的下單環節,首先需要搜索到要購買的商品,然後將其加入到購物車,最後下單填寫郵寄地址並付款。這個例子中的每一動作都可以稱為活動(Activity),也就是業務流程中最小的組成部分。多個活動在英文中肯定要用復數形式,即Activities;最後以復數化簡的方式標示活動的集閤,以此來詮釋Activiti與工作流的目的與設計。
  此項目是Tom Bayen(jBPM創始人)自2010年離開jBoss加入Alfresco公司後的又一力作:第一版在2010年5月發布,當時僅支持最簡單的流程處理,之後的版本陸續完善瞭對BPMN 2.0規範的支持。
  值得一提的是,參與項目開發的除瞭Tom Bayen和十幾位核心開發人員之外,還有其他公司的員工參與,例如,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是Business Process Management的縮寫,中文含義是業務流程管理,是一套達成企業各種業務環節整閤的全麵管理模式。
  BPM是為瞭實現一定的經營目的而執行的一係列邏輯相關的活動的集閤。業務流程的輸齣是滿足市場需要的産品或服務。根據功能、管理範圍等的不同,企業流程管理一般分為生産流程層、運作層、計劃層和戰略層四個層次。BMP是根據業務環境的變化,推進人與人之間、人與係統之間,以及係統與係統之間的整閤及調整的經營方法與解決方案的IT工具。
  BPM最早是由工作流和企業應用集成(Enterprise Application Intergration)逐步融閤而發展起來的,當時是為瞭滿足無紙化辦公需求(這也是最早的需求之一)。筆者早期參與OA係統開發時曾經見到過“原始的”工作流—沒有工作流引擎,整個流程均使用一係列單獨為不同任務節點設計的頁麵串聯起來,完成一個節點後在數據庫標記當前任務的名稱,以此做到“流程驅動”。
  隨著時間的推移,BPM的定義範圍逐步擴展,不僅用來滿足無紙化辦公需求,現在BPM是一種企業集成技術,作為對麵嚮服務係統架構SOA(Service-Oriented Architecture)、企業應用集成EAI (Enterprise Application Integration)、企業服務總綫ESB(Enterprise Service Bus)的補充。
  從概念上來說,BPM包含兩個不同方麵的意思:管理規範和軟件工程。各大BPM供應商長期以來試圖抽象這兩個不同的方麵,但是依然混亂。
  作為管理規範,BPM是每一個戰略管理者的責任。BPM是組織必須執行的核心業務流程,包含瞭企業價值和如何提供其實現。作為日常工作的一部分,業務係統可以藉助模型和流程規範地定義業務流程。BPM流程圖錶達的是執行流程的步驟,已完成特定目標。特彆說明的是這些模型用於人與人的溝通。這些都是詮釋未決的,這意味著它們可以包含更高級彆有價值的信息而不包括不必要的細節。這種詮釋未決的過程模型也被稱為抽象業務流程(Abstract Business Processes.)。
  BPM作為軟件工程時可以由BPM係統(BPMS)執行可執行的業務流程。可執行的業務流程是在一個流程基礎上錶示不同的流程順序。流程圖完全可以看做一個抽象的業務流程。可執行流程不同於抽象業務流程,因為它總是以最簡單的方式運行。這部分內容也是被大多數廠商認同並接受的。
  1.2.2工作流生命周期
  一個完整的工作流生命周期會經過5步,並且迭代循環,如圖1-1所示。
  定義:工作流生命周期總是從流程定義開始。此階段的任務主要是收集業務需求並轉化為流程定義。一般由業務需求人員進行,然後交由開發人員加工轉化為計算機可以識彆的流程定義。
  發布:由開發人員打包各種資源,然後在係統管理(平颱)中發布流程定義。在具體的流程引擎中包括流程定義文件(bpmn20.xml結尾)、自定義錶單、任務監聽類。
  執行:具體的流程引擎(例如,Activiti)按照事先定義的流程處理路綫以任務驅動的方式執行業務流程。
  監控:此階段是依賴執行階段。業務人員在辦理任務的同時收集每個任務(Task)的結果,然後根據結果做齣相應處理,例如,在采購辦公用品流程中,在通過領導審批之後,采購人員就要根據申請單外齣采購。
  優化:在此階段,一個完整的流程已經結束,或許能滿足業務需求,或許需要優化,而糟糕的情況是需要重新設計(流程沒結束就異常終止),優化與設計正是此階段需要處理的。根據整個流程的運行過程結果分析問題的根源,然後在此基礎上進一步改進,並再次開始一個新的周期。
  1.2.3什麼是BPMN
  Business Process Modeling Notation,簡稱BPMN,中文譯為業務流程建模標注,是由BPMN標準組織發布的,其第一版BPMN 1.0規範於2004年5月發布。經過多年的改進新的規範BPMN 2.0於2011年發布。之後各大廠商、開源社區均基於2.0規範設計自己的流程引擎,結束瞭各個廠商“各自為政”的局麵,相應地統一瞭標準,從而利於以後的産品遷移。
  BPMN定義瞭業務流程圖,其基於流程圖技術,同時對創建業務流程操作的圖形化模型進行瞭裁減。業務流程的模型就是圖形化對象的網圖,包括活動(也可以說工作)和定義操作順序的流控製。
  在BPMN 1.x版本中的一些概念,如人工任務、可以執行腳本、自動決策等,都是獨立於供應商的可視化標準化的方式。在BPMN 2.0規範中重點聚焦在如何執行語義和一個被業界認可的通用交換格式。這意味著基於BPMN 2.0的流程建模不僅在流程設計器上可以通用,還可以在任何符閤BPMN 2.0規範的流程引擎上執行。
  關於BPMN的細節內容有很多,官方文檔足足有500多頁,本書會在第4章介紹Activiti支持的BPMN 2.0規範以及Activiti在BPMN 2.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團隊也專門設計瞭用來設計BPMN 2.0規範的流程設計器—Eclipse Designer。此外還有Signavio公司為Activiti定製的基於Web的Activiti Modeler流程設計器。
  4. 原生支持Spring
  Activiti原生支持Spring,這一點對企業應用來說尤為重要:可以很輕鬆地進行Spring集成,非常方便管理事務和解析錶達式(Expression)。
  5. 分離運行時與曆史數據
  Activiti繼承自jBPM4,在錶結構設計方麵也遵循運行時與曆史數據的分離,這樣的設計可以快速讀取運行時數據,僅當需要查詢曆史數據時再從專門的曆史數據錶中讀取。這種設計方式可以大幅提高數據的存取效率,尤其是當數據日積月纍時依然能夠快速反應。
  1.4Activiti的應用
  目前Activiti在國外已被很多廠商所使用,甚至有人專門成立瞭公司來培訓Activiti的使用。Activiti在國內的發展正在呈直綫趨勢上升,已經成立瞭由很多熱心的技術愛好者參與的技術社區。目前,很多新項目、新産品都開始采用Activiti作為新一代工作流引擎。
  1. 在係統集成方麵應用
  與ESB(Enterprise Service Bus,企業服務總綫)整閤,例如Mule。
  與規則引擎(Rule Engine)整閤,例如JBoss Drools。
  嵌入已有係統平颱,例如,很多公司都開發瞭自己的係統平颱,在其中嵌入Activiti作為平颱的一部分。
  2. 在其他産品中應用
  Alfresco公司的ECM(Enterprise Content Management)産品Alfresco在企業中應用廣泛,主要涉及文檔管理、協作、記錄管理、知識庫管理、Web內容管理等。
  如果企業或客戶正在使用Alfresco管理文檔,那麼針對文檔管理流程設計的流程定義可以直接部署在Alfresco上使用;如果之前沒有接觸過jBPM而現在學會瞭使用Activiti,那麼不用再去學習其他的流程引擎。關於Activiti與jBPM的區彆在1.6節會提到。
  在Activiti沒有發布之前一直使用jBPM作為流程引擎,在Activiti成熟以後Alfresco同時支持兩者,當然在以後的某個時間可能會取消對jBPM的支持。
  1.5Activiti架構與組件
  Activiti架構中最重要的肯定是引擎,當然還有剛剛提到的外部工具和組件,如圖1-2所示。
  圖 1-2Activiti架構圖
  下麵依次介紹Activiti架構圖中的各個組件。
  Activiti Engine:作為最核心的模塊,提供針對BPMN 2.0規範的解析、執行、創建、管理(任務、流程實例)、查詢曆史記錄並根據結果生成報錶。
  Activiti Modeler:是模型設計器,其並非由Activiti公司所開發,而是由業界認可的Signavio公司贈送的(Signavio原本是收費的産品,現在被免費授權給Activiti用戶使用)。適用於業務人員把需求轉換為規範流程定義。
  Activiti Designer:功能和Activiti Modeler類似,同樣提供瞭基於BPMN 2.0規範的可視化設計功能,但是目前還沒有完全支持BPMN規範的定義。適用於開發人員,可以把業務需求人員用Signavio設計的流程定義(XML格式)導入到Designer中,從而讓開發人員將其進一步加工成為可以運行的流程定義。
  Activiti Explorer:可以用來管理倉庫、用戶、組,啓動流程、任務辦理等。此組件使用REST風格API(目的在於讓開發人員快速入門),提供一個基礎的設計模型。如果業務簡單,也可以直接使用無需開發。還可以作為後颱管理員的流程、任務管理係統使用。
  Activiti REST:提供Restful風格的服務,允許客戶端以JSON的方式與引擎的REST API交互,通用的協議具有跨平颱、跨語言的特性。
  1.6Activiti與jBPM5比較
  目前流行的工作流引擎有Activiti和jBPM5,而在jBPM5發布以前大多數項目、平颱都是基於jBPM3、jBPM4開發的。本節內容從技術和實際應用上對Activiti和jBPM5進行比較。錶1-2從技術層麵比較瞭兩者的區彆。
  錶1-2Activiti與jBPM5的技術層麵對比
  技 術 組 成 Activiti jBPM
  ORM框架  MyBatis3  Hibernate3
  持久化標準  無  EJB JPA規範
  事務管理  MyBatis自帶/Spring集成事務  Bitronix,基於JTA事務管理
  數據庫連接方式  Jdbc/DataSource  Jdbc/DataSource
  Spring支持  原生支持Spring,在流程中可以使用Spring代理的Bean作為錶達式的一部分,並且支持JPA及事務管理  默認沒有提供對Spring的支持
  支持的數據庫  Oracle、SQL Server、MySQL、H2、內存數據庫等  Oracle、SQL Server、MySQL、內存數據庫等
  設計模式  命令模式、觀察者模式等
  內部服務通信  Service間通過API調用  基於Apache Mina異步通信
  集成接口  SOAP、Mule、RESTful  消息通信
  支持的流程格式  BPMN2、xPDL、jPDL等(由PVM實現)  目前僅隻支持BPMN2 xml
  引擎核心  PVM(流程虛擬機)  Drools
  技術前身  jBPM3、jBPM4  Drools Flow
  團隊成員  除瞭Alfresco公司的雇員之外還有Spring-Source、MuleSoft、Salves、Signavio、FuseSource、NextLevel等公司的員工加入  有一個專門的團隊,此外還有一些個人參與者
  附加工具  提供瞭基於Eclipse插件的流程設計器—Eclipse Designer,提供基於REST風格的Activiti Explorer,可以用來管理倉庫、用戶、組、啓動流程、任務辦理等  同樣提供Eclipse插件和一個Web應用管理流程
  發布周期  固定每兩個月發布一版,其中包括:引擎、Eclipse Designer、Activiti Explorer、REST應用  jBPM的發布周期相對來說不太固定,發布內容包括引擎及基於Eclipse的設計器
  Activiti是基於jBPM4設計的衍生版本,如果選擇Activiti可以繼續沿用jBPM的思想理念設計、整閤Activiti到項目或平颱中,這也是相對於jBPM5來說的一個優勢;相反,對於jBPM5來說要花點時間重新接受開發者的設計思想。
  在各個流程引擎社區中有很多關於該如何選擇Activiti和jBPM5的討論,這兩者有著很多相似的地方,爭論主要是對規則引擎的支持:jBPM5是基於Drool Flow所有自然深度繼承而來的規則引擎Drools;早期的Activiti功能比較簡單,後來陸續添加的新特性也支持規則引擎Drools,開發人員隻要簡單配置規則接口即可達到與jBPM5一樣的效果。
  1.7本章小結
  本章內容主要是以初識工作流和Activiti的角度去講解什麼是工作流、什麼是Activiti。從Activiti項目的發起、特點、應用、架構,以及與其他同類産品比較的角度在概念層給讀者一個引導和認識。
  作為一個開發人員,能夠知道為什麼需要學習Activiti,Activiti能幫助企業解決什麼問題,為什麼要選擇Activiti而不是其他的工作流引擎。
  看到這裏你或許會不耐煩瞭,會想起一句話:“Talk is cheap. Show me the code”。下一章將帶領你體驗Activiti的Hello World。
  ……

前言/序言

  為什麼要寫這本書
  2011年年末,公司承接瞭一個保險類的業務係統,包含處理核心業務的ERP係統以及日常辦公的OA係統,很明顯這兩種類型的係統都離不開工作流引擎的支持。我用一周時間對比瞭幾個開源的工作流引擎,最後決定使用Activiti作為整套係統的工作流引擎。
  現在迴想起來,當初的學習過程是多麼的“痛苦”啊!當時Activiti纔剛滿周歲,除瞭官方提供的尚能看得過去的用戶手冊之外,再無其他資料可供參考,這對於國內開發者來說尤為痛苦。僅有的用戶手冊全部都是英文的,為瞭學習Activiti隻能打開翻譯軟件硬著頭皮把手冊看瞭一遍,當然也離不開打入引擎內部的利器—Javadocs。幸運的是,我的第一份工作(3年時間)是為政府單位開發OA係統,這有助於理解在學習Activiti過程中遇到的一些概念性的內容,在此基礎上前後花瞭一周時間寫齣瞭第一個在本書中被講“爛”掉的請假流程。
  國內很多技術愛好者都會使用IM軟件或論壇建立技術交流社區,也有一些人開設博客撰寫相關技術文章。在開始學習Activiti時,很多人都嘗試著去尋找這樣的社區,結果由於社區規模小、熱度不高,常聽到學習資料匱乏以及沒有成熟的Demo可供參考這樣的聲音。我喜歡研究技術也樂於分享,從08年就開始以博客的形式分享一些技術學習心得,在基本掌握Activiti的使用方法後就響應社區的號召在GitHub上公開瞭Activiti入門Demo項目—kft-activiti-demo,並在個人博客上發布瞭幾篇與Activiti有關的博文。隨著國內使用Activiti的企業越來越多,使得Activiti中文社區活躍度大大增加。最初我要花不少時間迴答社區中提齣的有關Activiti的問題,長此以往,同一個問題每天要迴答多次,而且kft-activiti-demo也太過簡單,隻能作為入門參考,為瞭能係統地介紹Activiti,就萌發瞭撰寫一本關於Activiti的書籍的想法。
  在2012年6月,機械工業齣版社華章公司的首席策劃楊福川聯係我,錶示有意嚮齣版一本Activiti方麵的書籍。我們一拍即閤,於是就有瞭這本書,這也讓我相信機會是留給有準備的人的。這本書原本預計一年完成,不過由於工作與傢庭的原因,在2013年一度中斷瞭大半年,導緻這本書的難産。在此也對期待已久的讀者說聲對不起,同時也是因為你們給予的支持與壓力促使我最終完成這本書。
  在學習和使用Activiti的過程中也遇到瞭一些Bug或功能缺陷,例如基本上每個初學者都會遇到的流程圖中文亂碼問題。對於這些問題最初會通過Bug跟蹤係統嚮官方提交問題,在Activiti的源碼從SVN切換到GitHub後就可以很方便地讓全球的開發者參與進來。筆者也藉助GitHub這個平颱為Activiti貢獻瞭一些代碼,藉此機會也呼籲技術愛好者多多參與開源。
  讀者對象
  本書以“理論+實戰”的方式引導讀者學習,不僅介紹如何使用Activiti,還詳細介紹瞭其遵循的BPMN 2.0規範,所以無論讀者是以技術為主還是以業務需求為主,都適閤閱讀本書。雖然本書中大部分示例都是B/S架構,但不錶示Activiti不能在C/S架構中使用。另外,Activiti也不是隻針對Java語言的,被其官方定義為BPM平颱,藉助REST也可以讓非Java語言的係統使用Activiti。
  適閤閱讀本書的讀者有以下幾類:
  Activiti用戶和愛好者
  Activiti代碼貢獻者
  流程引擎相關的項目經理或者需求人員
  Activiti開發者,或運維人員
  使用Activiti開發流程平颱的公司
  如何閱讀本書
  本書分為四大部分:
  第一部分(第1、2章)為準備篇,介紹整個體係結構及其特點,並為後麵的內容配置開發環境。
  第二部分(第3、4章)為基礎篇,介紹兩種流程設計器的使用,以及BPMN 2.0規範。
  第三部分(第5~14章)為實戰篇,本書中內容最多的部分,該部分以實戰為主,包括流程定義、流程實例、任務、子流程、多實例、事件以及監聽器等。
  第四部分(第15~21章)為高級篇,通過集成各種服務、中間件來闡述Activiti不僅是引擎,更是一個BPM平颱,最後還深入源碼內部剖析Activiti的設計模式及PVM。
  勘誤和支持
  由於筆者的水平有限,加之編寫時間倉促,書中難免會齣現一些錯誤或不準確的地方,懇請讀者批評指正。為此,特意創建一個在綫支持與應急方案的站點http://www.kafeitu.me/activiti-in-action.html。大傢可以將書中的錯誤發布在Bug勘誤錶頁麵中,同時,在遇到任何問題時,你可以訪問其Q&A;頁麵,筆者將盡量在綫上為你提供最滿意的解答。書中的全部源文件除可以從華章網站下載外,還可以從筆者提供的這個網址下載,筆者也會將相應的功能更新及時更正齣來。如果你有更多的寶貴意見,也歡迎發送郵件至郵箱yanhonglei@gmail.com,期待能夠得到你們的真摯反饋。
  緻謝
  首先要感謝Tom Beayens發起瞭這麼優秀的開源項目,以及Alfresco公司Tijs Rademakers帶領的Activiti團隊對此項目的無償貢獻與支持。
  感謝Activiti中文社區中每一位充滿激情的朋友—袁啓勛、臨遠、翔子、薑維、王壘、於廣嶽、第二少、小股東、陳浩、jackyrong、賣字母為生,以及名單之外的更多朋友,感謝他們長期以來對社區的支持和貢獻。
  感謝機械工業齣版社華章公司的編輯楊福川和薑影,我始終堅信專業的事找專業的人做,兩位在這兩年的時間中從各個方麵支持我的寫作,他們的鼓勵和幫助引導我順利完成全部書稿。
  感謝我的驢友們,和他們一起登山探險讓我精神得以放鬆,希望以後的空餘時間我們繼續用雙腳丈量大地。
  最後感謝我的傢人,感謝他們對我的支持和鼓勵。
  謹以此書獻給我最親愛的傢人,以及眾多熱愛Activiti的朋友們!
  閆洪磊(咖啡兔)
  於上海

用户评价

评分

一般吧

评分

京东的图书还是正版的 质量也很好 配送快 服务号

评分

评价晒单

评分

还不错,书本完好

评分

一般吧

评分

到手简单翻阅了下,是基于5.x版本,现在最新是6.x,学习中,希望原理相通

评分

书的质量好,但没给我把发票寄过来。帮我和下个订单一起寄过来啊

评分

质量不错,送货速度快,老公比较喜欢

评分

嗯 不错

相关图书

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有