前言 I
緻謝 III
關於本書 V
第一部分 曆史和原理 1
第1章 SOA本質 3
1.1 分布式計算簡史 4
1.1.1 基於RPC的方案存在的問題 5
1.1.2 理解SOAP的不同消息風格 6
1.1.3 SOA降臨 6
1.2 Web服務為實現SOA所做的承諾 8
1.3 理解SOA的核心特徵 9
1.3.1 服務接口/契約 10
1.3.2 服務透明性 10
1.3.3 服務的鬆耦閤與無狀態性 12
1.3.4 服務組閤 13
1.3.5 服務注冊和發布 14
1.4 SOA平颱所用到的技術 14
1.4.1 業務流程管理 15
1.4.2 企業決策管理 16
1.4.3 企業服務總綫 17
1.4.4 事件流處理器 19
1.4.5 Java消息服務 20
1.4.6 注冊錶 21
1.4.7 服務組件和組閤服務 22
1.4.8 Web服務中介 23
1.5 引入SOA成熟度模型 24
1.6 小結 25
第2章 定義開放SOA平颱 27
2.1 評估開源産品 28
2.2 選定BPM解決方案 29
2.2.1 BPM産品評估標準 30
2.2.2 開源BPM産品 31
2.2.3 選定BPM解決方案 32
2.2.4 介紹JBoss jBPM 33
2.3 選定企業決策管理解決方案 33
2.3.1 EDM産品評估標準 35
2.3.2 開源EDM産品 35
2.3.3 選定EDM 36
2.3.4 介紹JBoss Rules(Drools) 37
2.4 選定ESB 37
2.4.1 ESB産品評估標準 38
2.4.2 開源ESB産品 39
2.4.3 選定ESB 40
2.4.4 介紹作為輕量ESB的Synapse 41
2.5 選定ESP解決方案 42
2.5.1 什麼是事件流處理? 43
2.5.2 介紹Esper 44
2.6 選定注冊錶 44
2.6.1 注冊錶評估標準 45
2.6.2 開源注冊錶産品 46
2.6.3 選定注冊錶 47
2.6.4 介紹WSO2 Registry 48
2.7 選定服務組件和組閤框架 49
2.7.1 詳細介紹服務組件架構 49
2.7.2 介紹Apache Tuscany 51
2.8 選定Web服務中介解決方案 51
2.9 小結 53
第二部分 裝配組件和服務 55
第3章 使用Apache Tuscany創建服務 57
3.1 服務組件和組閤是什麼? 58
3.2 SCA裝配模型 59
3.2.1 介紹組閤定義文件 61
3.2.2 配置組件 65
3.2.3 定義服務 68
3.2.4 使用屬性 70
3.2.5 實現選項 74
3.2.6 使用引用進行依賴注入 79
3.2.7 定義可用的綁定 81
3.3 小結 87
第4章 高級SCA 89
4.1 使用組件類型進行配置 89
4.2 SCA交互模型 91
4.2.1 使用對話 91
4.2.2 理解迴調 93
4.3 腳本語言支持 98
4.3.1 創建Ruby組件 99
4.3.2 用Ruby方法簽名創建Java接口 100
4.3.3 修改服務實現類 100
4.3.4 修改組閤裝配集 101
4.4 高級Tuscany/SCA 102
4.4.1 産品部署 102
4.4.2 介紹服務數據對象(SDO) 107
4.4.3 高級SDO特性 112
4.5 小結 114
第三部分 業務流程管理 115
第5章 jBPM入門 117
5.1 BPM:SOA的“秘製醬料” 119
5.2 JBoss jBPM的曆史和概覽 121
5.2.1 jBPM流程的開發生命周期 121
5.2.2 麵嚮圖譜的編程和jBPM 127
5.3 理解節點 127
5.3.1 Node節點類型 128
5.3.2 Task-node節點類型 129
5.3.3 State節點類型 129
5.3.4 Mail-node節點類型 130
5.3.5 Decision節點類型 132
5.3.6 Fork和join節點類型 132
5.4 使用轉換 133
5.5 通過動作進行擴展 134
5.5.1 實例化動作類的屬性 137
5.5.2 使用動作錶達式 138
5.6 用事件捕獲流程中的生命周期變更 140
5.7 使用變量管理上下文 142
5.8 小結 144
第6章 jBPM任務 145
6.1 什麼是任務? 146
6.1.1 使用jBPM Console管理任務 146
6.1.2 task元素配置 148
6.2 任務用戶管理 149
6.2.1 Actor和指派 149
6.2.2 理解泳道 151
6.3 使用定時器 152
6.4 任務控製器 155
6.5 使用任務API進行開發 156
6.5.1 找齣jBPM實例中的流程 156
6.5.2 找齣給定流程正在運行中的流程實例 158
6.5.3 找齣流程實例中的開放任務 160
6.5.4 找齣指派給某個用戶的所有任務 162
6.5.5 找齣某actor的所有可選任務 162
6.5.6 完成任務 163
6.6 小結 165
第7章 高級jBPM功能 167
7.1 jBPM重要的企業級特性 168
7.1.1 用於分組的超態 168
7.1.2 使用子流程管理復雜度 169
7.1.3 管理異常 171
7.1.4 用BeanShell編寫腳本 173
7.1.5 審計日誌 175
7.1.6 理解異步延續 178
7.2 與SCA/SDO集成 180
7.2.1 使用SCA客戶端組件實現裝配集成 181
7.2.2 服務化jBPM 187
7.2.3 開發ListProcesses服務操作 188
7.2.4 開發CreateProcessInstance服務操作 194
7.3 小結 197
第四部分 事件流處理、集成和中介 199
第8章 用Esper處理復雜事件 201
8.1 企業中的業務事件 202
8.2 理解事件 203
8.2.1 BAM和ESP——區彆在哪裏? 204
8.2.2 事件驅動架構和SOA 204
8.3 Esper是什麼? 205
8.4 Esper起步 207
8.4.1 什麼是事件對象? 208
8.4.2 定義並注冊查詢語句 208
8.4.3 指定監聽器或訂閱者 209
8.4.4 配置選項 209
8.5 EPL基礎 210
8.5.1 查詢事件 210
8.5.2 使用變量 214
8.5.3 理解視圖 216
8.5.4 用命名窗口創建新的事件流 217
8.6 高級Esper 219
8.6.1 用函數進行擴展 219
8.6.2 應用事件模式 223
8.6.3 使用JDBC進行遠程連接 225
8.7 服務化Esper 227
8.7.1 創建框架和組件 228
8.7.2 Esper服務和會話管理器 229
8.7.3 SCA composite文件 230
8.7.4 用soapUI進行測試 231
8.8 小結 232
第9章 企業級集成和ESB 233
9.1 ESB和SOA之間的關係 234
9.2 ESB的曆史積澱 234
9.2.1 ESB核心功能 237
9.2.2 ESB適用的場閤 243
9.2.3 不適用ESB的場閤 245
9.3 Apache Synapse入門 248
9.3.1 協議適配器 249
9.3.2 麵嚮消息的中間件 251
9.3.3 基於XML的消息傳遞 251
9.3.4 智能路由和分發 251
9.3.5 消息轉換 251
9.3.6 任務/定時器 252
9.3.7 服務質量/Web中介 252
9.3.8 監控和管理 252
9.3.9 可擴展的API 252
9.4 基本的Apache Synapse消息和服務中介 253
9.4.1 簡單的消息中介示例 253
9.4.2 簡單的服務中介示例 258
9.5 小結 260
第10章 用Apache Synapse實現ESB 261
10.1 通過案例研究學習Synapse 262
10.1.1 第一階段:使用錯誤處理、路由和傳輸切換的典型Web服務中介 262
10.1.2 第二階段:協議/傳輸橋接和事件通知 262
10.1.3 第三階段:使用任務、腳本和數據庫集成 263
10.1.4 第四階段:服務質量中介 263
10.2 第一階段:簡單的Web服務中介 264
10.2.1 銷售訂單發起 265
10.2.2 配置服務中介代理並進行驗證 266
10.2.3 配置XSLT中介 268
10.2.4 從HTTP到JMS的傳輸切換 269
10.2.5 從JMS到HTTP的傳輸切換 272
10.3 第二階段:VFS、CSV、電子郵件和消息監聽 275
10.3.1 使用VFS傳輸 276
10.3.2 處理CSV文件 277
10.3.3 異常處理和SMTP傳輸 279
10.3.4 使用監聽消息模式 280
10.4 第三階段:任務、DB中介和迭代器 284
10.4.1 配置Synapse任務 285
10.4.2 使用迭代器中介拆分消息 287
10.4.3 使用DB中介 288
10.5 第四階段:用Synapse做QoS 290
10.5.1 實現WS-Security 291
10.5.2 使用Synapse限流中介 293
10.6 小結 296
第五部分 企業決策管理 297
第11章 用JBoss Drools定義業務規則 299
11.1 理解業務規則 300
11.1.1 業務規則方法的好處和背後的驅動力 302
11.1.2 與SOA的關係 303
11.1.3 規則引擎的特徵 303
11.1.4 業務規則管理係統 305
11.2 Drools入門 306
11.2.1 Hello World, Drools! 307
11.2.2 運行Hello World, Drools! 310
11.3 Drools規則語言(DRL)概覽 312
11.4 Drools頭元素 313
11.4.1 package 313
11.4.2 import 313
11.4.3 expander 313
11.4.4 global 313
11.4.5 function 314
11.5 在Drools中定義規則 314
11.5.1 用屬性修改規則行為 315
11.5.2 規則陳述的條件段(when部分) 318
11.5.3 規則陳述的後果段(then部分) 325
11.6 在Drools中查詢事實 327
11.7 用於規則協同的Drools RuleFlow 328
11.8 使用Drools規則語言之外的選擇 330
11.8.1 使用DSL來滿足業務用戶編寫需要 330
11.8.2 用決策錶定義規則 333
11.9 小結 334
第12章 實現Drools 335
12.1 案例總覽 336
12.1.1 定義DRL規則 338
12.1.2 以嵌入式引擎的方式運行 342
12.1.3 用DSL製作用戶友好的規則 348
12.2 使用Drools Guvnor管理規則 349
12.2.1 Guvnor功能概覽 350
12.2.2 用Guvnor編寫規則 355
12.3 開發決策服務 359
12.3.1 什麼是決策服務? 359
12.3.2 設計決策服務 361
12.3.3 用Tuscany和Drools實現決策服務 365
12.3.4 測試 371
12.4 小結 372
參考資源 373
索引 377
· · · · · · (
收起)