前言 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
· · · · · · (
收起)