0

目前,我正在使用 JDeveloper 11 使用 OSB 开发 ws。我有一个简单的 Web 服务,它调用外部 SOAP 服务。

我的composite.xml 文件:

在此处输入图像描述

  1. 我的 BPEL Soap 服务的操作

  2. 远程 SOAP 服务的操作

  3. BPEL 组件

我对当前的发展战略没有几个问题。如何向我的 BPEL SOAP 添加新操作?我通过编辑 ApusBPELProcess.xsd(添加了新的请求和响应类型)和 ApusBPELProcess.wsdl(添加了新的操作、消息等)添加了一个新方法(getCompanyDetails())。这是添加新操作的正确方法吗?

现在,我可以通过使用 BPEL 构造中的“Invoke”组件来调用远程 SOAP 服务的一种方法。

我的 BPEL 设计:

在此处输入图像描述

如何调用将 BPEL SOap (1) 中的方法绑定到远程服务 (2) 中的方法?例如:当客户端process从我的 BPEL Soap (1) 调用方法时,我想对输入参数进行一些验证,然后getServiceCompanies从远程 SOAP (2) 调用。因此,当客户端从 BPEL Soap (1) 调用另一个方法时,我想在远程 SOAP (2) 上调用一些其他方法。

如果有人能给我看一张包含所需组件的图表,将非常感激。因为我读过“中介”组件,但我不知道如何在我目前的情况下使用它们。

提前致谢。

4

2 回答 2

2

一种选择是,您可以使用 Pick 活动,该活动可以为 BPEL 服务公开的每个操作具有多个 onMessage 分支。同样,Invoke 活动有一个选项来选择您需要调用的远程 SOAP 服务的操作。因此,您的组合看起来像 Pick 活动,其中 OnMessage 分支选择了 BPELoperation1,然后执行逻辑进行验证,然后选择了 remoteoperation1 进行调用。另一个 onMEssage 分支选择了 BPELoperation2,进行了验证并选择了 remoteoperation2 进行了调用。

于 2016-07-11T12:37:59.160 回答
0

我找到了带有 Mediator 组件的解决方案。也许它会帮助某人。

好的,我在公开的服务和远程服务之间添加了一个调解器组件。Mediator 组件将在这两个服务之间进行请求路由和数据转换。对于我公开的服务中的每个方法,我都向 Mediator 的另一个端点添加了一个 BPEL 流程(我将在这些 BPEL 流程中执行一些特定于方法的验证/其他逻辑)。

我最终的composite.xml:

  1. 我的暴露服务的方法
  2. 调解员
  3. 我所说的远程服务

在此处输入图像描述

在 Mediator 组件内部,我进行路由和转换。对于我公开的服务 (1) 的每种方法,我在 Mediator (2) 中有一个路由规则。

中介组件规则:

4a, 4b - 我的公开服务的方法 4c - 添加新路由规则的按钮 4d - 添加转换规则的按钮(通常你会有一对方法的转换规则 - 请求/响应)

在此处输入图像描述

转换文件是在两个端点之间进行信息转换的 .xsl 文件。

我的 .xsl 文件:

在此处输入图像描述

.xsl 文件的内容:

在这里,我正在通过响应数据(每个组件)进行迭代。

在此处输入图像描述

最后,在每个 BPEL 流程内部,我都有一个“调用”组件 (5),它调用远程服务上的适当方法。

在此处输入图像描述

希望有人会。祝你好运!

于 2016-07-19T06:55:03.870 回答