临时环境中的 Activiti 计时器事件

Activiti Timer Events in Ephemeral Environments

我们目前正在寻找 Activiti 来处理我们组织中的批准事件,但我们希望在容器化环境中构建 REST API*。容器化的 tomcat 实例将共享一个持久层,但由于实例的短暂性,我们无法让 Activiti 维护任何状态。

我们不认为这会成为一个问题,但对于定时边界事件来说,它与一个更广泛的问题有关,即 Activiti 计时器 如何工作。计时器的执行是否是保存在(永久)持久层中的 date/time 表达式的函数(因此在引擎与该表达式交互时对其进行评估)?或者它是一个保持 运行 时钟然后在它到期时触发的进程?两者中的后者是不可取的,但如果是这样的话,当 Activiti 层是非永久性的时候,人们建议我们如何跟踪边界计时器?

*(使用可以随时被吹走的短暂 Tomcat 层)

这个问题问得非常好,我对您提出的架构非常感兴趣。

计时器事件由作业计划程序处理。 在更新版本的 Activiti(我相信 >5,16)中,Timer 和 Async 队列管理器已经分开,但它们仍然使用相同的底层数据 table (ACT_JOB).

每个JobExecutor都会标记一块超时的定时器事件,放入定时器队列中处理。您可以在引擎配置中设置每次通过的任务数量以及超时和队列大小。

因此,对于您的具体问题:“计时器的执行是否是保存在(永久)持久层中的 date/time 表达式的函数(因此在引擎与该表达式交互时对其进行评估)?或者它是一个保持 运行 时钟然后在它到期时触发的进程?“

Timer ACT_JOB table 保存 DueDate (DateTime),Timer 线程在查询下一组要处理的作业时将使用该日期。 其中,如果我理解你的语言是选项 1 的变体。

格雷格