SOA 最佳实践:BPEL 指南
第 1 部分:面向服务的方法在业务规则开
发中的运用
作者:
Kevin Geminiuc
在 SOA 最佳实践:BPEL 指南的第一部分中,您将了解如何通过在开发和管理业务规则时使用面向服务
的方法来降低维护成本并提高组织灵活性。
许多组织正从面向对象的业务流程管理范例转移到面向服务的方法;实际上,服务正在成为应用程序开发
的基本元素。同时,业务流程执行语言 (BPEL) 已经成为编排这些服务和管理业务流程的无缺陷执行的事
实标准。这些趋势所产生的结果是,为更灵活、更经济高效地管理业务流程提供了一些良机。
大多数业务流程(贷款审批就是一个典型示例)包含多个决策点。在这些决策点处,将对某个条件进行评
估。业务流程根据这些标准或业务规则更改它们的行为。实际上,这些业务规则对业务流程起到了推动作
用。这些规则通常嵌入到业务流程本身或自定义 Java 代码的内部,这将导致在将来的某个时候出现若干
问题:
• 业务规则比业务本身更改得更频繁,而更改和管理嵌入的业务规则是一个复杂问题,并超出了大
多数分析员的能力范围。因此,随着业务规则的更改,程序员通常要消耗大量时间来执行该任务。
• 大多数组织都缺少中央规则信息库。因此,策略中任何涉及到组织范围的更改都无法运用到所有
业务流程中。
• 业务流程无法重用规则。因此,IT 人员最终要为每个流程设计规则,这通常导致不一致性或冗余。
避免这些问题的最佳方法是使用
规则引擎
将业务流程与业务规则分离。在该方法中,规则公开为服务,而
BPEL 流程在到达决策点时通过查询该引擎来利用这些服务。该方法更为灵活 - 可以通过图形方式操作规
则,而不是在编程语言中或在流程内部对规则进行编码。业务用户可以使用工具自行编写规则,并且无需 IT
人员的协助即可进行部署后的规则更改。由于大多数更新和功能增强是由业务用户执行的,因此可以显著
减少维护成本。
规则引擎和 BPEL 是两种互补技术。Oracle BPEL 流程管理器提供了高级工具来显示、设计和管理 BPEL
流程,而第三方规则引擎使复杂的业务逻辑可以用类似英语的语法表示,并由非程序员领域专家对其进行
编辑。
在“BPEL 指南”的第一部分中,我将根据我所在团队的自身经验来提供分离流程和规则的最佳实践。并通
过代码示例提供一种开发方法,更改将 BPEL 与规则引擎集成的管理策略。最后,我将介绍该体系结构如
何在不同的层中正确划分逻辑。