如何让JBPM 6.x remote api 只在流程执行完成时响应?

How to make JBPM 6.x remote api respond only when the process execution is completed?

在 JBPM 的远程客户端的当前实现中 API,如果我启动一个流程,JBPM 会在流程启动后立即发送响应,流程实例 ID 和流程状态实际上处于活动状态,但是我我试图让远程 API 客户端等到流程执行结束,并且在响应中它应该声明流程已完成。有没有可能不使用线程睡眠方法的任何方式?

A​​FAIK 远程调用启动新流程实例 returns 一旦流程达到 safe point 并且无法更改此行为。

但是,有很多方法可以在流程执行完成时得到通知。在我看来,最优雅的方法是在流程定义中使用 signal end event 并将其配置为使用 external signalling。然后,您可以订阅 KIE.SIGNAL JMS 队列并等待指示进程执行结束的特定信号。使 KIE.SIGNAL 成为主题而不是队列可能是个好主意,这样您就不会在流程中丢失其他外部信号。也许有更好的解决方案,但这是我目前能想到的最好的解决方案。

顺便说一句,您指的是哪个远程客户端 API? KIE Workbench or KIE Server? If you use the former one, I would recommend to switch to KIE Server since it is the recommended way of executing processes. Note that there will be no jBPM runtime in KIE Workbench in the upcoming jBPM 7 (see JBPM-5071) 中的一个,然后您无论如何都需要切换到 KIE 服务器。