restful集成规范
为了构建一个简单而有效的Web客户端,许多公司都采用了代表性状态转移(REST)架构来替代基于WSDL的Web服务。 结果,通过其REST API集成外部系统的需求增加了。
在IBM Process Designer中,可以使用内置的Web服务集成来发现基于WSDL的Web服务并轻松地对其进行集成。 但是,RESTful Web服务(REST服务)没有WSDL,因此不能使用Web服务集成来使用REST服务。 有很多建议的方法可以使用Dojo Toolkit在Process Designer中集成REST服务,这需要一定程度的知识来编写脚本。
IBM Business Process Manager(BPM)标准旨在为典型的业务流程管理项目提供快速的价值实现时间,而IBM BPM Advanced提供了一套完整的业务流程管理功能,包括广泛的企业范围服务集成。 因此,您的整体面向服务的体系结构(SOA)解决方案应在高级层中实现系统集成逻辑,而您的业务应用程序a应专注于交付业务价值。
本文的目的是通过使用服务组件体系结构(SCA)HTTP绑定将系统集成层与业务层分开,以介绍IBM Business Process Manager V8.0.1 Advanced中的RESTful Web服务集成。
为了改善当前流程,一家企业决定构建一个SOA解决方案,该解决方案使用BPM V8.0.1 Advanced集成其所有现有系统。 一些约束是:
SOA参考体系结构(SOA RA)(图1)讨论了为企业设计SOA解决方案时需要考虑的九个关键类和职责。
SOA原则是将业务层与技术服务层分离。 在使用IBM Business Process Manager Advanced将业务流程和企业服务链接在一起的文章中,作者讨论了BPM Advanced中业务和技术服务的分离。
基于SOA原理,本文中的解决方案将业务流程作为IBM Process Designer中的业务流程定义(BPD)实施。 REST服务集成服务作为SCA应用程序作为高级集成服务(AIS)公开给BPD。
IBM Integration Designer提供了开发环境,以实现提供REST集成的SCA应用程序。 因为SCA是中间件层,所以它提供了处理高度复杂的XML模式的能力,如果不进行自定义转换,它可能会在Process Designer中引发错误。 在调用REST API之前,可以将BPD使用的业务对象映射到SCA中的标准架构格式。
可以使用IBM Integration Designer的内置功能来实现该解决方案,从而消除了对定制编码的需求。
端到端解决方案的开发涉及以下步骤:
系统集成实现应可在多个流程应用程序中使用,以实现可重用性。 因此,应该在工具箱中定义AIS。
REST_AIS_TK
自动创建两个新项目,如图6所示: REST_AIS_TK_Implementation
和REST_AIS_TK_Library
。 如果现有的工具包定义了要在多个流程应用程序中使用的通用业务对象,则可以将依赖项添加到工具包中,以便可以在实现中使用它们。
您必须先在流程设计器中添加依赖项,然后返回到集成设计器以在工作区中打开工具箱。 在另一个工具箱中定义的业务对象是不可修改的,但是您可以在实现中使用它们。
在
中定义的业务对象在Process Designer中可见(在本示例中为REST_AIS_TK_Library
)。 如果行业标准架构或公司架构包含Process Designer不支持的XML构造,则必须定义一个单独的库,该库对于Process Designer是不可见的。
注意 :如果没有要使用的预定义架构,请忽略以下步骤1到13,然后跳到“ 定义接口”部分。
Schema_Library
。 REST_AIS_TK
)。 注意 :通过不镜像该库,可以对Process Designer隐藏任何复杂性。 有关更多详细信息,请参阅文章“ 一起使用IBM Integration Designer和IBM Process Designer时的最佳实践 ”中的“最佳实践:保护工具包中的镜像工件”。
REST_AIS_TK_Implementation
模块使用从架构生成的业务对象。 该设计使用SCA HTTP导入来调用目标REST服务。 第一步是为SCA导入和SCA导出组件定义接口。 与基于WSDL的Web服务不同,REST服务没有接口。 您将在本节中定义的接口用于SCA组件。
SCA导出成为Process Designer中的AIS服务。 为了设置BPD和AIS之间的服务合同,导出组件必须具有一个接口,以定义BPD要使用的输入和输出消息。
同样,具有HTTP绑定的SCA导入是一个SCA工件,它必须具有接口,尽管目标REST服务未定义与其关联的WSDL。 此接口用作SCA组件之间的协定。 因此,您应该设置有意义的接口名称及其操作。 请注意,输入和输出消息类型必须与目标REST服务期望的类型完全匹配。 如果您已有定义输入和输出类型的XML模式,则操作的输入和输出类型必须是在Schema_Library步骤中导入的模式类型。
注意 :此示例使用从导入现有XML架构派生的业务对象: getCompanyInfoReq
和getCompanyInfoResponse
。
调用REST服务时,必须完全按照目标服务的预期来构造请求。 因此,您不想使用文档文字包装选项,该选项将元素包装为相应的操作名称。 而是使用文档文字非包装绑定,以使生成的XML不会包含多余的标记,这会导致运行时错误。
如果有一个工具包包含要在流程应用程序和工具包中使用的通用业务对象,则可以将该工具包作为依赖项添加到AIS工具包中。 这使您可以使用在流程设计器中定义的业务对象。
例如,标准架构可能具有如图17所示的复杂结构。
您可能希望使用可被Process Designer中的BPD使用的简单类型来简化业务对象,以便Coach可以轻松显示数据。 例如,无法在Process Designer中正确解析具有xs:enumeration
和xs:choice
的XML模式。 相反,您可能想在Coach中添加输入检查,并使业务对象保持简单,如图18所示。
注意 :如果您已通过依赖关系将公共业务对象添加到项目中,如图7所示,则可以单击“ 浏览”选择一个现有业务对象,而不是创建一个新的业务对象。
REST_AIS_TK_Implementation
下定义的接口在Process Designer中不可见; 因此,您可以使用不受支持的数据类型和架构。 但是,在REST_AIS_TK_Library
下定义的接口和业务对象在Process Designer中可见。 因此,您应该设计接口和业务对象,以使业务流程开发人员可以清楚地使用它们。
在上一节中,您定义了一个界面来解释您的AIS服务。 在本部分中,您将使用接口创建具有SCA绑定的Export组件,该组件将成为Process Designer中的AIS服务。
注意 :当您发布完成的SCA实现时,此SCA导出组件将在Process Designer中作为AIS服务公开,如图21所示。
为了调用外部REST服务,您需要使用HTTP绑定实现SCA导入。
GET
,请从其下拉列表中选择适当的动词。 POST
在方法绑定选项卡,但该方法被设置为GET
在Binding选项卡,这将在运行时使用HTTP方法是POST
上重写所述的具体方法设置的属性值。绑定级别属性值。) 如果目标REST服务在受保护的服务器上运行,则需要在流程服务器上配置SSL安全证书。
NodeDefaultSSLSettings
。 在群集环境中,您还应该具有CellDefaultSSLSettings
。 对于独立服务器,请选择NodeDefaultSSLSettings ; 否则,请选择CellDefaultSSLSettings以在单元级别配置SSL证书。 注意 :对于独立服务器,它应该是NodeDefaultTrustStore
;对于集群环境,它应该是CellDefaultTrustStore
。
在这种情况下,目标REST服务使用Process Designer不支持的数据类型。 因此,您需要转换传入的数据并将其映射到模式生成的业务对象。 MFC提供了一个内置的映射组件,可以轻松完成任务。
REST_Mediation
并单击“ 是”以实施。 application/xml
。 为了使您的SCA服务可以在Process Designer中作为AIS使用,以便BPD可以使用它,首选的交互样式必须为Synchronous (不是Any或Asynchronous ),以便控件可以返回给调用BPD。 否则, 可以与服务一起使用吗? 在Process Designer中,AIS组件的状态显示为“ 否”,而不是“ 是” 。
在将SCA实施发布到Process Center之前,请确保在本地服务器上对服务进行单元测试。
ComponentInfoAISExport1
并选择Test Component 。 如果测试成功完成,则准备将流程应用程序连接到Process Designer中的高级集成。 否则,进行必要的修复,然后右键单击“ 调用”,然后选择“ 重新运行”以再次进行测试。
一旦对SCA实施进行了彻底的测试,请确保该工具箱的状态未[changed]
。 如果是这样,请右键单击并从菜单中选择“ 刷新并发布” ,以将代码同步到Process Center。
在REST_AIS_TK_Implementation
模块中定义的SCA导出在Process Designer中成为AIS。 AIS的输入和输出与您在“导出”组件的界面中定义的类型一致。
如果遇到问题,请单击“ 调试服务”以调试模式运行测试工具。 您可以单步执行服务以查找故障点。
在调用AIS之前,您应该看到SCAConnector
项类型,如图46所示。
在下一步中,如果看到的是默认的Coach而不是所构建的Coach,则可能是SCA应用程序未正确部署。
为了将集成层与业务逻辑分开,AIS在工具箱中实现,以便多个流程应用程序可以利用其服务。 本节演示如何从流程应用程序调用工具箱中定义的AIS。
提示 :Integration Designer使用三位数的版本系统 (
REST_AIS_TK
。 注意:这是BPD的最简单示例。 在通常的实践中,您可以创建包装器集成服务 ,该服务调用AIS服务,然后将包装器服务添加到BPD。 如果要创建测试工具或包装器服务(类似于在REST_AIS_TK
创建的测试工具),则可以将测试工具从工具箱复制到流程应用程序。
有关如何使用Inspector运行和调试流程实例的更多信息,请参阅信息中心 。
Process Inspector无法单步执行实现AIS的SCA应用程序。 为此,在Integration Designer中,右键单击工具箱,然后选择Test => Attach to Toolkit 。
单击继续图标以打开一个对话框,提示您将测试客户端连接到哪个服务器。
在这种情况下,请选择Process Center而不是本地Process Server,因为Process Application在Process Center的回放服务器上运行。
一旦数据传递到SCA实现,您就可以在测试客户端中跟踪事件。
与AIS实现相关联的SCA应用程序被部署为WebSphere企业应用程序,您可以直接从WebSphere Integrated Solutions Console或管理控制台进行管理。
当您在Process Designer中单击“运行服务”或“运行流程”时,必要的SCA工件会自动安装到Process Center上的播放服务器上。 在管理控制台中,选择应用程序=> SCA模块。 SCA模块名称是
与在Integration Designer中一样。
当前工作流程应用程序或工具箱的应用程序名称为>-Tip-
。 如果部署快照的特定版本,则“ Tip
将替换为快照版本。
图57显示了REST_AIS_TK_Implementation模块的三个实例:
REST-Tip_REST_AIS_TK_ImplementationApp
。 TEST-Tip_REST_AIS_TK_ImplementationApp
。 TEST-1.0.0_REST_AIS_TK_ImplementationApp
。 本文为您提供了将REST服务集成到IBM Business Process Manager V8.0.1 Advanced中的分步示例。 由于REST服务没有WSDL,因此如果没有自定义编码,则不能使用Process Designer中的内置Web服务集成来使用REST服务。 此外,使用高度复杂的XML模式可能会导致在没有服务器脚本的情况下解析错误。 SOA原则是将业务层与技术服务层分离。 因此,应将业务流程与低层服务分开,以集成外部REST服务,并通过AIS使用服务。 这将业务逻辑与中间件功能分开,并使解决方案更加健壮和可重用。
翻译自: https://www.ibm.com/developerworks/bpm/library/techarticles/1312_hyakuna/1312_hyakuna.html
restful集成规范