gpt4 book ai didi

BPEL 流程在第二次接收时停止

转载 作者:行者123 更新时间:2023-12-04 06:28:32 24 4
gpt4 key购买 nike

我是 BPEL 写作的新手。我已经实现了下面的简单过程:

接收1
|
|
调用1
|
|
接收2
|
|
调用2

问题是该过程正确运行到“receive2”,但是当我通过soapUI 调用时,与“receive2”相关的操作没有任何 react 。我已阅读有关 BPEL 的其他帖子,但没有与此问题匹配的内容。下面是真正的事件(我省略了分配事件)。

    <bpel:receive name="receiveInput" partnerLink="client"
portType="tns:HealthMobility"
operation="initiate" variable="input"
createInstance="yes"/>

<bpel:invoke name="getTreatmentOptions"
partnerLink="treatmentProviderPL" operation="getTreatmentOptions"
inputVariable="getTreatmentOptionsReq" outputVariable="getTreatmentOptionsResp">
</bpel:invoke>

<bpel:receive name="bookMobility" partnerLink="client" operation="bookMobility"
variable="bookMobilityReq" portType="tns:HealthMobility"/>

<bpel:invoke name="getTripOptions" partnerLink="mobilityMultiProvidersPL"
operation="getTripOptions" inputVariable="getTripOptionsReq"
outputVariable="getTripOptionsResp"></bpel:invoke>

我试图通过删除接收并静态初始化 getTriOptions 调用所需的输入变量来进行调试。在这种情况下,一切正常,因此这意味着,如果我通过 SOAPUI 调用 bookMobility,该进程也将继续等待接收。我的问题是:为什么?我错过了什么?

谢谢

最佳答案

您需要为第二次接收定义相关集。发送到连接到第一个接收事件的操作的每条消息都将创建一个新的流程实例。这意味着您可能有多个并行运行的实例。当这些实例到达第二次接收时,它们正在等待第二条消息,但在您的示例中,无法区分哪个消息针对哪个流程实例。我假设您的 BPEL 引擎也记录了它无法将消息路由到目标实例。

为了解决这个问题,你需要在消息的有效载荷中找到一个标识符,并用这个值初始化一个相关集。然后,当对第二个接收使用相同的相关集时,所有包含相同标识符的消息将被路由到这个特定的流程实例。有关相关集的更多信息,我建议阅读 BPEL primer ,第 4.2.4 节。

关于BPEL 流程在第二次接收时停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5727218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com