目前我正在使用JDeveloper 11开发OSB的ws。 我有一个简单的Web服务,它调用外部SOAP服务。
我的composite.xml文件:
我的BPEL Soap服务的操作
远程SOAP服务的操作
BPEL组件
关于当前的发展战略我几乎没有问题。 如何向BPEL SOAP添加新操作?我通过编辑ApusBPELProcess.xsd(添加了新请求和响应类型)和ApusBPELProcess.wsdl(添加了新操作,添加了新方法)来添加新方法(getCompanyDetails())消息等)。 这是添加新操作的正确方法吗?
现在我只能使用BPEL构造中的“Invoke”组件来调用远程SOAP服务的一个方法。
我的BPEL设计:
如何从我的BPEL SOap(1)调用绑定方法到远程服务(2)的方法?例如:当客户端从我的BPEL肥皂调用方法process
时(1),我想对输入参数进行一些验证,然后从远程SOAP(2)调用getServiceCompanies
。因此,当客户端从BPEL Soap(1)调用另一个方法时,我想在远程SOAP上调用一些其他方法(2)。
如果有人可以向我展示包含所需组件的图表,将非常感激。因为我读到了“Mediator”组件,但我不知道如何在我目前的情况下使用它们。
提前致谢。
答案 0 :(得分:2)
一个选项是,您可以使用Pick活动,该活动可以为BPEL服务公开的每个操作提供多个onMessage分支。 同样,Invoke活动有一个选项可以选择您需要调用的远程SOAP服务的操作。 因此,您的复合看起来像选择BPELoperation1的OnMessage分支的Pick活动,然后是逻辑进行验证然后使用remoteoperation1 selcted调用。另一个选择了BPELoperation2的onMEssage分支,逻辑进行验证并选择remoteoperation2进行调用。
答案 1 :(得分:0)
我找到了Mediator组件的解决方案。也许它会帮助别人。
好的,我在我的公开服务和远程服务之间添加了一个Mediator组件。 Mediator组件将在这两个服务之间请求路由和数据转换。对于我公开的服务中的每个方法,我将一个BPEL流程添加到Mediator的另一个端点(我将在这些BPEL流程中执行一些特定于方法的验证/其他逻辑)。
我的最终composite.xml:
Inside Mediator组件我做路由和转换。对于我公开的服务的每个方法(1)我在Mediator(2)中有一个路由规则。
介体组件规则:
4a,4b - 我公开服务的方法 4c - 用于添加新路由规则的按钮 4d - 用于添加转换规则的按钮(通常,您将拥有一对方法的转换规则 - 请求/响应)
转换文件是.xsl文件,用于在两个端点之间进行信息转换。
我的.xsl文件:
.xsl文件的内容:
这里我正在迭代响应数据(for-each component)。
最后,在每个BPEL流程内部,我都有一个“Invoke”组件(5),它调用远程服务上的相应方法。
希望有人。祝你好运!