Web services Oracle服务总线公开的SOAP服务中的多个操作

Web services Oracle服务总线公开的SOAP服务中的多个操作,web-services,soap,soa,jdeveloper,oracle-service-bus,Web Services,Soap,Soa,Jdeveloper,Oracle Service Bus,目前,我正在使用JDeveloper11开发一个带有OSB的ws。 我有一个简单的web服务,它调用外部SOAP服务 我的composite.xml文件: 我的BPEL Soap服务的操作 远程SOAP服务的操作 BPEL组件 我对当前的发展战略没有什么疑问我应该如何向我的BPEL SOAP添加新操作?我通过编辑ApusBPELProcess.xsd(添加了新的请求和响应类型)和ApusBPELProcess.wsdl(添加了新的操作、消息等)添加了一个新方法(getCompanyDetail

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

我的composite.xml文件:

  • 我的BPEL Soap服务的操作

  • 远程SOAP服务的操作

  • BPEL组件

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

    现在,通过使用BPEL构造中的“Invoke”组件,我只能调用远程SOAP服务的一个方法

    我的BPEL设计:

    如何从我的BPEL SOap(1)调用bind方法到远程服务(2)的方法?例如:当客户端从我的BPEL SOap(1)调用method
    process
    时,我想对输入参数进行一些验证,然后从远程SOap(2)调用
    GetServiceCompanys
    。所以当客户端从BPELSOAP调用另一个方法时(1),我想调用远程Soap上的其他方法(2)

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


    提前感谢。

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

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

    我找到了一个带有中介组件的解决方案。也许它会帮助别人

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

    我的最终composite.xml:

  • 我公开服务的方法
  • 调解人
  • 我所说的远程服务
  • 在中介组件内部,我执行路由和转换。对于公开服务(1)的每个方法,我在中介(2)中都有一个路由规则

    中介组件规则:

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

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

    My.xsl文件:

    .xsl文件的内容:

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

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


    希望有人会喜欢。祝你好运

    我找到了一个包含中介组件的解决方案。也许它会帮助别人

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

    我的最终composite.xml:

  • 我公开服务的方法
  • 调解人
  • 我所说的远程服务
  • 在中介组件内部,我执行路由和转换。对于公开服务(1)的每个方法,我在中介(2)中都有一个路由规则

    中介组件规则:

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

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

    My.xsl文件:

    .xsl文件的内容:

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

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


    希望有人会喜欢。祝你好运

    谢谢你的评论。是的,我同意这是一个选择。但我需要一个中介变量。谢谢你的评论。是的,我同意这是一个选择。但我需要一个中介变量。