Activiti權威指南( 簡體 字) | |
作者:冀正,張志祥 | 類別:1. -> 程式設計 -> 綜合 |
出版社:清華大學出版社 | 3dWoo書號: 47213 詢問書籍請說出此書號! 有庫存 NT售價: 395 元 |
出版日:8/1/2017 | |
頁數:380 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787302474982 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1章環境搭建
1.1環境搭建 1.1.1安裝GitHub 1.1.2安裝Maven 1.2編譯源碼 1.3源碼目錄說明 1.4安裝流程設計器 1.5工程搭建 第2章探險流程引擎 2.1流程配置文件 2.1.1Activiti配置風格 2.1.2Spring配置風格 2.2流程引擎架構 2.3構造流程引擎實例對象 2.3.1初始化流程引擎之Activiti配置風格 2.3.2構造流程引擎實例對象 2.3.3創建流程引擎配置類實例 2.3.4初始化流程引擎 2.3.5初始化流程引擎之Spring配置風格 2.4初始化流程引擎配置類 2.5配置器 2.5.1初始化配置器 2.5.2配置器實戰 2.6初始化流程引擎 2.6.1操作引擎表 2.7管理流程引擎 2.7.1注冊流程引擎 2.7.2關閉流程引擎 2.8流程引擎生命周期監聽器 2.9其他方式構造引擎實例 2.9.1ProcessEngineConfiguration類創建引擎 2.9.2編程方式創建引擎 第3章初識流程資源部署 3.1流程資源概述 3.1.1流程文檔部署生命周期 3.1.2DeploymentBuilder核心類 3.2流程文檔部署 3.2.1定義流程文檔 3.2.2文本方式部署 3.2.3classpath資源部署 3.2.4流式部署 3.3BpmnModel方式部署 3.4校驗BpmnModel實例對象 3.5BpmnModel轉換流程文檔 3.6流程文檔轉換BpmnModel 3.7使用建議 第4章流程文檔解析原理 4.1文檔解析基礎 4.1.1文檔解析模型 4.1.2Activiti文檔解析技術選型演變 4.1.3文檔解析實戰 4.2元素解析功能架構設計 4.2.1BPMN2.0元素概述 4.2.2元素解析功能架構設計 4.2.3開閉原則 4.2.4元素與元素屬性承載類以及元素解析器的對應關系 4.2.5元素屬性承載類架構 4.3元素解析環境準備 4.3.1文檔轉換器 4.3.2封裝流程文檔數據流 4.3.3初始化元素解析器 4.3.4文檔轉換器功能 4.3.5元素解析環境準備 4.3.6驗證流程文檔格式 4.4元素解析 4.4.1元素解析入口 4.4.2解析根元素 4.4.3流程內元素解析入口 4.4.4解析連線 4.4.5獲取元素坐標 4.5子元素解析 4.5.1初始化子元素解析器 4.5.2解析子元素 4.5.3解析擴展元素 4.6節點與連線關聯 第5章自定義元素解析 5.1自定義元素解析原理 5.2存儲自定義元素屬性值 5.3自定義元素實戰 5.4擴展黑名單元素 5.4.1擴展元素屬性原理 5.4.2任務節點擴展屬性實戰 5.5擴展非黑名單元素 5.5.1自定義元素解析器 5.5.2替換引擎元素解析器 第6章事件轉發器 6.1初始化事件轉發器 6.2事件轉發器架構 6.3注冊事件監聽器 6.4事件轉發功能之新老版本兼容 6.5事件轉發原理以及缺陷 6.6添加事件監聽器 6.6.1使用配置方式添加 6.6.2動態添加 6.7日志監聽器 6.7.1初始化日志監聽器 6.7.2初始化日志處理器 6.7.3日志處理器架構 6.7.4收集日志數據入口 6.8日志清洗器架構 6.8.1數據庫日志清洗器 6.8.2生成日志數據 6.8.3日志存儲 6.9自定義日志清洗器 第7章流程文檔部署原理 7.1初始化部署器 7.1.1初始化內置部署器 7.1.2部署器依賴關系 7.2部署命令 7.2.1過濾重復文檔 7.2.2設置標識位 7.2.3添加會話緩存 7.2.4部署管理器 7.3Bpmn部署器 7.3.1獲取資源信息 7.3.2封裝資源信息 7.3.3校驗資源名稱 7.3.4計算流程定義版本值 7.3.5生成流程定義id值 7.3.6移除過期作業 7.3.7添加作業 7.3.8處理消息 7.3.9處理信號 7.3.10設置流程啟動人 7.4自定義部署器實戰 第8章緩存 8.1背景 8.2初始化緩存策略 8.3部署管理器 8.4緩存處理類架構 8.5默認緩存處理類及Bug 8.6流程定義緩存 8.6.1自定義緩存處理類 8.6.2驗證自定義緩存處理類 8.7Activiti新特性之節點緩存 8.8節點緩存實戰 8.9節點緩存原理 8.9.1初始化節點緩存數據 8.9.2更新節點緩存 8.9.3節點緩存架構 8.9.4節點緩存使用誤區 8.10自定義節點緩存實戰 8.10.1自定義節點緩存類 8.10.2修復Activiti節點緩存不更新Bug 8.10.3擴展引擎配置類功能 8.10.4配置器高級用法 8.10.5使用自定義節點緩存類 8.11任務節點緩存數據獲取原理 8.11.1獲取任務節點緩存數據 8.11.2解析任務節點緩存數據 8.11.3運用任務節點緩存數據 8.12動態修改任務節點緩存數據 8.13節點緩存使用技巧 第9章定時作業 9.1初始化作業執行器 9.2初始化作業處理器 9.2.1任務超時作業 9.2.2定時任務作業 9.2.3定時啟動流程實例作業 9.2.4其他作業 9.3作業執行器原理 9.3.1初始化作業執行器 9.3.2啟動作業執行器 9.4添加定時作業 9.5執行定時作業 9.6處理作業 9.6.1批量處理作業 9.6.2執行作業之異常處理 9.7關閉作業執行器 9.8自定義作業處理器 第10章流程虛擬機 10.1流程虛擬機原理 10.2虛擬機入口 10.3流程定義轉換準備 10.3.1初始化對象解析器集合 10.3.2初始化內置對象解析器 10.3.3解析調度類BpmnParseHandlers 10.3.4BpmnParseHandler架構 10.3.5對象解析器架構 10.4流程對象解析入口 10.5流程子元素對象解析入口 10.5.1任務節點對象解析器 10.5.2創建ActivityImpl實例對象 10.5.3多實例對象解析 10.5.4連線對象解析 10.6PvmProcessElement類架構 10.7自定義對象解析器 10.7.1任務節點擴展屬性 10.7.2自定義任務節點對象解析器 10.7.3獲取自定義屬性 10.7.4運用自定義對象解析器 10.8流程虛擬機實戰 10.8.1獲取流程虛擬機對象 10.8.2入侵流程虛擬機 10.9操作連線表達式 10.9.1自動計算連線表達式 10.9.2獲取連線表達式 第11章監聽器原理 11.1監聽器生命周期 11.2內置記錄監聽器 11.2.1內置任務記錄監聽器 11.2.2內置執行記錄監聽器 11.3歷史解析器架構 11.3.1添加內置記錄監聽器 11.3.2初始化歷史解析器 11.3.3歷史節點結束通知 11.3.4控制歸檔歷史數據級別 11.3.5更新歷史數據 11.3.6歷史節點開始通知 11.4注入執行監聽器 11.5注入任務監聽器 11.6觸發執行監聽器 11.6.1class方式調度 11.6.2delegateExpression方式調度 11.6.3expression方式調度 11.6.4執行監聽器觸發入口 11.7觸發任務監聽器 11.8監聽器代理 11.8.1默認代理類 11.8.2自定義代理類 11.9自定義全局任務監聽器 11.10Activiti新特性之字段注射模式 第12章Activiti之設計模式 12.1命令模式說明 12.1.1命令模式的結構說明 12.1.2命令模式實戰 12.2Activiti命令模式 12.2.1初始化命令配置類 12.2.2Activiti事務傳播行為 12.2.3Spring事務攔截器 12.2.4初始化命令調度者 12.2.5初始化命令上下文工廠 12.2.6初始化命令攔截器 12.3Activiti職責鏈模式 12.4命令相關類職責 12.5命令攔截器 12.5.1日志攔截器 12.5.2命令上下文攔截器 12.5.3上下文類 12.5.4創建命令上下文實例對象 12.5.5命令調度者攔截器 12.6自定義命令攔截器 12.7命令類調度入口 12.8Activiti事務 12.8.1MyBatis事務管理 12.8.2事務上下文架構 12.8.3事務上下文工廠類 12.8.4事務監聽器 12.8.5注冊同步事務 第13章流程虛擬機運轉 13.1流程實例運轉入口 13.2啟動流程實例命令類 13.2.1獲取ProcessDefinitionEntity實例對象 13.2.2重新生成流程定義緩存數據 13.3創建流程實例 13.3.1創建ExecutionEntity實例對象 13.3.2獲取dataObject 13.3.3區別流程實例與執行實例 13.3.4添加歷史流程實例數據 13.4虛擬機運轉原理 13.5AtomicOperation架構 13.6流程實例啟動 13.6.1非異步節點處理 13.6.2異步節點處理 13.7原子類流轉 13.7.1流程啟動原子類 13.7.2流程啟動準備原子類 13.7.3活動節點執行原子類 13.7.4開始節點行為類 13.7.5途經連線 13.7.6通知連線完成原子類 13.7.7連線銷毀原子類 13.7.8其他原子類 13.8Activiti新特性之忽略節點 第14章行為篇 14.1活動行為工廠類 14.1.1初始化活動行為工廠類 14.1.2活動行為類架構 14.2排他網關行為類原理 14.3擴展排他網關實戰 14.3.1自定義排他網關行為類 14.3.2自定義活動行為工廠類 14.3.3替換默認活動行為工廠類 14.4任務節點處理人多元化配置 14.4.1任務處理人擴展 14.4.2自定義任務解析器 14.4.3自定義任務行為類 14.4.4自定義活動行為工廠類 14.5忽略節點使用誤區 14.6修復Activiti忽略節點Bug 14.7修復Activiti子流程業務鍵Bug 第15章Activiti存儲之MyBatis 15.1初始化dataSource 15.2Activiti數據訪問層關系分析 15.2.1實體類與數據庫表的映射 15.2.2實例化SqlSessionFactory 15.3自定義Mapper實戰 15.3.1自定義Mapper 15.3.2自定義SQL執行原理 15.4SessionFactory 15.4.1初始化SessionFactory 15.4.2SessionFactory架構 15.5Session 15.5.1Session架構 15.5.2實例化方式創建Session實例 15.5.3反射方式創建Session實例 15.5.4實例化DbSqlSession 15.6SQL語句 15.6.1SQL語句適配器 15.6.2SQL執行id值生成規則 15.7數據層和數據的關系 15.7.1PersistentObject業務對象 15.7.2實體管理類 15.8添加會話緩存 15.9更新操作 15.9.1會話緩存方式更新 15.9.2SqlSession方式更新 15.10刪除操作 15.10.1DeleteOperation接口 15.10.2BulkDeleteOperation刪除數據 15.10.3CheckedDeleteOperation刪除數據 15.10.4樂觀鎖 15.11刷新會話緩存入口 15.12會話緩存數據持久化 15.12.1移除不必要的數據 15.12.2刷新序列化變量 15.12.3獲取更新對象 15.12.4刷新數據 15.12.5解決依賴數據插入先后順序 15.12.6性能優化 第16章實戰 16.1高并發id生成器 16.1.1id生成器初始化 16.1.2自增id生成器 16.1.3自定義主鍵生成器 16.2變量類型 16.2.1初始化變量管理類 16.2.2變量管理類架構 16.2.3變量處理類 16.2.4自定義變量處理類 16.3ServiceLoader方式注入配置器 16.4節點跳轉 16.4.1常規節點跳轉 16.4.2分支節點跳轉 16.4.3多實例節點跳轉 16.5會簽 16.5.1串行多實例 16.5.2認領和歸還任務 16.5.3代理任務 16.5.4并行多實例 16.5.5加簽 16.5.6減簽和退簽 16.6會簽節點自定義權重實現 16.6.1定義處理人權重 16.6.2獲取權重信息并自動計算 16.6.3優化建議 16.7接管Activiti 16.7.1接管Activiti映射文件 16.7.2禁用用戶表和組表 16.7.3自定義用戶角色和部門表 16.7.4擴展任務節點參與者表 16.7.5自定義任務節點參與者命令類 16.7.6流程文檔支持設置部門屬性 16.7.7解析及運用流程文檔部門屬性 16.7.8自定義代辦SQL 16.8接管Activiti實體管理類 本書旨在深入學習Activiti的內部處理機制。由淺入深、由易到難地對Activiti源碼展開了系統的講解和擴展,并對框架中的部分缺陷進行修正,從而使讀者可以更加靈活的運用和改造Activiti。
本書內容包括流程引擎配置類以及流程引擎類的內部實現機制、配置器的使用、流程引擎的管理、流程資源的部署以及內部實現機制、元素解析底層實現、自定義元素解析實戰、為任意節點無限擴展屬性、流程虛擬機的創建以及運行原理、原子類職責、事件轉發器、日志監聽器以及日志清洗器使用、修復Activiti部分Bug、自定義部署器實戰、對象解析器原理、監聽器的原理、事務、活動行為類以及活動行為工廠類、會話緩存的構造過程以及缺陷、自定義高并發id生成器、自定義變量類型、節點跳轉、會簽、加簽、退簽、會簽節點自定義權重實現、接管Activiti映射文件、擴展任務節點處理人多維度配置、自定義代辦SQL、接管Activiti實體管理類等。 本書難度為初級到高級、適用于所有開發人員、設計人員、Activiti愛好者、即將成為架構師或者已經是架構師的朋友、也可以作為高校學生深入學習Activiti的參考讀物。 創作背景
對于OA內部辦公系統、ERP系統、審批系統等經常需要大量的使用工作流,而Activiti框架可以更好地輔助開發人員解決實際工作中遇到的流程問題,因此Activiti的重要性不言而喻。 很多朋友在實際項目開發中意識到了Activiti的重要性,也看了相關的書籍和資料,但是常聽到這樣的抱怨Activiti的書我看了不少,覺得看懂了,但就是不知道如何更好地擴展以及改造Activiti,更不知道如何對其進行性能優化,達不到技術解決實際需求。 其實不難看出,造成這樣的情況歸根結底在于:這些朋友對于Activiti缺少架構方面的了解,缺少底層實現細節的認識,認為只使用Activiti提供的API就足夠項目開發了,其實還差得很遠,并沒有從更高層次來理解和認識Activiti,沒有“真正”讓Activiti框架開足馬力來為項目服務。正所謂了解其本質,掌握其原理才能更好地讓Activiti框架為自身項目服務,而不是成為項目中的黑匣子、絆腳石。 市面上及網絡上有不少Activiti方面的書籍,但對于一般的開發朋友而言,要么太深,不能撥云見日,要么太淺,看了跟沒看沒有什么區別,再次遇到類似的問題還是無從下手,其根本原因還是講得太淺、不成系統,與企業開發脫軌。 對于所有想要深入學習Activiti框架的朋友,其實需要類似這樣的書籍。 ■講解深入淺出、淺顯易懂。 ■實例來自實際的企業級項目開發,而不是來自虛擬的場景。 ■對于Activiti框架提供的功能,在開發過程中覺得部分功能不太好,可以靈活地擴展框架。 ■深入講解Activiti的內部實現機制以及運行原理。 ■一本“干貨”書。 這也是本書創建的目的,授人于魚不如授之于漁,希望能夠幫助更多的朋友更好地合理運用、擴展以及優化Activiti,而不是僅僅局限于使用框架提供的API。因為會用僅僅是入門而已,精通則是另一個層面的問題。 有過多年的開發經驗以及一年的沉淀和準備最終成書,我們可以這樣說:這是一本深入講解Activiti的書,這是一本干貨書,不僅有源碼的講解,還有基于源碼講解基礎之上的實戰講解,這是一本誠意十足的書,這是一本深入講解Activiti內核的書,這是一本真正的企業級實戰書,敬請您研磨、品評鑒定。 本書的試讀人員包括:在校大學生,1~10年的工作人員,職位覆蓋中高級程序員、項目經理、系統架構師、總監、技術部經理和總經理等。 試讀結果反饋:工作2年以下的開發人員,基本上都可以看明白,還需要認真研磨和消化吸收; 工作2~5年的朋友,原來Activiti還可以這樣用,真是滿滿的干貨,達到了本書寫作的目的和意圖; 工作5~8年的朋友,可以借鑒Activiti中的設計思想并運用到實際項目開發中; 工作8~10年的朋友,這不僅是一本講解如何使用Activiti的書,還講解了Activiti框架的技術選型和架構思想的書,一本物有所值、貨真價實的書。 本書體系結構 本書旨在深入學習Activiti的內部處理機制。由淺入深、由易到難地對Activiti源碼展開系統地講解和擴展,并對框架中的部分缺陷進行修正,從而可以使讀者更加靈活地運用和改造Activiti。 第1章介紹Activiti環境搭建、設計器的安裝、源碼的獲取和編譯。 第2章詳細講解流程配置文件的創建方式,流程引擎的架構、流程引擎配置類和流程引擎的創建內部實現機制,配置器的使用以及注意事項,流程引擎的管理以及流程引擎生命周期監聽器的使用。 第3章講解流程資源的部署、各種部署方式以及BpmnModel與流程文檔之間的轉換和格式校驗。 第4章濃墨重彩地講解流程文檔解析原理和架構思想,包括文檔轉換器、流程元素解析、外圍元素解析、根元素解析、流程元素解析、擴展元素解析、子元素解析、連線元素、黑名單機制以及元素解析器的架構設計。 第5章詳細講解自定義元素的解析,包括自定義元素的解析原理、自定義元素的存儲、黑名單元素以及非黑名單元素解析實戰。 第6章介紹事件轉發器的內部實現機制,包括事件轉發器的初始化、架構、注冊方式,日志監聽器的使用和擴展,日志清洗器的架構和自定義日志清洗器的使用。 第7章深入剖析流程文檔部署的內部實現機制,包括內置部署器的使用、部署命令以及自定義部署器實戰。 第8章講解流程定義緩存的使用,包括自定義緩存處理類、節點緩存(新特性)的使用和Bug修復,以及配置器的高級使用技巧從而可以使流程信息徹底動態化。 第9章講解定時器的使用、運行原理以及自定義作業處理器實戰。 第10章講解流程虛擬機的內部處理機制,包括對象解析器架構、自定義對象解析器、無縫入侵虛擬機以及操作表達式。 第11章講解監聽器原理,包括監聽器的生命周期,內置記錄監聽器,歷史解析器的架構設計,監聽器的觸發時機和監聽器代理類、自定義全局監聽器的實現和字段注射模式(新特性)。 第12章講解Activiti中使用的命令模式,包括職責鏈模式,事務處理、事務上下文、事務監聽器以及同步事務。 第13章講解流程虛擬機運轉的整個過程以及各種原子類的功能邊界和職責,包括異步與非異步節點處理和忽略節點功能。 第14章講解各種活動行為類的原理,包括排他網關行為類、自定義行為類,任務節點處理人多元化、多維度的處理,忽略節點使用誤區以及Bug修復、子流程業務鍵Bug修復。 第15章講解MyBatis框架在Activiti中的使用,包括初始化數據源、數據訪問層關系分析,自定義Mapper實戰,Session架構、SessionFactory架構,SQL語句適配器、SQL執行id值生成規則,實體管理類,樂觀鎖,會話緩存的構建以及刷新過程。 第16章實現高并發id生成器,講解了變量類型的原理以及自定義變量處理類、ServiceLoader方式注入配置器,任務的認領、歸還、代理任務、會簽的實現(加簽、退簽和減簽),節點跳轉(常規節點、分支節點和會簽節點),會簽自定義權重實戰,接管Activiti(映射文件、自定義部門實現、擴展任務節點參與者表和自定義代辦SQL),接管實體管理類。 本書約定 本書在講述過程中,有如下約定: 引擎與流程引擎是等價的。 如無特殊說明,文檔均指流程文檔。 虛擬機默認指的是流程虛擬機 本書的程序、實例均在JDK1.6中運行,使用的數據庫為MySQL。 聯系作者 本書的創作過程中可謂異常艱辛,由于Activiti內容涵蓋面比較廣泛,涉及的知識點非常之多,再加上Activiti框架中自身的一些缺陷和Bug,因此為了能夠讓全書更加清楚、更加準確地闡述,筆者經歷了許多不眠之夜。由于寫作水平有限,本書不足之處在所難免,望讀者諒解。更期待各界高手、專家就不足之處賜教。 為此,如果讀者有任何的疑問或者建議,非常歡迎大家加入QQ群,一起探討學習。我期待與大家一起交流學習、共同進步。 真誠致謝 創作的過程是痛苦的,持續的時間也遠遠超乎我的預期,本以為自己對Activiti已經了如指掌,但在寫作的過程中還是會遇到各種各樣的問題,幸運的是自己咬牙堅持下來了。 首先要感謝清華大學出版社的員工,本書的策劃編輯,他們是我見過的最好的出版人,對本書從選題到出版的各個環節,都給予大量的指導和幫助,這對我的一生都有幫助。 其次要感謝我的妻子,一個產品經理,從產品的角度來讓本書內容的層次感更加的清晰和人性化。她始終不辭辛勞,毫無怨言地對我照顧有加,才能我有更多的時間用來創作。 然后要感謝鄭州輕工業學院張志鋒教授、靳喜軍、曾維林、李志、寇成星、張霞等在整個編寫過程中給予的支持和幫助。 接下來,感謝家人、感謝朋友、感謝北京的明媚陽光和漫天風沙以及熙熙攘攘的回龍觀,總之感謝一切。 最后,提前感謝購買本書的朋友們,您的支持信任是我們繼續前進的動力。 冀正 2017年5月 |