WSO2 BPS BPEL 重用异步流程

WSO2 BPS BPEL reusing the async processes

有了 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

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

我正在考虑为每个 parent 进程(甚至公开相同的端口)提供稍微不同的服务名称(url 片段?)并使用 ReplyTo header 来强制正确的回调 url。我仍然不确定这是不是一个正确的方法。

Process1 和 Process2 异步调用 CommonProcess。

Process1 和 Process2 应该实现 Callback.wsdl

中定义的操作

CommonProcess 将调用 Callback.wsdl 中定义的操作来亲密 Process1/Process2.

ProcessPackage1

  • Process1.bpel
  • Process1.wsdl
  • CommonProcess.wsdl
  • Callback.wsdl

ProcessPackage2

  • Process2.bpel
  • Process2.wsdl
  • CommonProcess.wsdl
  • Callback.wsdl

CommonProcessPackage

  • CommonProcess.bpel
  • CommonProcess.wsdl
  • Callback.wsdl

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

这可以通过 DynamicEndpoints 来完成。在从 Process1 或 Process2 调用到 CommonProcess 期间,进程 EPR 可以在有效负载消息中传递。 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 上可用。