【问题标题】:WSO2 BPS BPEL reusing the async processesWSO2 BPS BPEL 重用异步进程
【发布时间】:2016-11-29 22:01:31
【问题描述】:

拥有 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。我仍然不确定这是否是正确的方法。

【问题讨论】:

    标签: wso2 bpel apache-ode wso2bps


    【解决方案1】:

    Process1 和 Process2 异步调用 CommonProcess。

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

    CommonProcess 将调用 Callback.wsdl 中定义的操作来亲密 进程1/进程2。

    流程包1

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

    流程包2

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

    CommonProcessPackage

    • 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 上可用。

    【讨论】:

    • 非常感谢!显然我需要重命名父进程中的回调服务,但这没关系。我正在考虑在寻址标头中发送回调 url,但到目前为止我未能从消息中读取 ReplyTo 寻址标头。有什么提示吗?作为后备,我可能仍然会在有效负载中传递回调 url(我不喜欢它)
    • AFAIK,进程间通信可能无法使用 WSA 标头完成。
    • 确实,我在有效载荷中传递了回调 url。又快又脏,但工作。我的想法是使用本地传输,但是 WSO2BPS 中的一些错误迫使我使用绝对 http url(但是 - 在我不更改端口之前它一直有效)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多