综合交易平台api说明
本系列描述了InfoSphere MDM和IBM BPM如何结合在一起,以将高价值的可信数据作为业务流程的一部分带入业务领域。 随着两个产品都随着新版本的发展,现在可以使用新的设计和工具包功能。 具体而言,该系列参考了IBM BPM V8.5.5和InfoSphere MDM Application Toolkit,它们都包含在InfoSphere MDM V11.4中。
第4部分展示了如何实现InfoSphere MDM复合事务。 组合事务支持InfoSphere MDM与您的外部系统之间的各种复杂集成需求。 在MDM Application Toolkit中了解如何使用XML和业务代理的组合,以便使业务用户能够访问他们所需的数据。
在解决如何在IBM BPM中启动InfoSphere MDM添加和扩展事务之前,请使用第1部分中介绍的MDM Application Toolkit中采用的方法刷新内存。 为了最大程度地减少对工具包的更改并提供一定的灵活性,该设计方法旨在在MDM Application Toolkit中添加关键集成服务,以使它们不会从一个交付项目更改为另一个交付项目。 本第4部分教程将检查在Physical MDM Business Objects Toolkit(MDM Application Toolkit软件包中的配套工具包)中实现的特定于项目的要求和特定于项目的业务对象。 如果您需要容纳支持特定项目的业务领域要求的业务对象,则可以为每个新的交付项目更新Physical MDM Business Objects Toolkit。
此模式功能强大,可以将静态接口定义与特定于项目的业务对象类型的定义分离。 结果,由于它仅更新Physical MDM Business Objects Toolkit,引入了新的业务对象类型,因此它提供了更容易的开发和支持模型。
MDM Application Toolkit附带了许多用于启动特定于InfoSphere MDM的事务的方法。 本教程将进一步介绍的事务讨论了Physical MDM Composite Txn
方法,如图1所示:
图1. MDM Application Toolkit中的Physical MDM Composite Txn
服务
使用XML创建复合事务
在InfoSphere MDM中,使用服务组合来分组和运行一组相关的业务交易是常见的情况。
InfoSphere MDM包含一个支持复合XML请求的复合事务框架。 有两种创建复合事务的方法:定制的业务代理方法(在本教程的后面讨论)和复合XML事务方法(在本节中介绍)。
组合XML事务为InfoSphere MDM服务的使用者提供了一种简便的方法来在InfoSphere MDM请求者侧归档服务组合,而无需进行任何编程工作。
组合XML事务是单个事务的分组,这些事务作为一个工作单元一起处理。 如果组合中的所有事务都成功运行,则将提交所有事务。 如果组合中的一个事务失败,则将回滚所有已执行的事务。 在最基本的形式中,复合事务包含一系列单个事务。 事务接连运行。
您还可以使用复合事务来实现条件逻辑。 复合事务框架提供两种条件逻辑的实现:
if-then-else :允许您基于组合中先前事务的响应来选择要运行组合中的哪些事务。 例如, searchPersonAddOrUpdate
复合事务可能包含三个单个事务: searchPerson
, addPerson
和updatePerson
。 如果searchPerson
事务未返回任何一方,则运行addPerson
事务。 但是,如果addPerson
事务返回匹配项,则运行updatePerso
事务。 请参阅IBM知识中心上的产品文档中的使用if-then-else逻辑创建复合事务 。
循环 :允许您遍历响应中的对象集合,并对每个对象执行另一个事务。 例如, searchPersonUpdateEachPerson
复合事务可能包含两个单个事务: searchPerson
和updatePerson
。 在searchPerson
事务返回匹配的searchPerson
的集合之后, searchPerson
找到的每个searchPerson
运行updatePerson
事务。 请参阅产品文档中的使用循环逻辑创建复合事务 。
何时使用复合XML事务
考虑一个复合XML事务,以将要在一个工作单元中运行的相关业务事务分组。 如果计划使用事务实现简单的if-then-else
或looping
逻辑,则复合XML事务也是一个不错的选择。 Composite Transaction Framework提供XML格式的语法,可用于轻松创建复合事务以满足这些要求。
但是,由于组合中的单个事务是在一个工作单元中运行的,因此请勿在一个组合事务中对太多的单个事务进行分组。 组合中的单个事务越多,完成工作单元所花费的时间就越长。 因此,您可能会遇到事务超时问题。 为了获得最佳结果,在一个复合事务中使用不超过四个单个事务。
构建复合XML事务
本节演示如何使用MDM Application Toolkit连接器创建复合XML事务请求。 组合XML事务是在客户机系统(例如,IBM BPM)上定义的事务,并且针对InfoSphere MDM服务器运行。
您可以使用MDM Application Toolkit中提供的服务相当简单地创建复合XML事务。 使用MDM Application Toolkit中的Physical MDM Composite Txn
服务来构建复合服务。
使用您在本系列第3部分中学到的方法来构建Data Access Service层。 使用常规或集成服务围绕Physical MDM Composite Txn
服务构建包装器。
在图2的示例中,在初始化所有必需的已定义单个服务和输入变量之后, Add Person Composite服务将启动Physical
MDM Composite Txn服务。
图2.用于复合XML实现的示例包装器服务
仔细研究为Add Person Composite服务构建包装器。
如果需要多个对象作为支持复合事务的单独输入,则它们都需要作为服务的输入。 例如,图3中的Add Person XML Composite将一个person对象与分配对象一起使用,该分配对象使用添加的person的ID。
图3.输入/输出映射示例

您还必须添加任何用作复合材料输出的对象。
添加输入和输出变量后,开始映射。 请注意,因为作为服务组合一部分的额外事务会在MDM_Comp_Txn类型的主要对象的actions属性中添加到InfoSphere MDM Composite事务中。
使用动作属性是定义单个事务和定义条件逻辑的常用方法,本教程稍后将介绍。 有关示例,请参见图4的第13和24行。
图4. Actions属性示例
使用选择器
在选择器中为复合XML事务服务定义了更多的单独事务。 注意在第16行的UWId
属性中使用了选择器。 现在, UWId
属性包含在初始事务中创建的参与方ID。 因为它尚不存在,所以使用了选择器。
另外,请注意选择器开头对id.1
的引用。 id
声明此特定事务的任意值,例如索引。 定义并参与复合XML服务的每个其他单个事务也都有其自己的索引,该索引由不同的id
值表示。
最后,第24行显示了在完全声明和定义第一个单个事务之后,将其添加到addPersonComposite复合对象的位置。
映射输出变量
完成输入变量的初始化之后,可以按照与内置MDM Application Toolkit事务相同的方式完成对输出变量的映射。 InfoSphere MDM服务的响应对象包含遵循输入事务的索引顺序的事务列表。 在图5中, 人员对象是数组的第一个元素,而赋值对象是第二个元素。
图5.人员和分配对象的输出变量示例
应用条件逻辑
您可以使用MDM Application Toolkit中的通用对象为复合事务定义更多的条件逻辑。 这些附加结构遵循相同的模式:定义了第一个事务,而图6中的事务被定义为动作。
MDM Application Toolkit带有几个复合事务业务对象,它们是Physical MDM Business Objects Toolkit的一部分,如图6所示。您可以将它们用于复合XML事务内的条件逻辑实现。
图6.物理MDM复合交易业务对象
如图6中突出显示的那样,MDM Application Toolkit附带了一些单独的业务对象。 例如, MDM_Choose业务对象是if-else
条件逻辑的容器。 图7显示了MDM_Choose业务对象结构。
图7.示例MDM_Choose业务对象

再次,对每个属性遵循相同的模式。 例如,当您指定条件和动作时,请使用测试和动作属性。 同样,在选择else属性之后,可以使用actions属性定义相应的方法。
使用业务代理创建组合
如前所述,复合事务使您可以将相关的业务事务分组以作为单个工作单元运行。 虽然在InfoSphere MDM请求者端(例如,IBM BPM)声明了复合XML事务,但是复合事务使用业务代理方法并采用了在InfoSphere MDM服务器端的InfoSphere MDM Developer Workbench环境中以Java™开发的业务逻辑。 。
将新事务与现有InfoSphere MDM事务组合在一起是InfoSphere MDM Request and Response Framework中的强大机制。 因为业务代理是Java类,所以无论多么复杂,它们都可以管理任何自定义逻辑。 另外,由于他们使用现有的IBM InfoSphere MDM事务,因此不需要重复该逻辑。 而是,将业务代理设计为仅包含复合业务逻辑。
利用自定义业务代理的灵活性和强大功能,您可能会冒编写可能影响系统性能和可伸缩性的非最佳代码的风险。 所有开发人员在设计和实现业务代理时都必须牢记性能影响。
创建复合业务代理服务
查看使用MDM Application Toolkit的复合业务代理示例。 图8显示了添加Underwriter Business Proxy服务的示例图,该服务使用了来自MDM Application Toolkit的相同Physical MDM Composite Txn服务:
图8.添加Underwriter Business Proxy服务的示例
与对复合XML所做的一样,导入带有所需对象时间定义的Web服务定义语言(WSDL)文件。 在InfoSphere MDM Workbench中生成WSDL时,仅包括支持特定组合业务代理的业务对象类型。 您可以使用MDM Application Toolkit附带的Generate Physical MDM Objects服务。
映射输入变量
生成所有必需的业务对象类型之后,可以设置相应的输入和输出变量。 图9显示了典型的变量绑定,类似于您为XML组合创建的绑定。
图9.输入变量的示例数据绑定
图10显示了tw.local.mdmCompTxn
变量,已初始化为支持此复合业务代理。
图10. tw.local.mdmCompTxn变量示例
正如可以看到的, tw.local.mdmCompTxn
变量是一个直接的声明underwriter
变量,在第1行开始,并且mdmCompTrn
对象,在第9行开始,分配underwriter
对象到trn.object
的属性mdmCompTrn
线11注对象的类型mdmCompTrn
变量与MDM_Comp_Txn
您用于XML复合材料。
本质上,您初始化并限制了underwriter
业务对象,并在第12行AddSICMDMUnderWriter
复合事务的名称指定为AddSICMDMUnderWriter
。其余的魔术(例如, AddSICMDMUnderWriter
服务的实际实现)从IBM BPM端隐藏并封装了按照组合业务代理的设计,在InfoSphere MDM服务器端进行操作。
映射输出变量
最后,考虑映射tw.local.mdmResponse
服务输出变量。 在Map Output
服务器脚本中,您将看到以下代码,如图11所示:
图11. Map Output服务器脚本
将第1行和第6行上的两个分别初始化的对象tw.local.assignment
和tw.local.person
到从mdmResponse
输出对象的第一项中提取的相应XSGUMAssignmentBObj
和TCRMPersonBObj
对象。
mdmResponse
输出对象是用list
类型定义的,但是两个返回的业务对象都映射到列表中第一项的reposponseObject
属性。 后者的业务对象定义为any
,因此您可以使用一种映射类型来支持复合服务返回的许多类型。 要找出这些类型的实际结构,请在用于生成输入类型的WSDL文件中查找返回类型的XML表示形式。
结论
您学习了如何使用作为IBM InfoSphere MDM产品一部分的MDM Application Toolkit在IBM BPM中实现InfoSphere MDM复合服务。
考虑组合XML事务和用于实现组合事务的组合业务代理服务方法之间的概念差异。 组合XML事务将具有单个事务声明的组合声明的工作转移到了客户端(IBM BPM)一侧。 复合业务代理方法在InfoSphere MDM服务器端的Java业务逻辑实现上投入了更多的精力。 与复合XML事务实现相比,复合业务代理在IBM BPM方面的工作要轻得多。
除了本系列中介绍的使用InfoSphere MDM的特定细微差别外,其余的集成工作应遵循IBM BPM领先实践,以在IBM BPM Standard Edition中创建集成服务。 例如,将数据访问服务(DAS)模式与构建包装器服务一起使用,以在DAS服务内封装InfoSphere MDM的连接和映射细节。 这种方法保持了数据和业务逻辑层之间关注点的分离和分离。
现在,您已经完成了本系列中的所有教程,您已经可以理解并有效地使用InfoSphere MDM Application Toolkit服务来支持IBM BPM和InfoSphere MDM之间的集成。 您知道如何安装MDM Application Toolkit,创建基本服务,创建附加项,创建扩展以及创建组合服务。 所有这些工具都可以支持您组织对IBM BPM的集成要求。
致谢
作者要感谢Jay Limburn为该系列文章提供了重要的反馈,并为该工具包提供了支持。
综合交易平台api说明