为IBM Business Process Manager V8.5.6开发高级集成服务

本教程探讨了IBM®Business Process Manager(BPM)Advanced V8.5.6中的新选项,以便在IBM Process Center外部管理的单独模块中创建和部署Advanced Integration服务。 了解如何实现高级集成服务以及如何在使用IBM Process Designer创建的流程或服务中使用它们。

高级集成服务用于从业务流程定义(BPD)或IBM BPM中的另一个服务中调用在IBM Integration Designer中实现的服务。 将单独的模块用于Advanced Integration Service实现具有多个优点。 最重要的优点是,无论有多少个BPD包含Advanced Integration Service实施工具包,它都确保只有一个Advanced Integration Service实施模块–企业归档(EAR)文件。 参见图1。

图1.在IBM BPM V8.5.6中,仅部署了一个EAR文件
IBM BPM V8.5.6中部署的一个EAR文件的屏幕截图

在IBM BPM V8.5.6之前,每次在流程应用程序中使用具有Advanced Integration Service实现的工具包时,都会部署一个新的Advanced Integration Service实现模块(EAR文件)。 参见图2。

图2.为IBM BPM V8.5.6之前的版本中的每个Advanced Integration Service实现部署的EAR文件
IBM BPM V8.5.6之前版本中部署的多个EAR文件的屏幕截图

另一个优点是,它不会将Advanced Integration Service实施生命周期与流程应用程序生命周期联系在一起–可以更改实施而无需重新部署使用Advanced Integration Service工具包的流程应用程序。

IBM BPM项目通常需要与外部资源(例如Web服务)或后端系统(例如数据库或企业信息系统)进行复杂的集成。 这些集成可能各自需要复杂的编排和数据映射。 使用IBM Integration Designer可使此类工作变得更容易。 可以通过Advanced Integration服务从IBM BPM项目中调用使用Integration Designer创建的实现。 在Process Designer中,高级集成服务实现类型仅在IBM BPM Advanced中可用。 参见图3。

图3.高级集成服务实现
高级集成服务实现的屏幕截图

可以从BPD,人工服务或服务流开始执行Advanced Integration Service实施。 它与Process Center在同一服务器上运行,或在Process Server上运行,并作为EAR文件部署。

创建高级集成服务实施

高级集成服务定义存在于流程应用程序或工具包中,并且包含启动服务组件体系结构(SCA)模块所需的信息。 实际实现在SCA模块中,该模块存在于集成项目中,并在Integration Designer中编写。 SCA模块作为Java平台企业版(Java EE)应用程序部署在承载Process Center或Process Server应用程序的同一应用程序服务器上。

有两种主要方法可以实现高级集成服务(如图4所示):

  1. 在单独的独立模块中(IBM BPM V8.5.6中的新增功能)。
  2. 在同一流程中的应用程序或工具包。
图4.高级集成服务实现选项
高级集成服务实现选项的屏幕截图

在同一工具箱或流程应用程序中实施高级集成服务

实现高级集成服务的最简单方法是在定义该应用程序的同一流程应用程序或工具包中。通过以下方式,在激活流程应用程序或激活流程应用程序时,通过选择Integration Designer中的菜单项来自动部署企业应用程序。运行BPD。 随着实现的发展,只需通过获取流程应用程序或工具包的快照即可完成流程和Advanced Integration Service的版本创建。 如果您查看Process Designer中的高级招聘样本,则会看到在流程应用程序中定义和实现的Advanced Integration服务的示例。

在诸如快速原型制作的情况下,在同一流程应用程序或工具包中实施非常有用,但是这会带来一定的成本,因此不建议在生产质量的应用程序中使用。 随着Process Designer中开发的继续进行,如果更改了Advanced Integration服务接口或Advanced Integration Service接口使用的业务对象,则每次运行BPD都会发生高级部署(这是企业应用程序部署)。 高级部署的性能成本可能会影响流程中心的用户。 通过在工具包中实施Advanced Integration Service,可以降低这些成本,因为它与流程应用程序是分开的。 但是,由于每次更改工具箱版本时,包含高级集成服务工具箱的流程应用程序都需要进行高级部署,因此处理器使用率仍在增加。

在单独的独立模块中实施高级集成服务

在大多数情况下,使用高级集成服务的最佳方法是在工具箱中定义它,然后在独立的Integration Designer模块中实施它。 实际上,从IBM BPM V8.5.6开始,如果在流程应用程序中创建Advanced Integration Service,则会收到一条消息,提示您最好在工具箱中实现Advanced Integration Service。 在工具箱中创建高级集成服务时,可以在其他项目中共享它,更重要的是,您可以选择将其实现为独立模块。 因为这是推荐的模式,所以默认情况下是在独立模块中实现。 仍然必须将包含Advanced Integration Service的集成项目部署为企业应用程序,但是很少部署到Process Center服务器,并且独立于流程应用程序更新。 缺点是您必须手动部署独立模块。 即使仅在流程应用程序或工具包中实现了高级集成服务,许多用户仍发现独立部署是首选。 (流程应用程序或工具箱实现是实际实现的基础。请参阅先前在developerWorks上发布的使用IBM Business Process Manager Advanced V7.5来实现基础模式 )。

如果在独立模块中实现高级集成服务,则它可以独立于使用该集成服务的任何流程应用程序或工具包而发展。 在流程设计器中唯一需要更改的时间是签名或定义已更改(例如,不同的模块名称),或者是否创建了模块的新版本。 现在,对于IBM BPM V8.5.6,Process Designer中的更改不会像以前的IBM BPM版本中那样导致流程应用程序的任何高级部署。 在IBM BPM V8.5.6之前,当将IBM BPM项目导入Integration Designer时,这意味着该项目现在已经高级,因此该项目已作为企业应用程序部署。 在IBM BPM V8.5.6中,除非缺省项目中包含可执行内容,或者如果其他项目与流程应用程序或工具包相关联,则不再进行高级部署。

示例代码:在独立模块中创建Advanced Integration Service实现

在本教程的“下载”部分中,您可以获得带有客户端人工服务的完整的Advanced Integration服务样本,该样本可启动Translate AIS Advanced Integration服务(如图5所示)。 下载code_sample.zip并解压缩文件。 高级集成服务示例包括三个文件:

  • AIS - 3.0.twx (包含客户端人员服务和高级集成服务定义的工具包)
  • AISModule.zip (一个包含“高级集成”服务实现源的项目交换文件)
  • AISModuleApp.ear (包含高级集成服务实现的EAR文件)
图5.启动高级集成服务的示例客户端人工服务
启动高级集成服务的客户端人工服务的屏幕截图

该示例应用程序提示用户输入输入,然后将这些输入传递给Advanced Integration服务。 高级集成服务返回响应后,该过程继续。 如果Advanced Integration服务产生错误,则在此过程中采用故障路径。

本节提供了以下活动的基本步骤,以进行样本高级集成服务源代码的安装:

  • 在Integration Designer中打开高级集成服务定义工具包
  • 导入示例高级集成服务实现
  • 检查示例高级集成服务实现详细信息
  • 检查独立模块中的实现
  • 部署独立模块
  • 运行示例高级集成服务

以下各节显示了实现随附的Advanced Integration Service示例中包含的Advanced Integration Service的步骤。 已实现的Advanced Integration Service具有描述启动服务的SCA导出的属性值。 您可以使用“高级集成”服务实施向导来自动完成导出描述。 SCA导出是使用Integration Designer在集成模块中定义的,并且是公开模块中包含的组件的一种方法。 实际的服务业务逻辑包含在连接到导出的组件中,该组件又可以连接到其他组件。 对于导出的调用者,模块中除导出外的所有内容都是黑匣子。

在Integration Designer中打开高级集成服务定义工具包

完成以下步骤以在Integration Designer中打开示例高级集成服务定义工具包:

  1. 使用新的工作区打开Integration Designer
  2. 切换到Process Center透视图。
  3. 登录到流程中心。
  4. AIS – 3.0.twx文件导入到Process Center。
  5. 确保您导入的工具包已选中“ 允许用户更新工具包”
  6. 在Integration Designer中打开“高级集成”服务工具包。 (单击“ 在工作区中打开”
  7. 在单击“ 确定”之前,请清除“ 响应式教练”工具包。

导入示例高级集成服务实现

完成以下步骤以导入样本高级集成服务实现:

  1. 下载并保存附件的AISModule.zip文件。
  2. 在Integration Designer中,选择“ 文件”>“导入”>“其他”>“项目交换” ,然后单击“ 下一步”
  3. 浏览到AISModule.zip并仅选择AISModule项目,如图6所示。( AIS_Library项目已经在工作空间中,因为它是从Advanced Integration Service工具箱中的Process Center导入的。)然后,单击Finish
    图6.导入高级集成服务实现模块
    “导入项目交换内容”窗口的屏幕截图

检查示例高级集成服务实现详细信息

AISModule中已经实现了高级集成服务(请参见图7)。

检查实施细节:

  1. 在“业务集成”窗口中,展开AIS工具箱项目。 在“ 高级集成服务”下,您会看到翻译的“高级集成服务”。
  2. 右键单击翻译 ,然后选择编辑
  3. 现在,您将看到“ 实施高级集成服务”向导。 请参阅图7,并检查为该Advanced Integration服务的示例实现所做的选择:
    • 模块:AISModule –单击“ 新建”创建一个模块。 也可以选择工作空间中的现有模块,或键入已部署模块的名称。
    • 导出名称:AISExport –导出名称是向导在AISModule中生成的SCA导出名称的名称。 BSCA可以看到此SCA导出。 客户端人员服务启动高级集成服务时,将隐式使用此SCA导出。
    • 操作名称:invoke –操作名称是在转换界面中为转换高级集成服务定义的操作。
    图7.高级集成服务实现细节
    “选择实现位置”窗口的屏幕截图

检查独立模块中的实现

检查实现:

  1. 双击AISModule装配图 。 请注意,由向导和AISExport_Process BPEL SCA组件创建的AISExport。 另外,请注意转换接口,该接口在AIS_Library中定义。 此接口在“高级集成”服务工具包中定义。
    图8.高级集成服务实现:SSA导出和BPEL组件
    高级集成服务实现的屏幕截图:SSA导出和BPEL组件
  2. 双击AISExport_Process 。 Advanced Integration服务被实现为BPEL微流。 BPEL流程检查请求是否有效。 如果有效,则BPEL流程会将消息转换为请求的语言(为简单起见,它仅将单词“ Hello”转换为法语)。 如果无效,则会产生错误,如图9所示。
    图9. BPEL组件实现示例
    BPEL组件实现示例的屏幕截图

部署独立模块

为了调用Advanced Integration Service实现,必须首先在服务器上安装包含模块的EAR文件。 完成以下步骤来安装EAR文件:

  1. 登录到Process Center服务器的WebSphere Integrated Solution控制台
  2. 选择应用程序>应用程序类型> WebSphere企业应用程序
  3. 点击安装
  4. 单击Browse,然后浏览到AISModuleApp.ear文件,如图10所示。然后,单击Next
    图10.安装Advanced Integration服务实现EAR文件
    安装高级集成服务实现EAR文件的屏幕截图
  5. 继续单击下一步,并在每个安装步骤中接受默认值。
  6. 在最后一个安装步骤之后,单击“ 完成” ,然后保存到主配置。
  7. 安装EAR文件之后,在Enterprise Applications页面上,选择AISModuleApp ,然后单击Start ,如图11所示。
图11.启动Advanced Integration Service实施EAR文件
启动Advanced Integration Service实施EAR文件的屏幕截图

现在可以从工具箱中调用包含高级集成服务的企业应用程序。

运行示例高级集成服务

首先,通过完成以下步骤在Case Designer中打开Advanced Integration Service工具箱:

  1. 在浏览器中打开Process Center网页。
  2. 在“ 工具箱”选项卡上,选择“ AIS” ,然后单击“ 管理” 。 选择“ 允许用户 在基于Web的Case Designer中 打开 工具箱”
  3. 再次单击“ 工具箱”选项卡,然后单击工具箱右侧的“ 打开案例设计器”链接。

示例高级集成服务工具箱包含一个Hello客户端人工服务,如图12所示。此人工服务启动了高级集成服务。

图12.“ Hello”客户端人工服务
Hello客户端人工服务示例的屏幕截图

完成以下步骤以启动Hello客户端人工服务:

  1. 在Case Designer中,单击用户界面> Hello
  2. 要运行此客户端人工服务,请点击运行
图13.运行“ Hello”客户端人工服务
运行Hello客户端人工服务的屏幕截图

此示例中的高级集成服务提供了一些主要限制的翻译服务。 如果语言不是“法语”或要翻译的消息不是“ Hello”,则会引发异常!

要在Hello客户端人工服务中测试Advanced Integration Service服务,请完成以下步骤:

  1. 对于您的姓名,输入your name 。 对于语言输入French 。 对于消息,输入Hello
  2. 单击Translate ,如图14所示。
图14.“ Hello”客户端人工服务–幸福的道路
该示例Hello客户端人工服务的一条愉快路径的屏幕截图

现在,完成以下步骤来尝试异常路径:

  1. 单击再次尝试
  2. 对于您的姓名,输入您的姓名 。 对于语言,输入法语 ,对于消息,输入问候语
  3. 单击翻译
图15.“ Hello”客户端人工服务–异常路径
该示例Hello客户端人工服务的异常路径的屏幕截图

详细步骤:在独立模块中创建Advanced Integration Service实施

前面的部分描述了如何导入,部署和测试已经创建的示例高级集成服务实现。 通过检查示例实现,您发现了Advanced Integration Service定义与独立实现之间的关联是如何工作的。 本节将详细介绍如何从头开始实现高级集成服务。 它还显示了如何创建替代实现而不影响业务流程或调用高级集成服务的服务。

删除当前的实现

由于提供的Advanced Integration Service定义已经实现,因此请从工作空间中删除当前实现,然后从Advanced Integration Service定义中删除实现引用。 完成以下步骤:

  1. 要从工作空间中删除AISModule ,请在“业务集成”视图中右键单击AISModule ,然后选择“ 删除”
  2. 要删除高级集成服务定义,请展开AIS工具包项目。 在Advanced Integration Services下 ,您会看到翻译的 Advanced Integration服务。
  3. 右键单击翻译 ,然后选择删除实施

创建另一个高级集成服务实现

现在,您删除了当前的实现,通过完成以下步骤来创建另一个实现:

  1. 从Advanced Integration Service定义中删除实现引用后, translate Advanced Integration服务已更改为Translation(未实现) 。 展开条目,如图16所示,然后单击Implement链接为Advanced Integration Service创建一个不同的实现。
    图16.实现高级集成服务定义
    有关如何实现高级集成服务定义的屏幕截图
  2. 将打开“实施高级集成服务”向导。 创建一个名为TranslationService的模块以包含高级集成服务实现。 单击New ,然后在New Module窗口的Module Name字段中输入TranslationService ,然后单击Next ,如图17所示。
    图17.为高级集成服务实现创建一个模块
    实施高级集成服务窗口和新模块窗口的屏幕截图
  3. 向导中的下一个窗口显示新的TranslationService模块要引用的库。 AIS_Library包含高级集成服务用来与高级集成服务实现进行通信的接口和数据对象定义。 单击Finish创建模块,如图18所示:
    图18. Select Required Libraries窗口
    “选择所需的库”窗口的屏幕截图
  4. 模块已创建并显示在业务集成视图中 。 该向导显示模块名称,但需要导出名称。 输入TranslationServiceExport作为导出名称,然后单击Next ,如图19所示。
    图19.选择实施位置窗口:导出名称
    “选择实现位置”窗口的屏幕截图
  5. 现在,为“高级集成”服务选择实现类型。 示例实现使用微流。 要切换它,这次使用Java组件。 选择Java组件 ,然后单击Finish ,如图20所示。
    图20.选择一个Implementation Type窗口
    “选择实现类型”窗口的屏幕截图
  6. 现在,高级集成服务定义已使用高级集成服务实现详细信息进行了更新,并且您具有要使用的高级集成服务实现的框架。 Java组件上的编辑器已打开,可供您输入服务逻辑,如图21所示:
    图21.更新的高级集成服务的定义和实现
    高级集成服务的更新定义和实现的屏幕截图
  7. 通过使用以下代码替换invoke函数来完成骨架实现,该代码将西班牙语添加到示例中提供的BPEL实现中:
    public DataObject invoke(DataObject request) {
    		// Validate
    		boolean valid = request.getString("language").equals("French") || 
    				request.getString("language").equals("Spanish");
    		String error = null;
    		if( valid == false){
    		 error = "Language '" + request.getString("language") + 
    				 "' is not supported.";
    		} else {
    		  valid = request.getString("message").equals("Hello");
    		  if( valid == false) {
    		    error = "Phrase '" + request.getString("message") + 
    		    		"' cannot be translated.";
    		  }
    		}
    		// Respond.  We use the Request as the Response.
    		if (valid) {
    			if (request.getString("language").equals("French")) {
    				request.set("message", "Bonjour");
    			} else {
    				request.set("message", "Hola");
    			}
    			return request;
    		} else {
    			throw new ServiceBusinessException(new String(error), 
    					"fault");
    		}
    	}

发布高级集成服务定义并对其进行测试

现在,您将Advanced Integration Service定义更改发布到Process Center,在Process Center上安装Advanced Integration Service实施,然后测试其是否正常运行。 完成以下步骤:

  1. 要将Advanced Integration服务定义发布到Process Center,请在Business Integration视图中选择AIS Main ,右键单击,然后选择Publish to Process Center
  2. 要在Process Center上安装Advanced Integration Service实施,请首先创建档案。 选择TranslationService ,右键单击,然后选择导出 。 当Export窗口打开时,展开Java EE ,选择EAR file ,然后单击Next ,如图22所示
    图22.为Advanced Integration服务实现创建档案
    为高级集成服务实现创建档案的屏幕截图
  3. 现在指定存档的目的地。 输入目的地,或单击“ 浏览”并选择目的地。 单击完成以创建存档。
    图23. EAR Export窗口
    EAR导出窗口的屏幕截图
  4. 要在Process Center上安装并启动TranslationServiceApp.ear应用程序,请按照前面的“ 部署独立模块”部分中的说明进行操作。
  5. 要测试服务,请按照前面的“运行高级集成服务”样本部分中的说明进行操作。 不用输入法语作为语言,而是输入Spanish 。 此测试验证您正在调用正确的服务。 您应该看到如图24所示的输出。
    图24.新的Advanced Integration服务实现的测试结果
    新的高级集成服务实现的测试结果的屏幕截图

发布高级集成服务实现

最后一步是将Advanced Integration Service实施发布到源代码管理系统(SCM)。 因为此步骤高度依赖于SCM的类型以及打算如何构建服务,所以本节仅描述应添加的文件,并概述处理库项目的一些注意事项。

打开Project Explorer视图以查看工作区中的项目,如图25所示。发布TranslationServiceAIS_Library ,它们定义了Advanced Integration Service定义的接口。

图25.要发布到SCM的文件
要发布到SCM的文件的屏幕截图

注意 : TranslationServiceAppTranslationServiceWeb由Integration Designer生成,并且不需要发布,前提是您的构建使用serviceDeploy命令来创建Java Platform Enterprise Edition归档文件(该归档文件还会自动生成TranslationServiceAppTranslationServiceWeb项目)。

AIS_Library项目包含Web服务描述语言(WSDL)代码和XML架构定义语言文件,该Web服务描述语言(WSDL)代码表示高级集成服务定义的接口,该XML模式定义语言文件表示该接口中使用的业务对象定义。 该项目是高级集成服务定义和高级集成服务实现之间共享的唯一项目。 如果按照前面的步骤进行操作,则项目将存储在两个位置:Process Center和SCM。 然后,您面临的挑战是确保库的两个副本保持同步。

根据经验,将SCM中的Advanced Integration Service库的版本视为Process Center中该库的副本。 接口的任何更改都应在Process Center副本中进行,并传播到SCM副本。

存储高级集成服务库的另一种方法

当Advanced Integration Service界面发生更改时,您必须将更改的库传播到SCM。 这种传播可能很麻烦,因为需要将Process Center Advanced Integration服务库手动合并到Advanced Integration服务库的SCM副本中。

避免手动合并的一种方法是制作Advanced Integration Service库的物理副本,并在Advanced Integration Service实现中使用它。 要轻松确定SCM中存在哪个Advanced Integration Service定义版本,请使用简单的命名约定,以便将工具箱的快照版本附加到Advanced Integration Service库项目名称中。 例如,完成以下步骤。

  1. 在Process Center中,为Advanced Integration Service工具包拍摄快照并将其命名为3.0
  2. 在Integration Designer中,用新快照替换当前的Advanced Integration Service项目,然后将AIS_Library复制到AIS_Library_3.0。
  3. TranslateService项目中的库依赖项更改为AIS_Library_3.0 ,如图26所示。
    图26.创建一个高级集成服务库副本
    创建高级集成服务库副本的屏幕截图
  4. 将更新的TranslationService和新的AIS_Library_3.0发布到您的SCM。

现在,如果Advanced Integration Service定义发生更改,您可以轻松地从Process Center将Advanced Integration Service定义引入工作区,并从SCM中引入Advanced Integration Service实现,而不会发生冲突。 您可以重复步骤1-4(并可能使用新版本)来更新Advanced Integration Service实施。

结论

本教程介绍了如何实现和使用高级集成服务。 您浏览了一个示例,该示例说明了如何使用新选项来创建高级集成服务并将其部署到独立SCA模块。

您学习了一种使用Integration Designer开发和部署Advanced Integration服务的方法,该方法完全独立于使用它的工具包的开发。 现在,您可以将这种方法应用于自己的环境。

致谢

作者要感谢Dan Cho的评论和评论。


翻译自: https://www.ibm.com/developerworks/bpm/library/techarticles/1602_pacholski-trs/1602_pacholski.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值