0

有了 WSO2 BPS 3.6.0,我们就有了几个长时间运行的异步进程。我想在多个其他进程中重用一个进程(例如错误处理、通用过程......)。

问题是,在这种情况下,多个进程将公开相同的回调服务:

ERROR {org.wso2.carbon.bpel.core.ode.integration.store.TenantProcessStoreImpl} -  Service: {http://xxx/bps/xxx}XXCallback already used by another process. Try again with a different service name

如何收听来自多个进程的回调响应?(假设我可以提供相关性以便调用正确的实例)

我正在考虑为每个父进程(甚至暴露相同的端口)提供一点不同的服务名称(url 片段?),并使用 ReplyTo 标头强制正确的回调 url。我仍然不确定这是否是正确的方法。

4

1 回答 1

0

Process1 和 Process2 异步调用 CommonProcess。

Process1 & Process2 应该实现 Callback.wsdl 中定义的操作

CommonProcess 将调用 Callback.wsdl 中定义的操作来处理 Process1/Process2。

工艺包1

  • Process1.bpel
  • Process1.wsdl
  • CommonProcess.wsdl
  • 回调.wsdl

工艺包2

  • Process2.bpel
  • Process2.wsdl
  • CommonProcess.wsdl
  • 回调.wsdl

通用流程包

  • CommonProcess.bpel
  • CommonProcess.wsdl
  • 回调.wsdl

如何将 Process1 & Process2 的 EPR 传递给 CommonProcess 进行回调?

这可以通过 DynamicEndpoints 来完成。进程 EPR 可以在从 Process1 或 Process2 调用到 CommonProcess 期间在有效负载消息中传递。CommonProcess 将使用与传入消息一起传递的 EPR 覆盖对应于 Callback.wsdl 的 partnelink EPR。

这是一个演示如何使用 Partnerlink EPR 的示例。

https://github.com/apache/ode/tree/ode-1.3.x/distro/src/examples-war/DynPartner

这记录了有关该选项的更多信息:http: //ode.apache.org/endpoint-references.html

注意:这是在 Apache ODE 中提供的,并且可能在 WSO2 上可用。

于 2016-11-30T08:46:02.027 回答