同一进程的多个实例如何彼此相邻运行而不互相干扰?
我有这个业务流程模型,其中基本工作流程需要确定需要启动其他工作流程。该基本流将在评估时发送一些信号,这些信号将启动其他子流程。在执行这些子流程期间,某些子流程需要等待其他子流程完成。因此,我目前正在使用中间的抛出和捕获信号来实现某种同步机制。问题是,每当发送特定信号时,侦听此信号的所有进程都将继续独立于它们正在运行的实例。我只希望那些子流程在它们从最初启动它们的流程中接收到与Java EE应用程序中的多用户并发环境相当的信号时继续运行。
换句话说,我有两个问题: 1.创建使用jBPM模仿多用户并发环境的这种同步机制的最佳方法是什么? 2.如何以隔离的方式创建多个流程实例?我尝试使用运行时策略。单例显然不是期望的行为。当我使用流程实例时,基本流程发送信号时不会启动其他流程。用例与运行时策略相同。
由于我是BPM的新手,所以我希望我的方法完全错误,请在适用时随时提出更好的方法。
编辑: 为了澄清一些事情,我添加了示例模型的屏幕截图 通过创建流程实例并使用jBPM业务中心启动它来启动第一个流程。中间信号应触发下面的子进程,然后等待该子进程完成其任务。
子进程只是等待一段时间,然后发出一个完整的信号,该信号将被上述进程捕获。
单个运行时策略导致基本流程实例被任何已完成的子流程触发,这是由于每个流程实例都在同一上下文中运行这一事实。 per_process_instance 似乎触发了子进程,但完成后,基本进程未接收到子进程发送的信号。
答案 0 :(得分:0)
您正在使用哪种运行时策略? jBPM愚蠢地使用了单例策略。请使用per_process_instance运行时策略来隔离流程实例之间。