Camunda 工作流開發實戰 — Spring Boot + BPMN + DMN

Camunda 工作流開發實戰 — Spring Boot + BPMN + DMN

作者: 李貴俊
出版社: 清華大學
出版在: 2021-03-01
ISBN-13: 9787302569428
ISBN-10: 7302569428
裝訂格式: 平裝
總頁數: 364 頁





內容描述


本書主要介紹新一代工作流引擎Camunda來開發和使用工作流。Camunda是目前最為流行的工作流引擎之一,由Activiti發展而來的,是Activiti的下一代產品。本書全面介紹Camunda的知識點,及其所支持的三大規範:BPMN,DMN和CMMN,是開發過程中的必備參考書;本書提供了大量的實用案例,讓讀者可以很容易理解相關概念,並且可以快速上手使用;本書充分結合當前流行的Spring Framework、Spring Boot等框架,以簡潔、高效的開發自己的工作流程。本書覆蓋面廣,適用於所有開發人員、設計人員、產品管理者、架構師及Camunda愛好者。


目錄大綱


CONTENTS
目  錄
第一部分  BPMN 2.0基礎
第1章  參與者 3
第2章  任務 8
2.1  服務任務 8
2.2  發送任務 8
2.3  用戶任務 9
2.4  業務規則任務 9
2.5  腳本任務 9
2.6  接收任務 9
2.7  手工任務 9
2.8  任務標記 10
第3章  網關 11
3.1  排他網關 11
3.2  條件序列流和默認序列流 12
3.2.1  條件序列流 12
3.2.2  默認序列流 12
3.3  並行網關 12
3.4  包含網關 13
3.5  事件網關 13
第4章  事件 15
4.1  基本概念 15
4.2  事件類型 16
4.2.1  開始事件 16
4.2.2  空白事件 17
4.2.3  消息事件 17
4.2.4  定時器事件 19
4.2.5  錯誤事件 21
4.2.6  升級事件 23
4.2.7  信號事件 25
4.2.8  取消和補償事件 26
4.2.9  條件事件 30
4.2.10  鏈接事件 32
4.2.11  終止事件 32
4.2.12  並行事件 32
4.3  小結 33
第5章  子流程 34
5.1  嵌入式子流程 35
5.2  調用活動 36
5.3  事件子流程 36
5.4  事務子流程 39
第二部分  Camunda介紹
第6章  Camunda簡介 43
6.1  Camunda BPM主要組件 43
6.2  Camunda BPM架構概述 44
6.2.1  流程引擎架構 44
6.2.2  Camunda BPM平臺架構 45
6.2.3  集群模式 46
6.2.4  多租戶模型 46
第7章  流程引擎 47
7.1  流程引擎基本概念 47
7.1.1  流程定義 47
7.1.2  流程實例 48
7.1.3  執行 50
7.1.4  活動實例 51
7.1.5  作業和作業定義 52
7.2  流程引擎的引導 53
7.2.1  應用程序管理流程引擎 53
7.2.2  共享的、容器管理的流程引擎 53
7.3  流程引擎API 53
7.3.1  服務API 53
7.3.2  查詢API 56
7.4  流程變量 59
7.4.1  變量作用域和可見性 59
7.4.2  變量設置和檢索 61
7.4.3  支持的變量值 62
7.4.4  Java對象API 64
7.4.5  類型化值API 64
7.4.6  API的可互換性 68
7.4.7  輸入輸出變量映射 68
7.5  流程實例修改 70
7.5.1  流程修改示例 70
7.5.2  在JUnit測試中修改流程實例 72
7.6  重啟流程實例 72
7.7  委托代碼 73
7.7.1  Java委托 74
7.7.2  字段註入 74
7.7.3  委托變量映射 76
7.7.4  執行監聽器 76
7.7.5  任務監聽器 78
7.7.6  監聽器字段註入 79
7.7.7  訪問流程引擎服務 81
7.7.8  從委托代碼中拋出BPMN錯誤 81
7.7.9  在委托代碼中設置業務鍵 81
7.8  表達式語言 82
7.8.1  委托代碼 82
7.8.2  條件 83
7.8.3  輸入輸出參數 83
7.8.4  值 84
7.9  腳本 84
7.9.1  使用腳本任務 84
7.9.2  使用腳本作為執行監聽器 85
7.9.3  使用腳本作為任務監聽器 85
7.9.4  使用腳本作為條件 86
7.9.5  使用腳本作為輸入輸出參數 86
7.9.6  腳本引擎的緩存 87
7.9.7  腳本編譯 88
7.9.8  加載腳本引擎 88
7.9.9  引用流程應用程序提供的類 88
7.9.10  腳本執行期間可用的變量 88
7.9.11  通過腳本訪問流程引擎服務 89
7.9.12  使用腳本打印日誌到控制台 89
7.9.13  腳本源 89
7.10  外部任務 91
7.10.1  外部任務模式 91
7.10.2  BPMN中申明外部任務 92
7.10.3  使用REST API處理外部任務 92
7.10.4  使用Java API處理外部任務 93
7.11  流程版本 99
7.12  流程實例遷移 100
7.13  數據庫 100
7.13.1  數據庫模式 100
7.13.2  數據庫配置 101
7.14  歷史和審計日誌 103
7.14.1  選擇歷史記錄級別 104
7.14.2  設置歷史級別 105
7.14.3  用戶操作日誌 105
7.14.4  清理歷史數據 105
7.15  部署緩存 105
7.15.1  自定義緩存的最大容量 106
7.15.2  自定義緩存實現 106
7.16  流程中的事務 107
7.16.1  等待狀態 107
7.16.2  事務邊界 107
7.16.3  異步延續 108
7.16.4  異常回滾 110
7.16.5  事務集成 111
7.16.6  樂觀鎖定 111
7.17  作業執行器 111
7.17.1  作業執行器激活 112
7.17.2  單元測試中的作業執行器 112
7.17.3  作業創建 112
7.17.4  作業獲取 113
7.17.5  作業執行 115
7.17.6  並發作業執行 115
7.17.7  作業執行器和多流程引擎 117
7.17.8  集群設置 118
7.18  多租戶 119
7.19  ID生成器 119
7.19.1  數據庫ID生成器 120
7.19.2  UUID生成器 120
7.20  指標 120
7.20.1  內置指標 120
7.20.2  指標查詢 121
7.21  事件 121
7.21.1  事件類型 122
7.21.2  創建和解決自定義事件 122
7.21.3  (去)激活事件 122
7.21.4  實現自定義事件處理程序 122
7.22  流程引擎插件 123
7.22.1  配置流程引擎插件 123
7.22.2  內置流程引擎插件列表 124
7.23  身份服務 124
7.23.1  為用戶、組和租戶定製白名單 124
7.23.2  數據庫身份服務 125
7.23.3  LDAP身份服務 125
7.23.4  登錄節流 126
7.24  授權服務 127
7.25  時區 127
7.25.1  流程引擎 127
7.25.2  數據庫 127
7.25.3  Camunda Web應用程序 127
7.25.4  集群設置 127
7.26  錯誤處理 127
7.26.1  錯誤處理策略 127
7.26.2  監控和恢復策略 129
第8章  流程應用程序 131
8.1  流程應用程序類 131
8.1.1  EmbeddedProcessApplication 132
8.1.2  SpringProcessApplication 133
8.2  processes.xml部署描述符 134
8.2.1  空processes.xml 135
8.2.2  processes.xml文件的位置 135
8.2.3  自定義processes.xml文件的位置 136
8.2.4  在processes.xml文件中配置流程引擎 136
8.2.5  在processes.xml文件中指定流程歸檔的租戶ID 136
8.2.6  流程應用程序部署 137
8.3  流程應用程序事件監聽器 139
8.4  流程應用程序資源訪問 141
8.4.1  上下文切換 141
8.4.2  聲明流程應用程序上下文 142
第9章  用戶任務表單 144
9.1  嵌入式任務表單 144
9.2  生成任務表單 145
9.2.1  表單字段 146
9.2.2  表單字段的驗證 146
9.3  外部任務表單 148
9.4  通用任務表單 148
9.5  JSF任務表單 149
9.5.1  向流程應用程序添加JSF表單 149
9.5.2  創建簡單的用戶任務表單 150
9.5.3  它是怎樣工作的 150
9.5.4  訪問流程變量 151
9.5.5  設計任務表單的樣式 154
第10章  外部任務客戶端 156
10.1  特性 156
10.2  客戶端引導 156
10.2.1  請求攔截器 157
10.2.2  主題訂閱 157
10.2.3  處理程序 157
10.2.4  完成任務 157
10.2.5  延長任務的鎖定時間 157
10.2.6  解鎖任務 158
10.2.7  報告失敗 158
10.2.8  BPMN錯誤報告 158
10.2.9  變量 158
10.2.10  日誌記錄 158
10.3  外部任務吞吐量 159
第11章  DMN引擎 160
11.1  嵌入式DMN引擎 160
11.1.1  Maven依賴 160
11.1.2  構建DMN引擎 160
11.1.3  DMN引擎的配置 161
11.1.4  日誌記錄 162
11.2  使用DMN引擎API評估決策 162
11.2.1  分析決策 162
11.2.2  評估決策 164
11.3  DMN引擎中的表達式 167
11.3.1  DMN中的表達式 167
11.3.2  支持的表達式語言 168
11.3.3  默認表達式語言 169
11.3.4  配置表達式語言 169
11.4  DMN引擎中的數據類型 170
11.4.1  支持的數據類型 170
11.4.2  設置輸入的數據類型 171
11.4.3  設置輸出的數據類型 171
11.4.4  設置變量的數據類型 171
11.4.5  實現自定義數據類型 171
11.5  使用DMN引擎測試決策 172
第12章  決策 173
12.1  配置DMN引擎 173
12.1.1  使用Java API配置DMN引擎 173
12.1.2  使用Spring XML文件配置DMN引擎 174
12.2  流程引擎庫中的決策 174
12.2.1  部署一個決策 174
12.2.2  使用存儲庫服務部署決策 174
12.2.3  使用流程應用程序部署決策 175
12.2.4  查詢決策存儲庫 175
12.2.5  查詢決策存儲庫的授權 176
12.3  流程引擎中的決策服務 176
12.3.1  評估一個決策 176
12.3.2  評估決策的授權 177
12.3.3  處理決策結果 177
12.3.4  評估決策的歷史 178
12.4  從流程中調用決策 178
12.4.1  與BPMN集成 178
12.4.2  決策結果 179
12.4.3  在決策中訪問變量 181
12.4.4  表達式語言集成 182
12.5  DMN決策的歷史記錄 182
12.5.1  查詢已評估的決策 182
12.5.2  歷史決策實例 183
第13章  日誌記錄 185
13.1  使用共享流程引擎的預配置日誌 185
13.2  為嵌入式流程引擎使用添加日誌後端 185
13.2.1  使用Java Util日誌 185
13.2.2  使用Logback 186
第14章  測試 187
14.1  單元測試 187
14.1.1  JUnit 4 187
14.1.2  JUnit 3 187
14.1.3  部署測試資源 188
14.2  測試的社區擴展 188
14.2.1  Camunda BPM Assert Scenario 188
14.2.2  Camunda BPM Process Test Coverage 189
14.3  最佳實踐 191
14.3.1  編寫針對性測試 191
14.3.2  測試範圍 191
第三部分  Camunda實戰入門
第15章  快速入門 195
15.1  使用Camunda BPM 平臺建模並實現工作流 195
15.1.1  新建一個BPMN流程圖 195
15.1.2  開始一個簡單的流程 195
15.1.3  配置服務任務 197
15.1.4  配置執行屬性 197
15.1.5  保存BPMN流程圖 198
15.2  實現外部任務工作者 199
15.2.1  先決條件 199
15.2.2  新建一個Maven項目 199
15.2.3  添加Camunda外部任務客戶端依賴 199
15.2.4  添加Java類 200
15.2.5  運行Worker 200
15.3  部署流程 201
15.3.1  使用Camunda Modeler部署流程 201
15.3.2  使用Cockpit確認部署 202
15.3.3  啟動流程實例 203
15.4  引入人工乾預 205
15.4.1  添加用戶任務 205
15.4.2  配置用戶任務 207
15.4.3  在用戶任務中配置基本表單 208
15.4.4  部署流程 208
15.4.5  完成任務 208
15.5  流程動態化 210
15.5.1  添加兩個網關 211
15.5.2  配置網關 212
15.5.3  部署流程 212
15.5.4  完成任務 212
15.6  決策自動化 214
15.6.1  向流程添加業務規則任務 214
15.6.2  使用Camunda Modeler創建DMN表 215
15.6.3  指定DMN表 215
15.6.4  部署DMN表 218
15.6.5  使用Cockpit確認部署 219
15.6.6  使用Cockpit和任務列表進行檢查 220
第16章  Java流程應用程序入門 223
16.1  新建一個Java流程項目 223
16.1.1  新建一個Maven項目 223
16.1.2  添加Camunda Maven依賴 223
16.1.3  添加流程應用程序類 224
16.1.4  添加部署描述符 224
16.2  建模流程 225
16.2.1  新建一個BPMN流程圖 225
16.2.2  配置用戶任務 226
16.2.3  配置執行屬性 227
16.2.4  保存流程圖 227
16.3  部署和測試流程 227
16.3.1  使用Maven構建Web應用程序 227
16.3.2  部署到Apache Tomcat 227
16.3.3  用Cockpit確認部署 228
16.3.4  啟動流程實例 229
16.3.5  配置流程啟動授權 230
16.3.6  完成任務 231
16.4  添加HTML表單 232
16.4.1  添加開始表單 232
16.4.2  添加任務表單 233
16.4.3  重建和部署 234
16.5  從服務任務調用Java類 234
16.5.1  向流程添加服務任務 234
16.5.2  添加JavaDelegate實現 235
16.5.3  在流程中配置類 236
第17章  Spring Boot流程應用程序入門 237
17.1  新建Spring Boot流程應用程序項目 237
17.1.1  新建一個Maven項目 237
17.1.2  添加Camunda BPM和Spring Boot依賴 237
17.1.3  將主類添加到Spring Boot應用程序中 238
17.1.4  構建和運行 239
17.2  配置Spring Boot項目 240
17.2.1  自定義配置 240
17.2.2  構建和運行 240
17.3  建模BPMN 流程 240
17.3.1  建模一個可執行的BPMN 2.0流程並部署 240
17.3.2  創建流程應用程序 241
17.3.3  在部署流程應用程序之後啟動流程實例 241
17.3.4  重建和測試 242
第18章  Spring Framework流程應用程序入門 243
18.1  新建Spring Web應用程序項目 243
18.1.1  新建一個Maven項目 243
18.1.2  添加Camunda BPM和Spring Framework依賴 243
18.1.3  添加用於引導Spring容器的web.xml文件 245
18.1.4  添加Spring應用程序上下文XML配置文件 245
18.2  嵌入式流程引擎配置 246
18.3  從服務任務調用Spring Bean 248
18.3.1  建模一個可執行的BPMN 2.0流程 249
18.3.2  使用Spring自動部署BPMN 2.0流程 249
18.3.3  從Spring Bean啟動流程實例 250
18.3.4  從BPMN 2.0服務任務調用Spring Bean 250
18.4  使用共享流程引擎 252
第19章  DMN入門 255
19.1  新建DMN Java項目 255
19.1.1  新建一個Maven項目 255
19.1.2  添加Camunda Maven依賴 255
19.1.3  添加流程應用程序類 256
19.1.4  添加META-INF/processes.xml部署描述符 257
19.2  創建DMN決策表 257
19.2.1  新建一個DMN決策表 257
19.2.2  從表頭開始 258
19.2.3  配置輸入表達式和輸出名 259
19.2.4  配置輸入和輸出的類型 260
19.2.5  添加規則 261
19.2.6  配置命中策略 263
19.2.7  保存決策表 264
19.3  評估、部署和測試決策表 264
19.3.1  評估決策表 264
19.3.2  使用Maven構建Web應用程序 264
19.3.3  部署到Apache Tomcat 265
19.3.4  從Cockpit確認部署 265
19.3.5  從Cockpit核實評估結果 265
19.4  建模、評估和部署決策需求圖 266
19.4.1  從決策表切換到DRD 267
19.4.2  設置DRD的名稱和Id 267
19.4.3  在DRD中創建一個新的決策 268
19.4.4  配置決策表並添加規則 269
19.4.5  評估決策 271
19.4.6  構建和部署Web應用程序 272
19.4.7  用Cockpit核實評估結果 272
第四部分  Camunda完整項目案例
第20章  保險流程實戰 277
20.1  新建流程項目 277
20.2  運行流程 277
20.3  查看默認流程 278
20.4  設計流程 281
20.5  配置流程 282
20.5.1  配置保險申請人 282
20.5.2  配置保險公司 282
20.5.3  配置開始事件 283
20.5.4  配置“檢查申請完整性”服務任務 284
20.5.5  配置申請“資料完整”網關 285
20.5.6  配置“發送補充資料通知”腳本任務 286
20.5.7  配置“發送補充資料通知”結束事件 287
20.5.8  配置“查驗保險資格”服務任務 287
20.5.9  配置保險資格“合格”網關 288
20.5.10  配置“拒保”調用活動 289
20.5.11  配置“計算保額” 292
20.5.12  配置“創建保單” 293
20.5.13  配置“發送保單” 294
20.5.14  配置“收到保單” 295
20.5.15  配置“確保”結束事件 295
20.5.16  配置“審查案例” 295
20.5.17  配置“風險可控?”網關 296
20.5.18  配置“拒保”調用活動 297
20.5.19  配置“拒保”結束事件 297
20.6  測試流程 297
20.6.1  UT 297
20.6.2  確定測試用例 297
20.6.3  編寫測試代碼 298
20.6.4  執行測試 301
20.7  其他配置 302
20.7.1  配置服務埠 302
20.7.2  配置MySQL數據庫 302
20.7.3  配置默認管理員賬戶 303
20.8  執行流程 303
20.8.1  啟動服務 303
20.8.2  啟動流程 303
20.8.3  創建新用戶 304
20.8.4  完成用戶任務 306
20.9  更新流程 307
20.9.1  修改流程 307
20.9.2  部署流程 308
20.10  常用配置 308
20.10.1  配置使用Python腳本 308
20.10.2  配置流程模塊重用 308
20.10.3  配置外部任務 309
第21章  運維自動化案例實戰 314
21.1  新建流程項目 314
21.2  設計流程 314
21.3  配置流程 315
21.3.1  配置參與者 315
21.3.2  配置“收到Kafka消息”消息開始事件 315
21.3.3  配置“Kafka消息處理”服務任務 316
21.3.4  配置“收到告警”消息開始事件 317
21.3.5  配置“告警預處理”服務任務 317
21.3.6  配置網關 319
21.3.7  配置“處理告警”用戶任務 320
21.3.8  配置“處理告警”服務任務 320
21.3.9  配置“驗證處理結果”任務 321
21.3.10  配置結束事件 322
21.3.11  保存流程 322
21.4  配置Kafka 322
21.4.1  添加依賴 322
21.4.2  設計消息模型 322
21.4.3  配置Kafka屬性 323
21.4.4  創建Kafka Producer 323
21.4.5  創建Kafka Consumer 324
21.4.6  創建REST Controller 326
21.5  執行流程 327
21.5.1  啟動服務 327
21.5.2  發送告警 328
21.5.3  發送Kafka消息 329
21.5.4  觸發用戶任務 330
21.5.5  歷史記錄與審計 331
附錄A  Camunda安裝 332
A.1  安裝Camunda BPM 332
A.1.1  先決條件 332
A.1.2  安裝Camunda BPM平臺 332
A.2  安裝Camunda Modeler 333
附錄B  Maven項目模板(原型) 335
B.1  可用Maven原型的概述 335
B.2  Maven 原型在Eclipse IDE中的使用 335
B.2.1  總結 335
B.2.2  詳細說明 336
B.3  Intellij IDEA的使用 340
B.3.1  添加Archetype 340
B.3.2  新建項目 342
B.4  在命令行上的使用 344
B.4.1  交互式 344
B.4.2  完全自動化 344


作者介紹


李貴俊,畢業於四川大學,獲得計算機專業碩士學位。
現就職於諾基亞,具有多年開發實戰經驗,曾任軟件架構師以及產品負責人(PO),具有豐富的軟件開發及架構設計經驗。




相關書籍

Microsoft Visual Basic 2015 程式設計範例教本

作者 陳會安

2021-03-01

Java: A Beginner's Guide, 9/e (Paperback)

作者 Schildt Herbert

2021-03-01

Concurrent and Distributed Computing in Java (Hardcover)

作者 Vijay K. Garg

2021-03-01