伙伴链接
另请参见
在 BPEL 上下文中,伙伴链接描述了 BPEL 流程和外部 Web 服务之间的交互。伙伴链接活动用于定义每个伙伴在对话消息交换中所扮演的角色。依靠其对伙伴链接类型的引用,伙伴链接活动间接地指示每个伙伴实现的端口类型。
伙伴链接元素和伙伴链接类型定义
伙伴链接类型是对 WSDL 的 BPEL 扩展。因此,它在 WSDL 文件中进行定义,而不是在 BPEL 文件中定义。伙伴链接类型在一个或两个任意角色之间创建关联,并指示每个角色必须实现一个端口类型。通过将端口类型与角色进行关联,伙伴链接类型定义了伙伴之间的交互规则。
请不要混淆伙伴链接元素和伙伴链接类型定义之间的区别:
- 伙伴链接类型和角色是 BPEL 扩展,它们是在 WSDL 文件中定义的。
- 伙伴链接元素是 BPEL 2.0 元素。它们是在 BPEL 流程文件中定义的。伙伴链接元素会引用伙伴链接类型属性。
伙伴链接类型定义是伙伴链接元素的先决条件。只能通过引用特定的伙伴链接类型和角色(必须在 WSDL 文件中进行定义)来定义伙伴链接元素。
添加伙伴链接的方法
可以使用以下任一方法,在业务流程中添加伙伴链接:
- 将伙伴链接元素从组件面板拖到图中。
- 从“项目”窗口中将同一项目的 WSDL 文件拖到图中。
- 从“项目”窗口中将其他项目的 WSDL 文件拖到图中。IDE 会自动检索另一个项目中的 WSDL 文件,并将相关文件复制到项目结构内的伙伴目录中。
- 将 Web 服务节点从“项目”窗口的 EJB 项目或 Web 应用程序项目拖到图中。
- 拖动 Web 服务节点时,BPEL 设计器将从应用服务器中检索 WSDL 文件。要成功检索 WSDL 文件,应用服务器必须正在运行并且必须部署了 Web 服务项目。
使用伙伴链接元素
使用伙伴链接元素:
- 在“设计”视图中,使用上面列出的一种方法,将伙伴链接元素添加到图中。
将显示伙伴链接属性编辑器对话框。
- 在属性编辑器对话框中,请指定以下内容:
- 名称。接受缺省名称或输入任意名称。名称在流程中必须是唯一的。
- WSDL 文件。选择描述与伙伴链接关联的外部服务的 WSDL 文件。
如果通过将 WSDL 文件拖到图中来添加伙伴链接元素,则可能预先选择了 WSDL 文件。
- 请选择以下任一选项来指定伙伴链接类型:
- 使用现有的伙伴链接类型。如果要使用指定的 WSDL 文件中已存在的伙伴链接类型定义,请选择此选项,并按照下面的使用现有伙伴链接类型的步骤进行操作。
- 使用新建的伙伴链接类型。如果您要在指定的 WSDl 文件中新建一个伙伴链接类型定义,并且在此伙伴链接元素中进行使用,请选择此选项,并按照下面的使用新伙伴链接类型的步骤进行操作。
使用现有的合作伙伴链接类型:
- 选择“使用现有的合作伙伴链接类型”选项,然后从下拉列表中选择伙伴链接类型。并自动填充“我的角色”和/或“伙伴角色”字段。
- 单击“确定”。
IDE 将使用您提供的值来修改 BPEL 文件。
- 要交换业务流程角色(我的角色)和伙伴角色(伙伴角色),请单击“交换角色”按钮。
将伙伴链接类型添加到 WSDL 文件,并配置要使用该类型的伙伴链接元素:
- 选择“使用新建的合作伙伴链接类型”选项。
- 指定要添加伙伴链接类型的 WSDL 文件。可以执行以下任一操作:
- 按照 IDE 在缺省情况下的“在文件中创建”字段的建议,将伙伴链接类型添加到包装器 WSDL 文件中。如果您选择此选项,IDE 将自动在项目结构中创建包装器 WSDL 文件。原始的 WSDL 文件将导入到新建的包装器 WSDL 文件中。
- 当原始 WSDL 文件是只读文件,或者您不希望修改原始的 WSDL 文件时,可以使用包装器 WSDL 文件。
- 将伙伴链接类型添加到项目的 WSDL 文件中。单击“浏览”,并找到要添加伙伴链接类型的 WSDL 文件。
- 指定伙伴链接类型的名称。
- 按如下方式指定业务流程角色(我的角色)和/或伙伴角色(伙伴角色):
- 选中要定义的角色所对应的复选框。
- 在“角色名称”字段中指定角色名称。
- 从下拉列表中选择端口类型。
- 单击“确定”。
IDE 将在 WSDL 文件中添加新的伙伴链接类型定义,并使用您提供的值来修改 BPEL 文件。
- 请注意,至少要设置一个角色,否则无法正确配置伙伴链接。
动态寻址
有时,您需要与事先并不知道其端点的合作伙伴服务进行通信,或者需要在流程执行期间更改端点引用 (EPR)。通过使用动态伙伴链接功能,可以为伙伴链接动态分配端点引用。这意味着,您可以使用一个伙伴链接与多个 Web 服务进行通信,前提是这些服务具有相同的接口。
每个伙伴链接都定义了抽象信息和具体信息。描述 Web 服务接口的抽象信息应该是静态的;而具体访问信息(如地址和端口)则可以动态进行查找并使用。
注意:要成功部署流程,应完全定义伙伴链接。这意味着,在部署项目时,伙伴链接的 WSDL 文件应同时包含所定义的伙伴链接的抽象和具体信息(包括地址和端口),而后可以从 WSDL 文件中单独更改具体信息。
注意:BPEL 规范要求只能动态更改合作伙伴 EPR。按照 BPEL 的规定,只能将新值赋给伙伴链接元素的 partnerRole。在部署 BPEL 后,不能再更改 myRole 值。
要将新的 EPR 赋给伙伴链接,您可以使用标准赋值活动和 BPEL 映射器。
可以使用不同的方法提供 EPR 信息:
- 可以按字符串形式提供信息(在字符串中手动键入端点引用信息),并将其映射到伙伴链接
- 使用传入消息提取端点地址
- 使用服务参考类型的变量
如果使用传入消息,则应该在 WSDL 中将 EPR 架构定义为消息的一部分。要将 EPR 赋给伙伴链接,请使用消息变量。
通过变量将新的端点引用赋给伙伴链接:
- 在流程中创建新的赋值活动。
- 打开 BPEL 映射器。
- 在右侧的目标树中,查找要将新的具体部件传送到的伙伴链接。
- 在源树中,查找包含新端点地址的变量。
可以根据不同的架构来定义 Web 服务的地址,并且 JBI 容器需要使用一种名为 ServiceRefType 的特殊数据类型,这是一个简单包装器,可用于任何描述数据类型的端点。
包装数据:
- 在映射器工具栏中,选择 "BPEL" >“用服务参考包装”。
此函数是一个 doXslTranform 函数,它使用预定义的 XSL 样式表。
-
绘制从变量到该函数的传入连接。然后,绘制到伙伴链接的传出连接。
- 将新的具体部件赋给伙伴链接。
- 另请参见
- 接收
- 回复
- 调用
- 添加 WSDL 和 XML 架构导入
- 关于 WSDL 编辑器
- BPEL 设计器组件面板:Web 服务
- 关于 BPEL 设计器的“设计”视图
法律声明