【问题标题】:Oracle Service Bus multiple operations inside exposed SOAP serviceOracle Service Bus 公开的 SOAP 服务内的多个操作
【发布时间】:2016-07-11 11:29:57
【问题描述】:

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

我的复合.xml 文件:

  1. 我的 BPEL Soap 服务的操作

  2. 远程 SOAP 服务的操作

  3. BPEL 组件

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

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

我的 BPEL 设计:

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

如果有人能向我展示一张包含所需组件的图表,我将不胜感激。因为我读过“Mediator”组件,但我不知道在我目前的情况下如何使用它们。

提前致谢。

【问题讨论】:

    标签: web-services soap soa jdeveloper oracle-service-bus


    【解决方案1】:

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

    【讨论】:

    • 感谢您的评论。是的,我同意这是一个选项。但我需要一个中介变体。
    【解决方案2】:

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

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

    我最终的composite.xml:

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

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

    中介组件规则:

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

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

    我的 .xsl 文件:

    .xsl 文件的内容:

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

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

    希望有人。祝你好运!

    【讨论】:

      猜你喜欢
      • 2011-08-04
      • 1970-01-01
      • 2016-06-17
      • 2011-06-18
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多