DynamicPartnerLink 流程基本上由一个切换组成。它检查调用方传入的“provider”字符串。然后,它将 EndpointReference xml 数据结构指定给 partnerReference 变量,该变量包含与您请求的服务相关的信息。切换后,将 partnerReference 变量指定给 LoanService 合作伙伴链接,随后将调用该合作伙伴链接。
下面是在输入字符串(服务提供商)为“united”时如何完成该任务:
<assign>
<copy>
<from>
<EndpointReference xmlns="http://schemas.xmlsoap.org/ws/2003/03/addressing">
<Address>http://localhost:9700/orabpel/default/UnitedLoan</Address>
<ServiceName
xmlns:ns1="http://services.otn.com">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]\integration\jdev\jdev\mywork\Workspace1\MyDL)。(该方法不但可以节省您的时间,而且还免去了您创建自己的动态 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。
