在 SOA 应用的构建过程中,经常会需要整合已有的应用、流程或者服务。本文作者在项目中针对整合已有服务方面积累了一些实际的经验,在此予以总结,希望能够帮助读者正确使用 IBM 的流程建模和开发工具,重用已有的服务,迅速完成建模、开发和部署的全过程。文中将结合一个具体的业务流程实例,逐步阐述如何进行已有服务的导入,使用已有服务进行流程建模,流程模型到 BPEL 的转换,服务和流程的组装,操作界面的生成以及如何部署和测试。文中最后附加了在此过程中产生的项目文件(包括 WBM 的流程模型项目和 WID,BPEL 代码项目以及已有服务项目),供读者学习。
理赔 (Claim) 是保险行业日常业务中的一个重要的流程。通常包括接报案,查勘,立案,定损,理算,核赔,赔付等环节。本文并不打算实现一个真实完整的理赔流程,而是选取其中几个重要的环节(如下图所示)来展示如何使用已有服务构造流程:
图 1. 业务流程
接报案 (FNOL, First Notice of Loss):出险后,客户向保险公司描述事故的时间、地点、过程、损失物、损失程度等信息。接报案人员将这些信息完整准确的记录下来的过程。
定损 (Loss Decision):根据案情,损失的项目、数量和损失程度,确定损失的金额。可由查勘员同时进行查勘和定损。
结案 (Settlement):损失金额确定下来并经过核准后,由保险公司支付赔款给被保险人,并结束本次理赔流程。
这几个活动都是需要人工参与完成的,故将使用人工任务来执行 (Human Task)。已有的服务是对接报案信息,定损信息和结案信息进行持久化操作的服务。本文将展示如何把这些服务集成到如图1所示的业务流程中。
WebSphere Business Modeler V6.2,下载试用版。
WebSphere Integration Developer V6.2 (with WebSphere Process Server V7.0) 。
在企业的 IT 系统的升级改造过程中,并不是所有的环节的业务都会发生改变,而事实上也是大部分的业务需求可以由原有的软件功能和服务来完成。IBM 提供了强大的软件集成设计和开发环境,帮助 IT 设计和开发者实施已有系统的已有服务(也称为遗留服务,Legacy Services)和新系统的集成工作。
WebSphere Business Modeler (WBM) Advanced Edition V6.2 持业务分析人员为组合业务服务(Composite Business Service,CBS)构造业务模型,而不会陷入软件开发的技术细节中。WBM 还提供导出功能,可以将其模型构件转换为 IBM WebSphere Integration Developer (WID) 构件。WBM 可以进行以下转换:
- 将业务流程转换为业务流程执行语言(Business Process Execution Language,BPEL)框架
- 将接口转换为 Web 服务描述语言(Web Services Description Language,WSDL)文件
- 将业务项(Business Item)和其他类型定义转换为 XML 模式定义(XML Schema Definition,XSD)文件和业务对象(Business Object,BO)定义
本文中使用的企业已有服务可以是 Web Service 或者 SCA() 实现的服务。Web Service 实现的服务可以和新的企业应用进行分布式部署,SCA 实现的服务需要和新的企业应用部署在同一个 WPS 上。本文将以 SCA 服务为例。
下面的步骤中,我们首先使用 WBM 将已存在的业务服务和业务对象导入到 WBM 项目中,然后利用导入的业务服务和业务对象建立符合需求的业务流程。
在我们进行导入之前,最好将待导入的业务服务的 WSDL 和 XSD 文件放入同一目录下。这样在导入时可以方便地进行选择。当然导入前要确保所有的业务服务和业务对象的定义都是正确的。
建议在纯英文环境中使用 WBM,可避免因中英文而产生的模型转换问题。
第一步,在 WBM6.2 中新建 Business Modeling Project
图 2. 创建新的业务建模项目
单击“Next”。
图 3. 输入新业务建模项目的参数
键入 Project Name 和 Process Name, 单击“Next”。
图 4. 选择模型风格
选择 Original style, 单击“Finish”。
第二步,导入现有的服务到刚刚创建的 ClaimProcess 中,本例包含了 3 个服务共有 3 个 xsd 和 3 个 wsdl 文件,在本文附件 IBMReuseableServiceLib 中可以找到这些文件。切换 WBM 到 Business Modeling perspective, 右击刚刚新建的 ClaimProcess 工程,选择 Import。
图 5. 选择导入类型
选择 Business services and service objects(.wsdl, .xsd), 单击“Next”。
图 6. 选择导入对象所在目录和要导入的对象
选择 wsdl 文件和 xsd 文件所在的目录,并选择要导入的文件(一般情况下建议全选),如图所示,单击“Finish”进行导入。
导入完成后,在 Project Tree 视图中能看到 ClaimProcess->Business services 下多出 ClaimCaseMgmt,、LossDecisionMgmt、SettlementMgmt 三个业务服务,ClaimProcess->Business service objects 会多出 ClaimCase、LossDecision、Settlement 三个业务对象,说明导入成功。
图 7. 检查导入的业务对象
当上一步的导入完成后,我们便可以进行业务流程建模。具体建模方法,可以参考相应的文献,这里只给出两点说明:
- 对于导入的 WSDL 和 XSD 文件,WBM 会自动将他们分类到 business service 和 business service objects 目录下,并且处于不可编辑状态,从某种意义上来说,这样也保证了我们在进行流程建模时,不会对已有的服务接口进行误修改。当需要在流程中加入业务服务时,只要从项目树中拖拽此业务服务到流程图即可。
- 在上文的业务流程介绍过程中,可以看到业务流程中存在很多的人工任务(Human Task)。在实际的业务分析时,如果发现任务本身需要指派给人进行参与,我们就可以在业务流程中使用 Human Task.。Human Task 在 WBM 中是一个标准的控件,可以直接使用。
本例使用的业务流程为保险行业理赔的简化流程,分为三个环节:接报案、定损和结案,三个环节都需要人为操作来执行流程,每个环节执行后会调用其对应的服务(主要是持久化服务,为已有服务)完成业务功能。
首先,选择建模的模式为 WPS。点击 Mode 选择下拉箭头,选择 WebSphere Process Server。
图 8. 选择建模使用的模式
在 Business Modeling perspective 下,双击 Claim 流程,打开流程编辑视图。
从 Activities 中拖拽 HumanTask 到 Claim 流程中,命名为 FNOL( 代表接报案 ),并从编辑视图左上角拖拽一个 Connection
,连接 Claim 流程输入和 FNOL,将 FNOL 作为流程的第一个节点。然后需要对这个 HumanTask 设定输入,输出数据类型。在这里它的输入数据类型是一个 Text 类型,而它的输出类型是 ClaimCase。ClaimCase 是一个我们已经导入的业务对象,可以在 Project Tree->Business service objects-> 找到。
图 9. 新建 HumanTask 节点
打开 Project Tree->Business services->ClaimCaseMgmt->ClaimCaseMgmt 目录,拖拽 createClaimCase 到 Claim 流程中,并拖拽一个 Connection 连接 FNOL 到 createClaimCase。在这里,这个节点的输入输出类型是固定的,不需要进行设置。createClaimCase 是我们前面导入的服务 ClaimCaseMgmt 中的一个操作,它的作用就是把 FNOL 这个 HumanTask 输出的 ClaimCase 数据对象持久化到数据库。
图 10. 使用导入的服务
类似地,新建 HumanTask 定损 LossDecision 和 createLoss 服务,Settlement 和 createSettlement 服务,最后拖拽一个 Connection 连接 createSettlement 到 Claim 流程输出。
图 11. 创建的业务流程
本章介绍如何使用 WBM 将业务流程模型转换成业务流程工程。
为了使导出的业务流程可以正确地部署在 WPS 上,首先要查看一下建模时是否选择了 WebSphere Process Server 模式,另外还要保证所有模型中属性的命名是合法的,比如,所有流程必须具备唯一的命名,变量使用英文名称等。
在 Business Modeling perspective 下,右击 ClaimProcess 工程,选择 Export,如下图。
图 12. 导出业务流程模型
选择 WebSphere Integration Developer, 如下图,然后单击“Next”。
图 13. 选择导出类型
输入目标目录 (Target directory),如下图,然后单击“Next”。
图 14. 指定导出目录
单击“Finish”完成,如下图,可能会出现警告提示,点击 OK 忽略。
图 15. 选择导出选项
在选定的目录下会导出一个以 ClaimProcess 和时间戳命名的 zip 包,包含 3 个工程,如下图所示。其中,ClaimProcess 工程包含了业务流程的实现(BPEL),ClaimProcess_impl 包含了业务流程中调用的服务的默认实现(实际上是空实现,下面的“业务流程模型和已有服务的装配”一节还要对此进行配置),而 ClaimProcess_lib 工程包含业务流程所依赖的 WSDL,XSD 等接口和数据类型的描述。
图 16. 导出的业务流程模型
下面的操作将把刚才从 WBM 导出的业务流程模型工程导入到 WID 开发环境里。在导入之前请确认 WID 运行在英文语言环境中。
在 WID 中选择 Java perspective,选择菜单 File->Import,如下图。
图 17. 导入业务流程模型工程
选择 Existing Projects into Workspace。单击“Next”。
图 18. 选择导入类型
选择 Select archive file,并选择3个工程,单击“Finish”进行导入。
图 19. 指定要导入的包
导入 WBM 的业务流程模型到 WID 之后,在 WID 中可以看到名称为 ClaimProcess_impl 的工程,这个工程包含 ClaimProcess 调用的服务的默认实现(实际上是个空实现),ClaimProcess 调用的服务就绑定到该实现上。本节将首先把已有的服务的实现导入到 WID,然后把 ClaimProcess 调用的服务绑定到导入的已有服务上。操作过程如下:
首先,将已有服务的工程导入到 WID 中,已有服务所在的工程是 IBMReuseableService.zip。点击菜单 File->Import, 选择 Existing Projects into Workspace
图 20. 导入已有服务所在的工程
导入后,在 Package Explorer 视图中会增加 4 个工程:IBMReuseableService 和 WID 自动生成的 IBMReuseableServiceApp, IBMReuseableServiceEJB, IBMReuseableServiceWeb。
图 21. 已有服务所在工程导入成功
在 WID 中切换到 Business Integration Perspective,双击 ClaimProcess->Assembly Diagram:
图 22. 打开装配视图
然后,在 Assemble Diagram 中点击右键,选择 Automatic Layout:
图 23. 自动排序
点击 ClaimCaseMgmt,在 Properties 视图中,打开 Binding,我们会看到 Export Name 为 businessservices/ClaimCaseMgmt,这就是 WBM 给出的 ClaimCaseMgmt 的默认实现
图 24. 选择服务
点击 Browse:
图 25. 更改服务实现绑定
选择 ClaimCaseMgmtExport,点击 OK,这样 ClaimCaseMgmt 就绑定了已有服务上了。
同 ClaimCaseMgmt 一样,依次选择 Assemble Diagram 中的 LossDeicisionMgmt 和 SettlementMgmt,重复上面的步骤就可以绑定各自的已有服务。
本章介绍如何使用 WID 生成业务流程的操作界面(Human Task 的操作界面)。WID 提供了一个简单而又强大的功能可以生成在运行时对业务流程进行交互操作的 Web UI。
在 Business Integration perspective 下,右键单击 ClaimProcess->Integration Logic->Processed->processes/claim->Claim,选择 Generate Human Task User Interface
图 26. 生成 Web UI
WID 可以生成基于 JSF 或者 Lotus Form 的 Web UI,本例中选择 JSF 实现的 UI, 如下图,单击“Next”。
图 27. 指定 Web UI 生成器的类型
输入要生成的 WEB 工程的名称和界面的风格,如下图,单击“Finish”。
图 28. 指定项目名称并选择界面风格
Web 工程会生成在当前的 WID Workspace 下,生成之后 Package Explorer 视图中会多出 1 个工程 ClaimProcessUI(Web Project)
图 29. Web UI 生成后工程列表
这个工程可以完成业务流程的创建、查询、结束、删除,任务的获取、释放、保存、完成等功能,包含下面几部分:
图 30. Web UI 生成的项目结构介绍
下面步骤将把生成的 WID 项目部署到 WPS 上:
- 启动 WPS 服务器。
- 将 ClaimProcessAPP、ClaimProcessUIEAR、IBMReuseableServiceApp 3 个工程发布到 WPS 服务器上。
图 31. 部署项目到 WPS
业务流程的测试可以使用 WID 的测试组件和业务流程编排器资源管理器共同完成,也可以通过生成的 Web UI 来完成,本例使用生成 Web UI 来进行测试。
在 IE 地址栏输入 Web 应用的 URL( 类似于 http://xxx:xxx/ClaimProcessUI),用户名和密码等同于 WPS 管理员用户名和密码。
图 32. 登录业务流程应用
图 33. 业务流程应用测试界面
左侧 Business Case 下的功能可以进行业务流程的创建、查询和删除等操作,My ToDo ’ s 下的功能进行任务的获取、完成等,下面是一个简单的示例。
创建一个业务流程:单击 Business Case->New, 然后单击 Claim_InputCriterion, 在 Input 中输入 test, 单击“Create”,实际上会生成一个名为“Test”的流程实例。
图 34. 创建业务流程实例
通过 Business Case->Status 可以看到创建的业务流程。
图 35. 查看业务流程状态
单击 My ToDo ’ s->Open 可以进入任务处理页面,单击任务名称后,可以进行任务的获取、完成、保存和释放等操作。
图 36. 查看任务状态
任务获取后,填写所需的输出信息,单击“Complete”。
图 37. 完成流程任务
业务流程实例将调用已有的服务 (createClaimCase),将接报案信息持久化到数据库,然后从接报案环节进入到定损环节。同接报案一样,填写并完成定损和结案环节,流程就会执行结束。在这个过程中,流程实例将调用已有的服务(createLoss 和 createSettlement,参见图 11)将定损环节输入的数据和结案环节输入的数据持久化到数据库。
本文通过保险行业的一个业务实例,使用 WebSphere Business Modeler 和 WebSphere Integration Developer,详细介绍了如何整合已有的服务来快速构建并部署业务流程的全过程。文中着重介绍了在 WBM 中进行流程建模应该遵循的规则和注意事项,如何进行流程模型从 WBM 到 WID 的转换,如何组装现有服务和业务流程,如何生成 Huaman Task 操作界面,如何进行流程部署和测试,以便于 SOA 应用和业务流程的建模和开发人员借鉴学习。
ClaimProcess.mar 是 WBM 里面构造的业务模型,其中包含导入的已有服务,可以导入到 WBM6.2。
IBMReuseableServiceLib.zip 中包含已有服务的接口和数据类型定义,可以导入到 WBM 成为 Business Services 和 Business Objects。
IBMReuseableService.zip 中包含有已有服务的实现,可以导入到 WID,然后绑定到业务流程模型的实现(BPEL)上。
IBMResuseableServiceIntegration.zip 是在 WID 里面完成的全部工程项目,可以导入到 WID 部署和运行。
| 描述 | 名字 | 大小 | 下载方法 |
|---|---|---|---|
| 业务模型 | ClaimProcess.mar | 122KB | HTTP |
| 工程项目 | IBMResuseableServiceIntegration.zip | 7060KB | HTTP |
| 服务的实现 | IBMReuseableService.zip | 15KB | HTTP |
| 服务的接口和数据类型定义 | IBMReuseableServiceLib.zip | 9KB | HTTP |
- developerWorks 教程:使用 WebSphere Business Modeler 进行业务建模。详细介绍如何使用 WBM 进行业务流程建模,分析和优化。
- developerWorks 文章:WPS 流程整合系列之一 : 在 WID 中开发流程应用。详细介绍如何在 WID 中开发部署业务流程应用。
- Business Process Management Samples & Ttorials – Version 6.2:在这里你可以学习到如何使用 IBM WebSphere? Integration Developer 和 WebSphere Process Server 来实现业务流程管理。
- IBM WebSphere Business Process Management 信息中心: 从这里您可以了解到和 IBM Websphere 业务流程管理相关的产品以及它们的详细介绍。
-
WebSphere Process Server 产品专题:这里为您总结了和 WPS 相关的资源,包括技术文章、试用版下载、最新动态等。
- developerWorks WebSphere 专区 :针对使用 WebSphere 产品的开发人员的技术信息和资源。developerWorks WebSphere 提供产品下载、how-to 信息、支持资源以及一个免费技术库,该技术库包含 2000 多篇技术文章、教程、最佳实践、IBM 红皮书和在线产品手册。无论您是初学者、专家还是介于二者之间,您都能发现使用基于开源标准的 WebSphere 软件平台构建企业级 SOA 解决方案所需的信息和资源。
- developerWorks 技术活动和网络广播:随时关注 developerWorks 技术活动和网络广播。