我有一个准备输入文件的过程,如果该文件存在,将执行一个服务任务,该任务将启动一个弹簧批处理程序。这是开箱即用的,已经异步了,没有明确地标记为异步。因此,如果在导入期间发生错误,我的BPMN仍将继续。由于这个原因,我在服务任务中附加了一个waitSignal。我的想法是,一旦我的批处理任务完成,就会触发一个侦听器-我使用活动api通过进程变量(文件名)找到我当前的进程并发出信号。
问题是,当任务完成得太快(少于100毫秒)时,它找不到进程或其实例,有时找不到进程,但找不到实例。据我了解,活动api只会查询数据库中的持久化数据以获取正在运行或已暂停的进程。在这种情况下,我认为该进程在数据库中未知,因此无法使用进程API发送信号。
我尝试将先前的准备步骤标记为异步,并将服务本身也开始导入为异步的服务任务,但这没有帮助。唯一有效的黑客方法是在通知侦听器已完成导入之后以及在搜索我正在运行的进程之前添加睡眠。