公开的 SOAP 服务中的 Oracle Service Bus 多项操作

Oracle Service Bus multiple operations inside exposed SOAP service

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

我的 composite.xml 文件:

  1. 我的 BPEL Soap 服务的操作

  2. 远程 SOAP 服务的操作

  3. BPEL 组件

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

现在我只能使用来自 BPEL 构造的 "Invoke" 组件调用远程 SOAP 服务的一个方法。

我的 BPEL 设计:

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

如果有人能给我一张包含所需组件的图表,我将不胜感激。因为我阅读了 "Mediator" 个组件,但我不知道如何在我目前的情况下使用它们。

提前致谢。

一个选项是,您可以使用 Pick activity,它可以为 BPEL 服务公开的每个操作提供多个 onMessage 分支。 同样,Invoke activity 有一个选项可以 select 您需要调用的远程 SOAP 服务的操作。 因此,您的组合看起来像 Pick activity 和一个带有 BPELoperation1 selected 的 OnMessage 分支,然后逻辑进行验证,然后使用 remoteoperation1 selcted.And 调用另一个带有 BPELoperation2 select 的 onMessage 分支ed,使用 remoteoperation2 进行验证和调用的逻辑 selected.

我找到了一个使用 Mediator 组件的解决方案。也许它会对某人有所帮助。

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

我的决赛composite.xml:

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

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

中介组件规则:

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

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

我的 .xsl 文件:

.xsl 文件的内容:

我在这里对响应数据进行迭代(针对每个组件)。

最后,在每个 BPEL 流程中,我有一个 "Invoke" 组件 (5),它调用远程服务上的适当方法。

希望有人会。祝你好运!