天天看點

Activiti實戰. 導讀

<b>實  戰</b>

<b>activiti實戰</b>

<b>闫洪磊 著</b>

<b> </b>

<b>為什麼要寫這本書</b>

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&amp;a頁面,筆者将盡量線上上為你提供最滿意的解答。書中的全部源檔案除可以從華章網站下載下傳外,還可以從筆者提供的這個網址下載下傳,筆者也會将相應的功能更新及時更正出來。如果你有更多的寶貴意見,也歡迎發送郵件至郵箱[email protected],期待能夠得到你們的真摯回報。

緻謝

首先要感謝tom beayens發起了這麼優秀的開源項目,以及alfresco公司tijs rademakers帶領的activiti團隊對此項目的無償貢獻與支援。

感謝activiti中文社群中每一位充滿激情的朋友—袁啟勳、臨遠、翔子、姜維、王壘、于廣嶽、第二少、小股東、陳浩、jackyrong、賣字母為生,以及名單之外的更多朋友,感謝他們長期以來對社群的支援和貢獻。

感謝機械工業出版社華章公司的編輯楊福川和姜影,我始終堅信專業的事找專業的人做,兩位在這兩年的時間中從各個方面支援我的寫作,他們的鼓勵和幫助引導我順利完成全部書稿。

感謝我的驢友們,和他們一起登山探險讓我精神得以放松,希望以後的空餘時間我們繼續用雙腳丈量大地。

最後感謝我的家人,感謝他們對我的支援和鼓勵。

謹以此書獻給我最親愛的家人,以及衆多熱愛activiti的朋友們!

闫洪磊(咖啡兔)

于上海

第一部分 準

備 篇

第1章

認識activiti2

1.1 什麼是activiti2

1.2 工作流基礎3

1.2.1 什麼是bpm3

1.2.2 工作流生命周期4

1.2.3 什麼是bpmn5

1.3 activiti的特點5

1.4 activiti的應用6

1.5 activiti架構與元件7

1.6 activiti與jbpm5比較8

1.7 本章小結9

第2章

搭建activiti開發環境10

2.1 下載下傳activiti10

2.1.1 目錄結構10

2.1.2 javadocs12

2.2 環境配置檢查14

2.2.1 檢查并安裝jdk14

2.2.2 檢查并安裝ant14

2.2.3 檢查并安裝maven15

2.3 配置檔案介紹16

2.3.1 activiti配置檔案16

2.3.2 maven配置檔案17

2.4 hello world18

2.4.1 最簡單的流程定義18

2.4.2 建立單元測試類20

2.4.3 運作hello world21

2.4.4 添加業務節點21

2.5 activiti explorer25

2.5.1 配置并運作activiti

explorer25

2.5.2 使用activiti explorer26

2.6 本章小結29

第二部分

基 礎 篇

第3章 流程設計工具32

3.1 基于b/s架構的流程設計器activiti

modeler32

3.1.1 activiti modeler特點32

3.1.2 下載下傳signavio-core-components33

3.1.3 配置打包與運作33

3.1.4 windows使用者打包36

3.1.5 設計請假流程37

3.1.6 導出bpmn2.0.xml41

3.2 在activiti explorer中使用activiti

modeler41

3.3 基于eclipse插件的流程設計器activiti

designer44

3.3.1 activiti designer特點44

3.3.2 安裝activiti designer45

3.3.3 設計流程46

3.3.4 自動化51

3.3.5 更新曆史遺留的流程設計55

3.3.6 導入activiti modeler設計56

3.3.7 泳池與泳道57

3.3.8 在activiti designer中使用泳道與泳池58