我有一个BPMN流程,它每隔一分钟启动一次,检索一个消息列表并迭代(每个消息都包含一个userId,对应于会话中的一条消息),然后向一个BPEL流程发送一条消息。
BPEL流程包含一个关联集(使用userId),因此每个用户只有一个流程实例。此BPEL流程包含4个消息捕获,具有相同的接口,并且在处理4个消息之后,实例终止。
我得到的是:我收到来自同一个用户的4条消息,流程实例结束。然后,我收到来自同一用户的另一条消息。在我看来,它应该创建一个新的BPEL流程实例。但是,它向我显示执行了send活动,并且没有创建新的实例,并且我看不到任何错误。
有人能帮帮我吗?谢谢
发布于 2016-05-24 17:32:29
通常在OrderId上设置相关性。由于消息需要关联,因此消息始终持久存储在数据库中。
实例完成后,实例数据就会出现在数据库中。当相同的CustomerId消息到达BPEL时,它将首先检查数据库中的CustomerId。一旦它发现有一个已完成的实例,它就会引发一个异常。您可以清除数据库,您会发现您的关联再次工作(只有一次)。这就是它在BPEL引擎中的实现方式。
我建议您使用OrderId作为相关性。因为orderID将仅为该客户所知。
https://stackoverflow.com/questions/37331687
复制相似问题