深入 Flowable 流程引擎:核心原理與高階實戰

賀波、劉曉鵬、胡海琴

  • 出版商: 人民郵電
  • 出版日期: 2024-09-01
  • 售價: $839
  • 貴賓價: 9.5$797
  • 語言: 簡體中文
  • 頁數: 660
  • ISBN: 7115649006
  • ISBN-13: 9787115649003
  • 立即出貨 (庫存=1)

  • 深入 Flowable 流程引擎:核心原理與高階實戰-preview-1
  • 深入 Flowable 流程引擎:核心原理與高階實戰-preview-2
深入 Flowable 流程引擎:核心原理與高階實戰-preview-1

買這商品的人也買了...

相關主題

商品描述

本書旨在為讀者提供關於Flowable的全面指南,深入探討基於業務流程開發的思想和方法。全書分為4篇:基礎準備篇介紹Flowable的基礎用法、流程設計器集成與使用、工作流引擎配置、數據庫設計、核心概念和API等,讓讀者建立對Flowable的基本認識;常規應用篇介紹Flowable各種功能和特性的配置與使用,讓讀者掌握Flowable的基礎用法;高級實戰篇立足實戰,介紹如何基於Flowable的擴展特性實現對多種復雜流程場景的支持;架構擴展篇主要介紹提高Flowable性能和增大其容量的措施,並提出一套多引擎架構方案來支撐大容量、高並發和高穩定流程場景。

作者簡介

贺波

国内资深的工作流及BPM领域专家,专注于流程领域十余年,长期致力于BPM技术及相关产品的研发、应用和推广,擅长为国内外大中型企业提供以流程为导向的数字化解决方案。作为第一发明人持有多项BPM领域发明专利。

刘晓鹏

拥有10年互联网系统研发、架构设计经验,在高并发、高性能、高可用等方面有丰富的设计经验。

胡海琴

从事Java EE企业应用开发十余年,曾经参与多个大型企业级项目的设计与开发工作,具有丰富的软件系统设计和开发经验。

目錄大綱

基礎準備篇

 

第 1章 初識Flowable 3

1.1 流程、工作流及相關規範 3

1.1.1 流程的概念 3

1.1.2 工作流介紹 3

1.1.3 BPMN規範 6

1.2 Flowable介紹 13

1.2.1 工作流開源框架 13

1.2.2 Flowable的特點 13

1.3 Flowable之初體驗 14

1.3.1 下載Flowable安裝包 14

1.3.2 啟動Flowable UI 14

1.3.3 Flowable初體驗:運行Flowable UI 15

1.4 本章小結 20

第 2章 Flowable流程設計器集成與使用 21

2.1 使用IDEA集成Flowable流程設計器 21

2.1.1 在IDEA中安裝Flowable BPMN visualizer流程設計器插件 21

2.1.2 使用IDEA繪制BPMN流程圖 22

2.2 使用Eclipse集成Flowable流程設計器 25

2.2.1 在Eclipse中安裝Flowable BPMN Designer插件 25

2.2.2 使用Eclipse繪制BPMN流程圖 26

2.3 本章小結 30

第3章 Flowable工作流引擎配置 31

3.1 Flowable工作流引擎的配置 31

3.1.1 工作流引擎配置對象ProcessEngineConfiguration 31

3.1.2 工作流引擎對象ProcessEngine 35

3.2 Flowable工作流引擎配置文件 36

3.2.1 Flowable配置風格 37

3.2.2 Spring配置風格 37

3.3 數據庫連接配置 38

3.3.1 數據庫連接屬性配置 38

3.3.2 數據庫策略屬性配置 40

3.4 其他屬性配置 40

3.4.1 歷史數據級別配置 40

3.4.2 異步執行器配置 41

3.4.3 郵件服務器配置 44

3.4.4 事件日誌記錄配置 44

3.5 編寫第 一個Flowable程序 44

3.5.1 建立工程環境 44

3.5.2 創建配置文件 47

3.5.3 創建流程模型 47

3.5.4 加載流程模型與啟動流程 48

3.6 本章小結 49

第4章 Flowable數據庫設計 51

4.1 Flowable數據表設計概述 51

4.2 Flowable數據表結構說明 51

4.2.1 通用數據表 51

4.2.2 流程存儲表 52

4.2.3 身份數據表 53

4.2.4 運行時數據表 56

4.2.5 歷史數據表 64

4.3 Flowable數據庫樂觀鎖 69

4.4 本章小結 69

第5章 Flowable核心概念和API 71

5.1 Flowable核心概念 71

5.1.1 流程定義 71

5.1.2 流程實例 71

5.1.3 執行實例 72

5.2 工作流引擎服務 72

5.3 存儲服務API 73

5.3.1 部署流程定義 74

5.3.2 刪除流程定義 74

5.3.3 掛起流程定義 75

5.3.4 激活流程定義 77

5.4 運行時服務API 78

5.4.1 發起流程實例 78

5.4.2 喚醒一個等待狀態的執行 80

5.5 任務服務API 81

5.5.1 待辦任務查詢 81

5.5.2 任務辦理及權限控制 83

5.5.3 評論和附件管理 86

5.6 歷史服務API 88

5.7 管理服務API 89

5.7.1 數據庫管理 89

5.7.2 異步任務管理 91

5.7.3 執行命令 93

5.8 身份服務API 95

5.9 利用Flowable Service API完成流程實例 96

5.9.1 Flowable工作流引擎工具類 96

5.9.2 綜合使用示例 97

5.10 本章小結 99

 

常規應用篇

 

第6章 Flowable身份管理 103

6.1 身份管理引擎 103

6.2 用戶管理 104

6.2.1 新建用戶 105

6.2.2 查詢用戶 105

6.2.3 修改用戶 111

6.2.4 刪除用戶 112

6.2.5 設置用戶圖片 113

6.3 用戶組管理 113

6.3.1 新建用戶組 114

6.3.2 查詢用戶組 114

6.3.3 修改用戶組 117

6.3.4 刪除用戶組 117

6.4 用戶與用戶組關系管理 118

6.4.1 添加用戶至用戶組 118

6.4.2 從用戶組中移除用戶 119

6.4.3 查詢用戶組中的用戶 119

6.4.4 查詢用戶所在的用戶組 120

6.5 用戶附加信息管理 120

6.6 本章小結 121

第7章 Flowable流程部署 123

7.1 流程資源 123

7.2 流程部署 123

7.2.1 DeploymentBuilder對象 123

7.2.2 執行流程部署 124

7.3 部署結果查詢 127

7.3.1 部署記錄查詢 127

7.3.2 流程定義查詢 131

7.3.3 流程資源查詢 135

7.4 流程部署完整示例 136

7.4.1 示例代碼 136

7.4.2 相關表的變更 137

7.5 本章小結 138

第8章 開始事件與結束事件 139

8.1 事件概述 139

8.2 事件定義 139

8.2.1 定時器事件定義 139

8.2.2 信號事件定義 141

8.2.3 消息事件定義 142

8.2.4 錯誤事件定義 143

8.2.5 取消事件定義 143

8.2.6 補償事件定義 143

8.2.7 終止事件定義 143

8.2.8 升級事件定義 143

8.2.9 條件事件定義 144

8.2.10 變量監聽器事件定義 144

8.3 開始事件 144

8.3.1 空開始事件 145

8.3.2 定時器開始事件 146

8.3.3 信號開始事件 147

8.3.4 消息開始事件 148

8.3.5 錯誤開始事件 150

8.3.6 升級開始事件 152

8.3.7 條件開始事件 153

8.3.8 變量監聽器開始事件 153

8.4 結束事件 153

8.4.1 空結束事件 154

8.4.2 錯誤結束事件 154

8.4.3 取消結束事件 156

8.4.4 終止結束事件 159

8.4.5 升級結束事件 159

8.5 本章小結 159

第9章 邊界事件與中間事件 161

9.1 邊界事件 161

9.1.1 定時器邊界事件 161

9.1.2 信號邊界事件 163

9.1.3 消息邊界事件 165

9.1.4 錯誤邊界事件 166

9.1.5 取消邊界事件 168

9.1.6 補償邊界事件 169

9.1.7 條件邊界事件 170

9.1.8 變量監聽器邊界事件 171

9.1.9 升級邊界事件 171

9.2 中間事件 172

9.2.1 定時器中間捕獲事件 172

9.2.2 信號中間捕獲事件和信號中間拋出事件 174

9.2.3 消息中間捕獲事件 177

9.2.4 補償中間拋出事件 177

9.2.5 空中間拋出事件 183

9.2.6 條件中間捕獲事件 183

9.2.7 變量監聽器中間捕獲事件 187

9.2.8 升級中間拋出事件 189

9.3 本章小結 192

第 10章 用戶任務、手動任務和接收任務 193

10.1 用戶任務 193

10.1.1 用戶任務介紹 193

10.1.2 用戶任務分配給辦理人 195

10.1.3 用戶任務分配給候選人(組) 196

10.1.4 動態分配任務 197

10.2 手動任務 202

10.2.1 手動任務介紹 203

10.2.2 手動任務使用示例 203

10.3 接收任務 204

10.3.1 接收任務介紹 204

10.3.2 接收任務使用示例 205

10.4 本章小結 206

第 11章 服務任務、腳本任務和業務規則任務 207

11.1 服務任務 207

11.1.1 服務任務介紹 207

11.1.2 服務任務的屬性註入 210

11.1.3 服務任務的可觸發和異步執行 218

11.1.4 服務任務的執行結果 218

11.1.5 服務任務的異常處理 219

11.1.6 在JavaDelegate中使用Flowable服務 222

11.2 腳本任務 222

11.2.1 腳本任務介紹 222

11.2.2 腳本任務中流程變量的使用 223

11.2.3 腳本任務的執行結果 223

11.3 業務規則任務 223

11.3.1 業務規則任務介紹 224

11.3.2 業務規則任務使用示例 225

11.4 本章小結 228

第 12章 Flowable擴展的系列任務(一) 229

12.1 郵件任務 229

12.2 Camel任務 230

12.2.1 Camel任務介紹 230

12.2.2 Flowable與Camel集成 230

12.2.3 Camel任務使用示例 233

12.3 Mule任務 235

12.3.1 Mule任務介紹 236

12.3.2 Mule的集成與配置 236

12.3.3 Mule任務使用示例 240

12.4 Shell任務 242

12.4.1 Shell任務介紹 243

12.4.2 Shell任務使用示例 243

12.5 本章小結 244

第 13章 Flowable擴展的系列任務(二) 245

13.1 Http任務 245

13.2 外部工作者任務 250

13.3 Web Service任務 253

13.3.1 Web Service任務介紹 253

13.3.2 Web Service任務使用示例 255

13.4 決策任務 259

13.4.1 決策任務介紹 259

13.4.2 決策任務使用示例 260

13.5 本章小結 264

第 14章 順序流與網關 265

14.1 順序流 265

14.1.1 標準順序流 265

14.1.2 條件順序流 266

14.1.3 默認順序流 268

14.2 網關 269

14.2.1 排他網關 269

14.2.2 並行網關 272

14.2.3 包容網關 274

14.2.4 事件網關 277

14.3 本章小結 279

第 15章 子流程、調用活動、泳池與泳道 281

15.1 子流程 281

15.1.1 內嵌子流程 281

15.1.2 事件子流程 285

15.1.3 事務子流程 292

15.2 調用活動 298

15.2.1 調用活動介紹 298

15.2.2 調用活動使用示例 300

15.2.3 內嵌子流程與調用活動的區別 304

15.3 泳池與泳道 304

15.4 本章小結 305

第 16章 監聽器 307

16.1 執行監聽器與任務監聽器 307

16.1.1 執行監聽器 307

16.1.2 任務監聽器 314

16.2 全局事件監聽器 318

16.2.1 全局事件監聽器工作原理 319

16.2.2 支持的事件類型 319

16.2.3 事件監聽器的實現 322

16.2.4 配置事件監聽器 323

16.2.5 事件監聽器使用示例 326

16.2.6 日誌監聽器 329

16.2.7 禁用事件監聽器 329

16.3 本章小結 329

第 17章 多實例實戰應用 331

17.1 多實例概述 331

17.1.1 多實例的概念 331

17.1.2 多實例的配置 332

17.1.3 多實例與其他流程元素的搭配使用 333

17.2 多實例用戶任務應用 335

17.3 多實例服務任務應用 341

17.4 多實例子流程應用 343

17.5 本章小結 346

 

高級實戰篇

 

第 18章 Flowable核心架構解析 349

18.1 Flowable工作流引擎架構概述 349

18.2 Flowable設計模式 350

18.2.1 Flowable命令模式 350

18.2.2 Flowable責任鏈模式 351

18.2.3 Flowable命令鏈模式 352

18.3 核心代碼走讀 353

18.3.1 流程模型部署 353

18.3.2 流程定義解析 356

18.3.3 流程啟動 360

18.3.4 節點流轉 363

18.3.5 網關控制 368

18.3.6 流程結束 373

18.4 本章小結 376

第 19章 Flowable集成Spring Boot 377

19.1 Spring Boot簡介 377

19.1.1 Spring Boot特性 377

19.1.2 自定義starter 379

19.2 Spring Boot配置詳解 381

19.2.1 配置文件讀取 381

19.2.2 自定義配置屬性 381

19.2.3 多環境配置 382

19.3 手動實現Spring Boot與Flowable 的集成 383

19.3.1 通過Spring Boot配置工作流引擎 384

19.3.2 Flowable、MyBatis與Spring Boot整合 385

19.3.3 通過Spring Boot管理工作流引擎 386

19.4 通過官方starter實現Spring Boot與Flowable的集成 387

19.5 本章小結 387

第 20章 集成外部表單設計器 389

20.1 Flowable支持的表單類型 389

20.1.1 內置表單 389

20.1.2 外置表單 389

20.2 表單數據存儲方案簡介 390

20.2.1 動態建表存儲方案 390

20.2.2 數據寬表存儲方案 390

20.2.3 使用Key/Value格式存儲方案 391

20.2.4 文檔型數據庫存儲方案 391

20.3 集成外部表單設計器 391

20.3.1 創建React工程 392

20.3.2 定義前後端交互接口 394

20.3.3 創建視圖頁面 395

20.3.4 配置頁面路由 401

20.4 自定義表單引擎 402

20.4.1 創建Spring Boot工程 403

20.4.2 集成Flowable 403

20.4.3 集成自定義表單引擎 407

20.4.4 Web服務接口實現 410

20.5 運行示例 416

20.5.1 新建表單模型 416

20.5.2 新建流程定義並綁定表單模型 418

20.5.3 部署流程 418

20.5.4 發起流程實例 419

20.5.5 填寫表單辦理任務 419

20.6 本章小結 420

第 21章 集成在線流程設計器bpmn-js 421

21.1 bpmn-js簡介 421

21.2 bpmn-js與React的集成 421

21.2.1 React開發環境搭建 421

21.2.2 React與bpmn-js的集成 423

21.2.3 bpmn-js的屬性面板實現 425

21.2.4 bpmn-js的漢化 426

21.3 bpmn-js與Flowable的集成 427

21.3.1 bpmn-js擴展用戶節點屬性 427

21.3.2 保存Flowable流程模型 430

21.4 本章小結 433

第 22章 Flowable自定義擴展(一) 435

22.1 自定義ProcessEngineConfiguration擴展 435

22.1.1 自定義ProcessEngineConfiguration 435

22.1.2 編寫工作流引擎配置文件 435

22.1.3 使用示例 436

22.2 自定義流程元素屬性 437

22.2.1 使用ExtensionElement自定義流程元素屬性 437

22.2.2 使用ExtensionAttribute自定義流程元素屬性 438

22.2.3 使用示例 439

22.3 自定義流程活動行為 442

22.3.1 創建自定義流程活動行為類 444

22.3.2 創建自定義流程活動行為工廠 446

22.3.3 在工作流引擎中設置自定義流程活動行為工廠 446

22.3.4 使用示例 446

22.4 自定義事件 447

22.4.1 創建自定義事件類型 447

22.4.2 創建自定義事件 448

22.4.3 實現自定義事件監聽器 448

22.4.4 使用示例 449

22.5 自定義流程校驗 450

22.5.1 創建自定義校驗規則 450

22.5.2 重寫流程校驗器 451

22.5.3 在工作流引擎中設置自定義流程校驗器 451

22.5.4 使用示例 453

22.6 實現多租戶動態切換多數據源 454

22.6.1 Flowable對多租戶多數據源模式的支持 454

22.6.2 Flowable對多租戶多數據源模式的實現 455

22.7 本章小結 460

第 23章 Flowable自定義擴展(二) 461

23.1 自定義Flowable身份管理引擎 461

23.1.1 自定義實體管理器和數據管理器 461

23.1.2 自定義身份管理引擎配置及配置器 466

23.1.3 在工作流引擎中註冊自定義身份管理引擎 467

23.1.4 使用示例 469

23.2 適配國產數據庫 470

23.2.1 修改SQL腳本模式 470

23.2.2 修改Liquibase模式 473

23.2.3 使用示例 474

23.3 自定義查詢 477

23.3.1 使用NativeSql查詢 477

23.3.2 使用CustomSql查詢 480

23.4 本章小結 484

第 24章 Flowable自定義擴展(三) 485

24.1 自定義流程活動 485

24.1.1 流程定義XML文件解析原理 485

24.1.2 自定義Mq任務的實現 485

24.1.3 使用示例 490

24.2 更換默認Flowable流程定義緩存 491

24.2.1 Flowable流程定義緩存的用途 491

24.2.2 自定義Flowable流程定義緩存 492

24.3 手動創建定時器任務 500

24.3.1 創建自定義作業處理器 500

24.3.2 在工作流引擎中註冊自定義作業處理器 501

24.3.3 使用示例 502

24.4 自定義業務日歷 503

24.4.1 自定義業務日歷的實現 503

24.4.2 使用示例 505

24.5 本章小結 507

第 25章 本土化業務流程場景的實現(一) 509

25.1 動態跳轉 509

25.1.1 Flowable對動態跳轉的支持 509

25.1.2 動態跳轉的基礎場景 511

25.1.3 動態跳轉與網關結合場景 513

25.1.4 動態跳轉與子流程結合場景 517

25.1.5 動態跳轉與調用活動結合場景 521

25.2 任務撤回 525

25.2.1 任務撤回的擴展實現 525

25.2.2 任務撤回使用示例 529

25.3 流程撤銷 530

25.3.1 流程撤銷的擴展實現 531

25.3.2 流程撤銷使用示例 533

25.4 本章小結 534

第 26章 本土化業務流程場景的實現(二) 535

26.1 通過代碼創建流程模型 535

26.1.1 工具類實現 535

26.1.2 使用示例 538

26.2 為流程實例動態增加臨時節點 539

26.2.1 動態增加臨時節點的擴展實現 541

26.2.2 動態增加臨時節點的使用示例 544

26.3 會簽加簽/減簽 546

26.3.1 會簽加簽/減簽的擴展實現 546

26.3.2 會簽加簽/減簽的使用示例 549

26.4 本章小結 552

第 27章 本土化業務流程場景的實現(三) 553

27.1 流程復活 553

27.1.1 流程復活擴展實現 553

27.1.2 流程復活使用示例 555

27.2 任務知會 557

27.2.1 任務知會擴展實現 557

27.2.2 任務知會使用示例 559

27.3 流程節點自動跳過 561

27.4 流程實例跨版本遷移 562

27.4.1 Flowable對流程實例跨版本遷移的支持 562

27.4.2 流程實例跨版本遷移使用示例 563

27.5 動態修改流程定義元素屬性 567

27.5.1 動態修改流程定義元素屬性的思路 567

27.5.2 動態修改流程定義元素屬性的使用示例 568

27.6 多語種支持 570

27.6.1 Flowable多語種的支持 570

27.6.2 流程多語種設置使用示例 571

27.7 本章小結 573

 

架構擴展篇

 

第 28章 Flowable性能與容量優化 577

28.1 ID生成器優化 577

28.1.1 數據庫ID生成器DbIdGenerator 577

28.1.2 UUID生成器StrongUuidGenerator 578

28.1.3 自定義ID生成器 579

28.2 定時器優化 580

28.2.1 Flowable定時器執行過程 580

28.2.2 Flowable定時器優化 581

28.3 歷史數據異步化 585

28.3.1 Flowable異步歷史機制 585

28.3.2 基於RocketMQ的歷史數據異步化 588

28.3.3 基於MongoDB的歷史數據異步化 590

28.3.4 數據一致性保證 596

28.4 本章小結 598

第 29章 Flowable多引擎架構的初階實現 599

29.1 多引擎架構分析 599

29.1.1 水平分庫分表方案的局限性 599

29.1.2 多引擎架構方案設計 600

29.2 多引擎建模服務實現 601

29.2.1 建模服務搭建 601

29.2.2 工作流引擎服務緩存改造 602

29.3 工作流引擎路由 604

29.3.1 Pika與Spring Boot的整合 605

29.3.2 將路由信息寫入Pika 606

29.4 建立服務網關 609

29.4.1 Spring Cloud Gateway簡介 609

29.4.2 Spring Cloud Gateway服務搭建 609

29.4.3 新發起流程路由配置 610

29.4.4 已有流程路由配置 611

29.5 本章小結 613

第30章 Flowable多引擎架構的高階實現 615

30.1 工作流引擎集群搭建 615

30.1.1 Nacos服務搭建 615

30.1.2 基於Nacos的引擎集群構建 616

30.1.3 引擎集群路由配置 618

30.2 網關動態路由配置 619

30.2.1 引擎信息動態配置 619

30.2.2 路由信息動態配置 620

30.3 流程查詢服務搭建 623

30.3.1 Elasticsearch與Spring Boot的整合 623

30.3.2 將數據寫入Elasticsearch 623

30.3.3 創建查詢服務 626

30.4 本章小結 627