DynamicPartnerLink 流程基本上由一个切换组成。它检查调用方传入的“provider”字符串。然后,它将 EndpointReference xml 数据结构指定给 partnerReference 变量,该变量包含与您请求的服务相关的信息。切换后,将 partnerReference 变量指定给 LoanService 合作伙伴链接,随后将调用该合作伙伴链接。
下面是在输入字符串(服务提供商)为“united”时如何完成该任务:
<assign>
<copy>
<from>
<EndpointReference >
<Address>http://localhost:9700/orabpel/default/UnitedLoan</Address>
<ServiceName
>ns1:UnitedLoan</ServiceName>
</EndpointReference>
</from>
<to variable=”partnerReference”/>
</copy>
</assign>
<from> 与 </from> 标记之间的所有内容均为指定给 partnerReference 变量的文字 XML。将 partnerReference 变量指定给 LoanService 合作伙伴链接时,该数据将覆盖此合作伙伴链接中指定的地址和服务。
您已经了解了如何使用 LoanService 合作伙伴链接和和 LoanService.wsdl 调用在运行时选择的服务,下面就可以开始构建一个动态流程了。
创建一个动态 BPEL 流程
现在,我们从头创建一个动态 BPEL 流程。
1. 创建一个新的 BPEL 项目。
在 JDeveloper 中创建一个新的异步 BPEL 流程项目,并将它命名为“MyDL”。
2. 从 DynamicPartnerLink 示例中导入 LoanService.wsdl 文件。
将 LoanService.wsdl 文件从 DynamicPartnerLink 示例复制到 MyDL 项目的工作目录中(默认情况下为 [BPEL_HOME]integrationjdevjdevmyworkWorkspace1MyDL)。(该方法不但可以节省您的时间,而且还免去了您创建自己的动态 WSDL 和子流程服务的麻烦。)然后,在 Applications Navigator 中右键单击 MyDL 项目,选择 Add to Project…。从该目录中选择 LoanService.wsdl 文件,然后单击 OK。
尚未将 LoanService.wsdl 文件添加到 bpel.xml 文件中。您将在该流程的后面部分中(即实现 EndpointReference 变量时)执行该操作。
3. 创建贷款服务合作伙伴链接模板。
右键单击某个泳道,选择 Create Partner Link…。按图 2 所示填写该对话框。要填写 WSDL File 位置,您将使用 Browse WSDL Files from Local File System 按钮(位于手电筒图标的左侧)从 MyDL 项目目录中选择 LoanService.wsdl 文件。单击 OK 创建合作伙伴链接。
图 2“Create Partner Link”对话框
4. 创建调用和接收动作来外调 DynamicLoanService 合作伙伴链接。
将 invoke 和 receive 动作分别从组件模板拖到流程(位于 receiveInput 和 callbackClient 动作之间)中。将一个箭头从 invoke 拖到 DynamicLoanService 合作伙伴链接并创建输入变量。对 receive 执行相同的操作。这些变量应分别命名为 loanInput 和 loanOutput。
5. 配置输入数据 loanInput。
通常,您将修改 MyDL.wsdl 文件来从用户那里获得贷款输入数据。此处为简单起见,您只需硬编码一个 assign 来填充 loanInput 变量。将 assign 置于 receiveInput 动作之后并创建一个将值“123456789”(这是一个字符串,而非数字,因此不要忘了为它加上引号)放入 loanInput 的 SSN 元素中的复制规则:
<assign name=”PopulateSSN”>
<copy>
<from expression=”‘123456789′”/>
<to variable=”loanInput” part=”payload” query=”/ns2:loanApplication/ns2:SSN”/>
</copy>
</assign>
6. 创建 partnerReference 变量。
在 Structure 窗口中,展开 Variables 树,然后展开 Process 并选择 Variables 项(参见图 3)。
图 3 展开“Variables”树
右键单击 Variables 并选择 Create Variable…。将变量名设为“partnerReference”,并将类型设为“Element”。单击元素框旁边的手电筒图标显示类型选择器。在 Project WSDL Files → LoanService.wsdl → Inline Schemas → schema 下找到类型“EndpointReference”(参见图 4)。
图 4 选择“EndpointReference”
7. 设置 partnerReference 变量。
在 DynamicLoanService invoke 前面创建另一个 assign。使用此 assign 设置 partnerReference 变量。最初,您将它硬编码为 UnitedLoan 服务,但您将在下个部分中把它变为动态。
此处,您可以通过重新格式化 EndpointReference xml 数据避免在 DynamicPartnerLink 示例中遇到的问题。创建一个用这个空 EndpointReference 填充 partnerReference 变量的复制规则:
<EndpointReference
>
<Address/>
<ServiceName/>
</EndpointReference>
在复制规则的“from”块中,在输入以上信息之前确保选择类型“XML Fragment”。由于在把 partnerReference 变量复制到 DynamicLoanService 合作伙伴链接时将其视为单独的 XML 文档,因此执行此复制才能为 partnerReference 建立命名空间信息。否则,在试图将 partnerReference 变量指定给合作伙伴链接时将发生一个空指针异常。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
SAP收购CallidusCloud 与Salesforce竞争
一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]
-
API设计如龙生九子 各不相同
IT咨询管理公司CA Technologies对API产业做了个问卷调查,问卷内容涉及API设计风格以及管理部署的新动向。调查结果表明,JSON与XML可谓两分天下。
-
从头开始实现领域驱动设计
领域描述业务;它是驱动企业的概念和逻辑的集合。如果遵循领域驱动设计(DDD)这一本质,那么领域就是应用程序中最重要的组成部分。
-
走出思维定式 数据库/大型机现代化不再是问题
升级和改变组织的主要利益驱动应用的前景,正处于一个压倒性的位置,所以组织将要面临一系列的改变。