2016-11-25 32 views
0

使用WSO2 BPS 3.6.0 - 我们有一个服务通知有关事件的正在运行的BPEL流程。当没有找到相关性时WSO2 BPS BPEL超时

利用该过程正在运行,它工作得很好(使用相关性)。但是当流程已经完成时,请求没有得到任何回应。如果可以提出异常,我很好,但没有任何反应会令人讨厌。如果没有(活动)实例具有特定的相关性,是否有快速失败的方法?

编辑:有效接收,挑选和的onEvent活动的行为方式相同

预先感谢您

+0

它看起来像我们必须创建一个外部关联数据库表和调用服务将不得不查找,如果该实例仍然活跃 – gusto2

回答

0

Apache ODE上的设计是入队提前到达传入的消息。

实施例:处理

Receive1 - > Receive2 - > Receive3 - > Reply3

Receive1:创建一个实例,并发起的相关性。

Receive2:实例正在等待消息到达。

但是,Receive3上的消息在Receive2之前到达并因此入队。由于以下活动是Reply3,它是一个同步呼叫,通道将超时等待响应。

一旦Receive2到达,引擎就会看到Receive3的消息已经到达并完成实例。

现在,如果另一个消息以相同的相关值到达接收3,它将再次入队以供将来消耗在将使用相同相关值创建的新实例上。因此没有错误会被报告。

注意:这是Apache ODE的行为,除非WSO2已更改此行为。

+0

谢谢你的答复。我明白了这一点。事实上,服务器的行为就像你所描述的那样。因此,即使没有找到相关性,呼叫也会一直等到创建一个。看起来调用服务必须在调用BPEL端点之前检查相关性(业务对象)是否存在。 – gusto2

+0

只是好奇,你为什么要检查? – Sathwik

+0

在请求处理期间(可能需要几天或几周),客户端可能会提供与请求相关的更新或事件(由onEvent处理或进行关联)。一旦过程完成,任何后续更新都必须被拒绝。因此获取超时实际上不是一种选择。幸运的是,我们在BPEL服务器前有一个ESB,因此可以检查请求(业务对象)状态。 – gusto2