《瘋狂工作流講義——基於Activiti 6.x的套用開發》是2017年電子工業出版社出版的圖書,作者是楊恩雄。
基本介紹
- 中文名:瘋狂工作流講義——基於Activiti 6.x的套用開發
- 作者:楊恩雄
- 出版社:電子工業出版社
- 出版時間:2017年11月1日
- 頁數:476 頁
- 定價:79 元
- 開本:16 開
- ISBN:9787121330186
內容簡介,圖書目錄,編輯推薦,作者簡介,
內容簡介
工作流引擎Activiti經過多年的發展,已經變成一個成熟的工作流框架,在2017年,Activiti推出了全新的6.0版本,除了完善對BPMN規範的支持外,還加入了對DMN規範的支持。為了能讓廣大的程式開發者一探新版本Activiti的功能,筆者在第一版的基礎上,編寫了本書的第二版。
書中會對Activiti的知識進行全面講解,並從源碼角度對Activiti進行深度剖析。本書會以Activiti為基礎,講述該框架的API使用、BPMN規範,除了這些工作流的基本知識外,還講解了新的DMN規範引擎、Activiti整合SpringBoot等內容。在本書的第18章,深入Activiti的原始碼,展示捨棄流程虛擬機(PVM)之後的Activiti,如何對流程進行控制,讓讀者能一窺Activiti的廬山真面目。zui後一章,以一個案例結束本書的內容,案例中整合Spring、Struts2等主流框架,目的是讓讀者在學習的過程中更貼近實際案例。
圖書目錄
第1章 Activiti介紹 1
1.1 工作流介紹 2
1.2 BPMN 2.0規範簡述 2
1.2.1 BPMN 2.0概述 3
1.2.2 BPMN 2.0元素 3
1.2.3 BPMN 2.0的XML結構 5
1.3 Activiti介紹 5
1.3.1 Activiti的出現 5
1.3.2 Activiti的發展 5
1.3.3 選擇Activiti還是jBPM 5
1.4 本章小結 6
第2章 安裝與運行Activiti 7
2.1 下載與運行Activiti 8
2.1.1 下載和安裝JDK 8
2.1.2 下載和安裝MySQL 9
2.1.3 下載和安裝Activiti 10
2.2 運行官方的Activiti示例 11
2.2.1 請假流程概述 11
2.2.2 新建用戶 11
2.2.3 定義流程 12
2.2.4 發布流程 14
2.2.5 啟動與完成流程 15
2.2.6 流程引擎管理 16
2.3 安裝開發環境 17
2.3.1 下載Eclipse 17
2.3.2 安裝Activiti外掛程式 18
2.4 編寫第一個Activiti程式 19
2.4.1 如何運行本書示例 19
2.4.2 建立工程環境 19
2.4.3 創建配置檔案 20
2.4.4 創建流程檔案 20
2.4.5 載入流程檔案與啟動流程 21
2.5 本章小結 22
第3章 Activiti資料庫設計 23
3.1 通用數據表 24
3.1.1 資源表 24
3.1.2 屬性表 24
3.2 流程存儲表 25
3.2.1 部署數據表 25
3.2.2 流程定義表 25
3.3 身份數據表 25
3.3.1 用戶表 25
3.3.2 用戶賬號(信息)表 26
3.3.3 用戶組表 26
3.3.4 關係表 26
3.4 運行時數據表 26
3.4.1 流程實例(執行流)表 26
3.4.2 流程任務表 27
3.4.3 流程參數表 27
3.4.4 流程與身份關係表 27
3.4.5 工作數據表 28
3.4.6 事件描述表 28
3.5 歷史數據表 28
3.5.1 流程實例表 28
3.5.2 流程明細表 29
3.5.3 歷史任務表和歷史行為表 29
3.5.4 附屬檔案表和評論表 29
3.6 DMN規則引擎表 30
3.6.1 決策部署表 30
3.6.2 決策表 30
3.6.3 部署資源表 30
3.7 本章小結 30
第4章 Activiti流程引擎配置 31
4.1 流程引擎配置對象 32
4.1.1 讀取默認的配置檔案 32
4.1.2 讀取自定義的配置檔案 33
4.1.3 讀取輸入流的配置 33
4.1.4 使用createStandaloneInMemProcess- EngineConfiguration方法 34
4.1.5 使用createStandaloneProcessEngine- Configuration方法 34
4.2 數據源配置 35
4.2.1 Activiti支持的資料庫 35
4.2.2 Activiti與Spring 35
4.2.3 JDBC配置 35
4.2.4 DBCP數據源配置 36
4.2.5 C3P0數據源配置 37
4.2.6 Activiti其他數據源配置 38
4.2.7 資料庫策略配置 38
4.2.8 databaseType配置 39
4.3 其他屬性配置 40
4.3.1 history配置 40
4.3.2 asyncExecutorActivate配置 41
4.3.3 郵件伺服器配置 41
4.4 ProcessEngineConfiguration bean 41
4.4.1 ProcessEngineConfiguration及其子類 41
4.4.2 自定義ProcessEngineConfiguration 42
4.5 Activiti的命令攔截器 43
4.5.1 命令模式 44
4.5.2 責任鏈模式 45
4.5.3 編寫自定義攔截器 47
4.6 本章小結 49
第5章 流程引擎的創建 50
5.1 ProcessEngineConfiguration的buildProcessEngine方法 51
5.2 ProcessEngines對象 51
5.2.1 init方法與getDefaultProcessEngine方法 51
5.2.2 registerProcessEngine方向和unregister方法 52
5.2.3 retry方法 53
5.2.4 destroy方法 53
5.3 ProcessEngine對象 54
5.3.1 服務組件 54
5.3.2 關閉流程引擎 55
5.3.3 流程引擎名稱 56
5.4 本章小結 56
第6章 用戶組與用戶 57
6.1 用戶組管理 58
6.1.1 Group對象 58
6.1.2 創建用戶組 58
6.1.3 修改用戶組 59
6.1.4 刪除用戶組 60
6.2 Activiti數據查詢 61
6.2.1 查詢對象 61
6.2.2 list方法 61
6.2.3 listPage方法 62
6.2.4 count方法 63
6.2.5 排序方法 63
6.2.6 ID排序問題 64
6.2.7 多欄位排序 66
6.2.8 singleResult方法 67
6.2.9 用戶組數據查詢 68
6.2.10 原生SQL查詢 69
6.3 用戶管理 71
6.3.1 User對象 71
6.3.2 添加用戶 71
6.3.3 修改用戶 72
6.3.4 刪除用戶 72
6.3.5 驗證用戶密碼 73
6.3.6 用戶數據查詢 74
6.3.7 設定認證用戶 75
6.4 用戶信息管理 77
6.4.1 添加和刪除用戶信息 77
6.4.2 查詢用戶信息 78
6.4.3 設定用戶圖片 78
6.5 用戶組與用戶的關係 80
6.5.1 綁定關係 80
6.5.2 解除綁定 81
6.5.3 查詢用戶組下的用戶 81
6.5.4 查詢用戶所屬的用戶組 82
6.6 本章小結 83
第7章 流程存儲 84
7.1 流程檔案部署 85
7.1.1 Deployment對象 85
7.1.2 DeploymentBuilder對象 85
7.1.3 添加輸入流資源 86
7.1.4 添加classpath資源 87
7.1.5 添加字元串資源 88
7.1.6 添加壓縮檔資源 88
7.1.7 添加BPMN模型資源 89
7.1.8 修改部署信息 90
7.1.9 過濾重複部署 90
7.1.10 取消部署時的驗證 92
7.2 流程定義的管理 93
7.2.1 ProcessDefinition對象 93
7.2.2 流程部署 93
7.2.3 流程圖部署 95
7.2.4 流程圖自動生成 95
7.2.5 中止與激活流程定義 96
7.2.6 流程定義快取配置 97
7.2.7 自定義快取 98
7.3 流程定義許可權 100
7.3.1 設定流程定義的用戶許可權 100
7.3.2 設定流程定義的用戶組許可權 101
7.3.3 IdentityLink對象 102
7.3.4 查詢許可權數據 102
7.4 RepositoryService數據查詢與刪除 104
7.4.1 查詢部署資源 104
7.4.2 查詢流程檔案 105
7.4.3 查詢流程圖 106
7.4.4 查詢部署資源名稱 107
7.4.5 刪除部署資源 107
7.4.6 DeploymentQuery對象 108
7.4.7 ProcessDefinitionQuery對象 109
7.5 本章小結 109
第8章 流程任務管理 110
8.1 任務的創建與刪除 111
8.1.1 Task接口 111
8.1.2 創建與保存Task實例 112
8.1.3 刪除任務 112
8.2 任務許可權 113
8.2.1 設定候選用戶組 114
8.2.2 設定候選用戶 115
8.2.3 許可權數據查詢 116
8.2.4 設定任務持有人 118
8.2.5 設定任務代理人 119
8.2.6 添加任務許可權數據 119
8.2.7 刪除用戶組許可權 121
8.2.8 刪除用戶許可權 122
8.3 任務參數 123
8.3.1 基本類型參數設定 124
8.3.2 序列化參數 125
8.3.3 獲取參數 126
8.3.4 參數作用域 127
8.3.5 設定多個參數 128
8.3.6 數據對象 129
8.4 任務附屬檔案管理 130
8.4.1 Attachment對象 130
8.4.2 創建任務附屬檔案 130
8.4.3 附屬檔案查詢 132
8.4.4 刪除附屬檔案 133
8.5 任務評論與事件記錄 133
8.5.1 Comment對象 133
8.5.2 新增任務評論 134
8.5.3 事件的記錄 135
8.5.4 數據查詢 136
8.6 任務聲明與完成 137
8.6.1 任務聲明 137
8.6.2 任務完成 138
8.7 本章小結 139
第9章 流程控制 140
9.1 流程實例與執行流 141
9.1.1 流程實例與執行流概念 141
9.1.2 流程實例和執行流對象(ProcessInstance與Execution) 141
9.2 啟動流程 142
9.2.1 startProcessInstanceById方法 142
9.2.2 startProcessInstanceByKey方法 144
9.2.3 startProcessInstanceByMessage 145
9.3 流程參數 146
9.3.1 設定與查詢流程參數 147
9.3.2 流程參數的作用域 147
9.3.3 其他設定參數的方法 149
9.4 流程操作 149
9.4.1 流程觸發 149
9.4.2 觸發信號事件 150
9.4.3 觸發訊息事件 152
9.4.4 中斷與激活流程 153
9.4.5 刪除流程 154
9.5 流程數據查詢 155
9.5.1 執行流查詢 155
9.5.2 流程實例查詢 157
9.6 本章小結 158
第10章 歷史數據管理和流程引擎管理 159
10.1 歷史數據管理 160
10.1.1 歷史流程實例查詢 160
10.1.2 歷史任務查詢 161
10.1.3 歷史行為查詢 163
10.1.4 歷史流程明細查詢 165
10.1.5 刪除歷史流程實例和歷史任務 166
10.2 工作的產生 167
10.2.1 異步任務產生的工作 168
10.2.2 定時中間事件產生的工作 169
10.2.3 定時邊界事件產生的工作 170
10.2.4 定時開始事件產生的工作 171
10.2.5 流程拋出事件產生的工作 172
10.2.6 暫停工作的產生 174
10.2.7 無法執行的工作 175
10.3 工作管理 176
10.3.1 工作查詢對象 176
10.3.2 獲取工作異常信息 176
10.3.3 轉移與刪除工作 177
10.4 資料庫管理 178
10.4.1 查詢引擎屬性 178
10.4.2 數據表信息查詢 179
10.4.3 資料庫操作 180
10.4.4 數據表查詢 180
10.5 本章小結 181
第11章 流程事件 182
11.1 事件分類 183
11.1.1 按照事件的位置分類 183
11.1.2 按照事件的特性分類 183
11.2 事件定義 183
11.2.1 定時器事件定義 184
11.2.2 cron表達式 184
11.2.3 錯誤事件定義 186
11.2.4 信號事件定義 186
11.2.5 訊息事件定義 187
11.2.6 取消事件定義 187
11.2.7 補償事件定義 188
11.2.8 其他事件定義 188
11.3 開始事件 188
11.3.1 無指定開始事件 188
11.3.2 定時器開始事件 189
11.3.3 訊息開始事件 190
11.3.4 錯誤開始事件 191
11.4 結束事件 193
11.4.1 無指定結束事件 193
11.4.2 錯誤結束事件 194
11.4.3 取消結束事件和取消邊界事件 196
11.4.4 終止結束事件 199
11. 5 邊界事件 200
11.5.1 定時器邊界事件 201
11.5.2 錯誤邊界事件 203
11.5.3 信號邊界事件 204
11.5.4 補償邊界事件 206
11.6 中間事件 209
11.6.1 中間事件分類 209
11.6.2 定時器中間事件 210
11.6.3 信號中間Catching事件 211
11.6.4 信號中間Throwing事件 213
11.6.5 訊息中間事件 215
11.6.6 無指定中間事件 215
11.7 補償中間事件 215
11.7.1 補償執行次數 215
11.7.2 補償的執行順序 217
11.7.3 補償的參數設定 220
11.8 本章小結 221
第12章 流程任務 222
12.1 BPMN 2.0任務 223
12.1.1 任務的繼承 223
12.1.2 XML約束 223
12.1.3 任務的類型 225
12.2 用戶任務 226
12.2.1 分配任務候選人 226
12.2.2 分配任務代理人 228
12.2.3 許可權分配擴展 228
12.2.4 使用任務監聽器進行許可權分配 229
12.2.5 使用JUEL分配許可權 230
12.3 腳本任務 232
12.3.1 腳本任務 232
12.3.2 JavaScript腳本 233
12.3.3 Groovy腳本 234
12.3.4 設定返回值 235
12.3.5 JUEL腳本 236
12.4 服務任務 237
12.4.1 Java服務任務 238
12.4.2 實現JavaDelegate 238
12.4.3 使用普通Java Bean 240
12.4.4 在Activiti中調用Web Service 241
12.4.5 import元素 242
12.4.6 itemDefinition和message元素 242
12.4.7 interface與operation元素 243
12.4.8 設定Web Service參數與返回值 243
12.4.9 發布Web Service 243
12.4.10 使用Web Service Task 245
12.4.11 JavaDelegate屬性注入 248
12.4.12 在JavaDelegate中調用Web Service 251
12.4.13 Shell任務 253
12.5 其他任務 255
12.5.1 手動任務和接收任務 255
12.5.2 郵件任務 257
12.5.3 Mule任務和業務規則任務 258
12.6 任務監聽器 259
12.6.1 使用class指定監聽器 259
12.6.2 使用expression指定監聽器 260
12.6.3 使用delegateExpression指定
監聽器 261
12.6.4 監聽器的觸發 262
12.6.5 屬性注入 263
12.7 流程監聽器 263
12.7.1 配置流程監聽器 263
12.7.2 觸發流程監聽器的事件 264
12.8 本章小結 267
第13章 其他流程元素 268
13.1 子流程 269
13.1.1 嵌入式子流程 269
13.1.2 調用式子流程 271
13.1.3 調用式子流程的參數傳遞 273
13.1.4 事件子流程 275
13.1.5 事務子流程 277
13.1.6 特別子流程 280
13.2 順序流 282
13.2.1 條件順序流 282
13.2.2 默認順序流 284
13.3 流程網關 286
13.3.1 單向網關 286
13.3.2 並行網關 288
13.3.3 兼容網關 291
13.3.4 事件網關 293
13.4 流程活動特性 295
13.4.1 多實例活動 295
13.4.2 設定循環數據 297
13.4.3 獲取循環元素 298
13.4.4 循環的內置參數 300
13.4.5 循環結束條件 302
13.4.6 補償處理者 304
13.5 本章小結 304
第14章 Activiti與規則引擎 305
14.1 概述 306
14.1.1 規則引擎Drools 306
14.1.2 Drools下載與安裝 306
14.2 開發第一個Drools套用 307
14.2.1 建立Drools環境 307
14.2.2 編寫規則 308
14.2.3 載入與運行 308
14.3 Drools規則語法概述 309
14.3.1 規則檔案結構 309
14.3.2 關鍵字 310
14.3.3 規則編譯 310
14.4 類型聲明 311
14.4.1 聲明新類型 312
14.4.2 使用ASM操作位元組碼 313
14.4.3 類型聲明的使用 314
14.4.4 類型的繼承 316
14.4.5 聲明元數據 317
14.5 函式和查詢 317
14.5.1 函式定義和使用 318
14.5.2 查詢的定義和使用 320
14.6 規則語法 321
14.6.1 全局變數 322
14.6.2 規則屬性 323
14.6.3 條件語法 327
14.6.4 行為語法 330
14.7 Activiti調用規則 331
14.7.1 業務規則任務 332
14.7.2 制定銷售單優惠規則 333
14.7.3 實現銷售流程 336
14.8 本章小結 339
第15章 基於DMN的Activiti規則引擎 340
15.1 DMN規範概述 341
15.1.1 DMN的出現背景 341
15.1.2 Activiti與Drools 341
15.1.3 DMN的XML樣例 341
15.2 DMN的XML規範 342
15.2.1 決策 342
15.2.2 決策表 343
15.2.3 輸入參數 343
15.2.4 輸出結果 344
15.2.5 規則 344
15.3 運行第一個套用 345
15.3.1 建立項目 345
15.3.2 規則引擎配置檔案 346
15.3.3 編寫DMN檔案 346
15.3.4 載入與運行DMN檔案 347
15.4 規則引擎API簡述 348
15.4.1 創建規則引擎 348
15.4.2 配置規則引擎 349
15.4.3 數據查詢 350
15.4.4 執行DMN檔案 350
15.5 規則匹配 351
15.5.1 MVEL表達式簡介 351
15.5.2 執行第一個表達式 351
15.5.3 使用對象執行表達式 352
15.5.4 規則引擎規則匹配邏輯 353
15.5.5 自定義表達式函式 354
15.5.6 Activiti中的自定義表達式函式 355
15.5.7 銷售打折案例 357
15.6 本章小結 360
第16章 整合第三方框架 361
16.1 Spring Framework 362
16.1.1 Spring的IoC 362
16.1.2 Spring的AOP 362
16.1.3 使用IoC 363
16.1.4 使用AOP 364
16.2 Activiti整合Spring 365
16.2.1 SpringProcessEngineConfiguration 365
16.2.2 資源的部署模式 367
16.2.3 ProcessEngineFactoryBean 367
16.2.4 在bean中注入Activiti服務 368
16.2.5 在Activiti中使用Spring的bean 369
16.3 Activiti整合Web項目 371
16.3.1 安裝Tomcat外掛程式 371
16.3.2 加入Spring 373
16.3.3 整合Hibernate 375
16.3.4 配置聲明式事務 377
16.3.5 添加Struts配置 378
16.3.6 實現一個最簡單的邏輯 378
16.3.7 測試事務 380
16.3.8 添加Activiti 380
16.4 Activiti與Spring Boot 381
16.4.1 Spring Boot項目簡介 381
16.4.2 下載與安裝Maven 382
16.4.3 開發第一個Web套用 383
16.4.4 Activiti與Spring Boot的整合 386
16.5 Activiti與JPA 388
16.5.1 建立與運行JPA項目 388
16.5.2 在Activiti中使用JPA 390
16.5.3 Activiti、Spring與JPA的整合 391
16.5.4 基於JPA的例子 393
16.6 本章小結 395
第17章 Activiti開放的Web Service 396
17.1 Web Service簡介 397
17.1.1 Web Service 397
17.1.2 SOAP協定 397
17.1.3 REST架構 397
17.1.4 REST的設計準則 398
17.1.5 REST的主要特性 398
17.1.6 SOAP RPC與REST的區別 399
17.2 使用Sping MVC發布REST 399
17.2.1 在Web項目中加入Spring MVC 400
17.2.2 發布REST的Web Service 401
17.2.3 使用Restlet編寫客戶端 402
17.2.4 使用CXF編寫客戶端 402
17.2.5 使用HttpClient編寫客戶端 403
17.2.6 準備測試數據 403
17.2.7 部署Activiti的Web Service 403
17.2.8 接口訪問許可權 404
17.2.9 訪問Activiti接口 404
17.3 流程存儲服務 405
17.3.1 上傳部署檔案 405
17.3.2 部署數據查詢 406
17.3.3 部署資源查詢 406
17.3.4 查詢單個部署資源 407
17.3.5 刪除部署 408
17.4 本章小結 409
第18章 Activiti功能進階 410
18.1 流程控制邏輯 411
18.1.1 概述 411
18.1.2 設計流程對象 411
18.1.3 創建流程節點行為類 413
18.1.4 編寫業務處理類 414
18.1.5 將流程XML轉換為Java對象 414
18.1.6 編寫客戶端代碼 416
18.2 Activiti的表單 416
18.2.1 概述 416
18.2.2 表單屬性 417
18.2.3 外部表單 418
18.2.4 關於動態工作流和動態表單 419
18.3 流程圖XML 419
18.3.1 節點元素 419
18.3.2 銜接元素 420
18.3.3 流程圖與流程檔案的轉換 420
18.4 流程操作 421
18.4.1 流程回退 421
18.4.2 會簽 422
18.5 本章小結 424
第19章 辦公自動化系統 425
19.1 使用技術 426
19.1.1 表現層技術 426
19.1.2 MVC框架 426
19.1.3 Spring和Hibernate 426
19.2 功能簡述 427
19.2.1 系統的角色管理 427
19.2.2 薪資計算流程 427
19.2.3 請假流程 427
19.2.4 薪資調整流程 427
19.2.5 報銷流程 428
19.3 框架整合 428
19.3.1 創建Web項目 428
19.3.2 整合Spring 429
19.3.3 整合Hibernate 430
19.3.4 整合Struts2 432
19.3.5 整合Activiti 433
19.4 資料庫設計 434
19.4.1 薪資表 434
19.4.2 請假記錄表 434
19.4.3 薪資調整記錄表 435
19.4.4 報銷記錄表 436
19.5 初始化數據 437
19.5.1 初始化角色數據 437
19.5.2 薪資計算流程 438
19.5.3 請假流程 439
19.5.4 報銷流程 439
19.5.5 薪資調整流程 440
19.6 角色管理 441
19.6.1 用戶組管理 442
19.6.2 用戶列表 443
19.6.3 新建用戶 445
19.6.4 用戶登錄 446
19.7 流程啟動 447
19.7.1 啟動請假流程 447
19.7.2 啟動報銷流程 450
19.7.3 啟動薪資調整流程 452
19.8 申請列表 453
19.8.1 申請列表的實現 453
19.8.2 請假申請列表 454
19.8.3 報銷申請列表 455
19.8.4 薪資調整列表 455
19.8.5 查看流程圖 456
19.9 流程任務 457
19.9.1 待辦任務列表 457
19.9.2 領取任務與受理任務列表 459
19.9.3 查詢任務信息 460
19.9.4 任務審批 462
19.9.5 運行OA的流程 463
19.10 本章小結 463
編輯推薦
1.內容深入。書中的案例不僅僅講解Activiti的功能,更模仿Activiti的思路去模擬功能的實現,讀者可以深入了解其中的原理。
2.開發環境與案例更貼近實際。書中案例的開發環境、使用的框架以及工具均是來自企業的實際套用,案例的選取與研發過程更貼近實際。
3.注釋詳細。本書的代碼,幾乎每行Java代碼均有注釋,讀者可以很容易地了解代碼的意思,輕鬆掌握相應的知識。
作者簡介
楊恩雄,從事十多年JavaEE企業套用開發,曾任中企動力系統設計師、中企開源項目經理、數碼辰星科技公司項目經理,參與過多個企業級項目的設計與架構工作,曾負責辰星“電影票網路銷售系統”的整體架構。精通Activiti、Drools、ESB等開源技術,在SOA、SaaS、大數據套用、網際網路系統架構方面有著豐富的經驗,曾出版《瘋狂Java實戰演義》《瘋狂Workflow講義》《瘋狂SpringCloud微服務架構實戰》等書籍。