我有一个每隔一分钟开始的BPMN流程,检索一个消息列表并进行迭代(每个消息都包含一个userId,并且对应于一个会话中的消息),然后它向BPEL流程发送一条消息。
BPEL流程包含一个相关集(使用userId),因此每个用户只有一个流程实例。此BPEL流程包含4个消息捕获,具有相同的接口,并且在处理4个消息后,实例终止。
我所拥有的是:我收到来自同一用户的4条消息,流程实例结束。然后我从同一个用户收到另一条消息。根据我的理解,它应该创建一个BPEL流程的新实例。但相反,它告诉我发送活动已执行,并且没有创建新实例,我也看不到任何错误。
有人能帮助我吗?感谢
答案 0 :(得分:0)
通常在OrderId上设置相关性。由于消息需要相关,因此消息始终保留在数据库中。
实例完成后,实例数据将出现在数据库中。当相同的CustomerId消息进入BPEL时,它将首先检查数据库中的CustomerId。一旦它看到有一个已完成的实例,它就会引发异常。您可以清除数据库,您会发现您的关联再次起作用(仅一次)。这是它在BPEL引擎中的实现方式。
我建议你使用OrderId作为相关性。由于订单ID仅为该客户所知。