内容


构建 SOA 组合业务服务,第 5 部分

使用 IBM WebSphere Business Modeler

最佳实践、差距及获得的经验教训

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 构建 SOA 组合业务服务,第 5 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:构建 SOA 组合业务服务,第 5 部分

敬请期待该系列的后续内容。

引言

WebSphere Business Modeler (WBM) Advanced Edition V6 支持业务分析人员为组合业务服务(Composite Business Service,CBS)构造业务模型,而不会陷入软件开发的技术细节中。WBM 还提供导出功能,可以将其模型构件转换为 IBM WebSphere Integration Developer (WID) 构件。WBM Advanced Edition 可以进行以下转换:

  • 将业务流程转换为业务流程执行语言(Business Process Execution Language,BPEL)框架
  • 将接口转换为 Web 服务描述语言(Web Services Description Language,WSDL)文件
  • 将业务项和其他类型定义转换为 XML 模式定义(XML Schema Definition,XSD)文件和业务对象(Business Object,BO)定义

将业务流程转换为 BPEL 框架存在一些挑战。本文将说明有关使用 WBM V6 进行业务流程的建模、组装和部署的最佳实践。另外,本文还将标识在 WBM 和 WID 集成中存在的一些差距,并说明在示例流程建模工作(基于本文中描述的信用卡申请 实际使用情况)中获得的经验教训。

信用卡申请用例示例介绍

信用卡申请场景的示例实现(请参见图 1)演示了各个最佳实践。在此用例中,银行客户使用银行的门户申请信用卡产品。用户界面(User Interface,UI)调用从客户的配置文件检索其社会保险号(Social Security Number,SSN)的 BPEL 流程,以调用 credit score 服务。基于该服务返回的信用记录,将自动对信用卡申请进行拒绝、批准或转发到经理进行人工复审。通过业务规则集基于信用记录对决策进行控制。如果自动拒绝申请,会记录状态,并向客户发送通知。如果请求自动批准,会记录状态,启动信用卡发卡流程,并向客户发送通知。如果有必要进行人工审批,将启动第二个工作流(如图 2 中所示)。

图 1. WBM 中的信用卡申请流程
WBM 中的信用卡申请流程
WBM 中的信用卡申请流程

注意:提供了图 1 的较大视图。

当信用卡申请需要进行人工审批时,银行员工将复审有关申请人和产品的其他信息。然后,该银行员工将批准或拒绝申请。如果拒绝申请,会记录此申请,并向客户发送通知。如果批准申请,会通过决策(通过业务规则实现)确定是否还需要银行经理进行审批。如果不需要,会记录申请状态,启动信用卡发卡流程,并向客户发送通知。如果需要银行经理审批,则将记录银行员工的审批结果,并将申请发送给银行经理。银行经理批准或拒绝申请。将记录银行经理的决策并向客户发送通知。

图 2. 信用卡审批流程
信用卡审批流程
信用卡审批流程

注意:提供了图 2 的较大视图。

最佳实践

本文将说明有关使用 WBM V6 进行业务流程的建模、组装和部署的最佳实践。

使用高效的业务模型组装技术

如果需要更改现有业务流程,可以采用以下方法之一进行处理:

  • 使用 WBM 建模和模拟更改,然后为该流程生成 BPEL。
  • 直接在可部署构件中实现更改。

对于较小的更改,可以在 WID 内更改、测试和部署 BPEL 流程。目前尚没有将 WID BPEL 导回 WBM 的功能。这个限制表明,为了保持 WBM 和 WID 模型同步,需要在 WBM 中进行所有更改,然后重新生成 BPEL 来导入到 WID 中。如果对 BPEL 的更改并不会大幅度更改 WBM 中的模型的流,最好直接在 WID 中进行更改。对于业务流程的重要更改,应该从 WBM 重新生成 BPEL 模型并导入到 WID 中。这样,流程组合将继续使用之前业务流程中已经存在的资产。

避免重复 SCA 组件

可以在流程关系图中使用全局或局部任务。通过将图标从项目树拖到流程关系图中,可以将相同的全局任务多次添加到一个或多个业务流程中。通过这样,就可以在转换过程中为该全局任务创建单个 SCA 组件。如果转而采用从流程关系图选择面板将不同的局部任务图标添加到关系图中,以标识相同服务的多个实例,尽管这些不同的局部任务图标实际表示相同的服务,也会在转换过程中将其视为不同的任务。在这种情况下,会创建重复的 SCA 组件。在图 3 中,Credit Card Request 流程中有两个局部 Log Credit Card Request 任务。WBM 中的转换实用工具会将每个局部任务视为不同的服务,该实用工具将在 SCA 模块为每个局部任务生成唯一的 SCA 组件。在此示例中,每个局部日志任务都会产生一个 SCA 组件。为了溢出冗余内容,请手动对生成的组装关系图的结构进行修改。

注意:为了获得最好的结果,业务分析人员应该确定可重用业务任务,然后在 WBM 中将这些任务作为全局任务创建。

图 3. 重复 SCA 组件
重复 SCA 组件
重复 SCA 组件

注意:提供了图 3 的较大视图。

WBM 与 WID 间的差距

为了将流程转换为 BPEL 流程框架,请在 WBM 中使用 WebSphere Process Server 编辑模式建模业务流程。请注意有关此模型中可以使用的建模元素类型的限制,以使流程兼容 BPEL。以下元素类型在 Process Server 模式中不可用:

  • 业务项实例
  • Do-while 循环
  • For 循环
  • 通知广播器
  • 通知接收器
  • 观察器
  • 全局存储库
  • 计时器

在客户环境中,可能需要使用上面的某个建模元素类型,而这就是纯业务模型或流程 WBM 构造与 WID 中的 BPEL 流程之间的差距。只要采用 WBM Basic 模式,可以将上面列出的所有不可用的元素类型包括到流程中。Basic 模式中的流程是 业务流程,对特定技术(如 BPEL 或 WebSphere MQ 工作流的 FDL)没有依赖性。当从 Basic 模式切换到 WebSphere Process Server 模式时,以上任何元素类型都可能导致出错。

所获得的经验教训

本文将说明获得的有关使用 WBM V6 进行业务流程的建模、组装和部署的经验教训。

在 WBM 中支持流程依赖关系

有时候会希望描述依赖于其他 BPEL 流程的 BPEL 流程,例如:A 将 B 作为服务调用。可通过使用全局流程在 WBM 中完成此工作。通过指定其间的依赖关系来连接两个全局流程(请参见图 1 中的流程依赖关系)。尽管 WBM 中有子流程 的概念,但业务流程中的子流程将转换为父 BPEL 流程中的 结构,而不是独立的 BPEL 流程。另外,尽管在 WBM 的技术属性视图中可以将任务指定为可稍后转换为独立 BPEL 的流程,但不能在 WBM 中对该独立流程进行建模。有时候需要能够进行建模以进行生成的独立 BPEL 流程,因为您将在不同的场景中重用该 BPEL 流程。或者,您可能需要使得该 BPEL 流程成为长期运行的流程,而其父 BPEL 流程却是仅短时间内运行的流程。对于这种依赖关系,请使用全局流程。如果要使用局部流程,请在运行转换流程之后通过手动修改生成的 BPEL 流程框架来创建依赖关系。

使用 Java 代码片段时考虑任务粒度

WID 支持将 Java™ 代码片段嵌入到 BPEL 流程内。SCA 编程模型还将 Java 体系结构作为 SCA 组件的实现类型提供。通常,如果在 BPEL 流程内需要较小的功能(如简单的计算),可以将此代码嵌入到 BPEL 流程内的 Java 代码片段中。不过,如果需要重用 Java 代码的业务逻辑或业务逻辑非常复杂,则可以将此逻辑放入独立的 Java 类型 SCA 组件中,BPEL 流程可将此组件作为普通 SCA 服务引用。使用 WBM 建模流程且希望将该流程转换为 BPEL 流程时,请仔细考虑每个任务的粒度。如果任务的粒度恰当(实现简单功能),则在 WBM 中相应地使用 map 元素;可以在生成的 BPEL 流程框架中将此元素转换为空的 Java 代码片段。

图 4. Java 代码片段示例
Java 代码片段示例
Java 代码片段示例

在图 4 中,有一个 Auto Approve the Request map 元素。将此流程导出为 BPEL 框架后,此 map 元素将转换为生成的 BPEL 框架内的 Java 代码片段,而不是独立的 SCA 组件。

使用技术属性视图

WBM 中的技术属性视图(如图 5 中所示)提供了一种可选的方式,用以指定用于在 WPS 上实现流程、全局任务或服务的技术细节。通过使用此视图中提供的各种功能,可以简化下游实现任务。使用 WPS 导出功能导出业务流程时,将为技术属性提供缺省值。可以使用技术属性视图来指定各个值,从而重写这些缺省值。对于流程、任务和服务,技术属性视图中的 Implementation 页包含元素的 SCA 信息。此信息用于将元素作为 SCA 组件实现。WPS 建模模式的技术属性视图中提供了五个实现类型:

  • 状态机
  • 业务规则组
  • 人工任务
  • Java
  • 流程

例如,如果您选择任务实现类型为业务规则类型,则可以在 WBM 中添加具体的业务规则需求描述。将 WBM 项目转换为 BPEL 并将项目导入到 WID 中时,会将原始 WBM 任务转换为业务规则组组件,此组件的需求描述与在 WBM 中添加的需求描述完全相同。然后可以在 WID 中设计业务规则集,以实现这些需求。

图 5. 技术属性视图
技术属性视图
技术属性视图

注意:提供了图 5 的较大视图。

人工任务是一个特例。运行转换流程后,此任务将转换为独立的人工任务组件。如果不需要独立的人工任务,请在技术属性视图中将实现类型保留为 none,并转到属性视图中将 staff 角色分配给此任务。转换流程之后,此任务将转换为嵌入的人工任务,而不是独立的人工任务组件。

生成 WID BPEL 流程

要在 WID 中生成 Credit Card Request 和 Credit Card Approval 流程(请参见图 6),请运行导出与转换向导来生成信用卡申请和审批 BPEL 框架。然后,调整并添加代码,以对生成的 BPEL 框架进行充实,从而生成可稍后部署到 WPS 6 的流程。

图 6. WID 流程
WID 流程
WID 流程

注意:提供了图 6 的较大视图。

总结

本文介绍了使用 WBM V6 进行流程建模的过程中所总结的最佳实践、发现的差距以及获得的经验教训。这包括:

  • 最佳实践
    • 使用高效的业务模型组装技术
    • 避免重复 SCA 组件
  • WBM 与 WID 间的差距
  • 所获得的经验教训
    • 在 WBM 中支持流程依赖关系
    • 使用 Java 代码片段时考虑任务粒度
    • 使用技术属性视图

相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=SOA and web services, WebSphere
ArticleID=245136
ArticleTitle=构建 SOA 组合业务服务,第 5 部分: 使用 IBM WebSphere Business Modeler
publish-date=08062007