我使用了最新的Acitiviti 5.22.0引擎(更具体地说,我使用了Alfresco Process Services 1.6.3),并且我实现了一个每10分钟执行一次的Spring bean,以生成我所有流程(流程名称,startDate, endDate,当前taskName和受让人),以将其发送到审核服务器。问题是,自上次运行以来,我只需要发送所有更改的进程。

我不想在流程更改时立即发送JSON,而是每10分钟对我的审核系统进行一次批量更新。

为此,我尝试了不同的方法。我最近的一个:


创建一个事件侦听器bean,以侦听所有PROCESS_STARTED,PROCESS_COMPLETED,PROCESS_CANCELLED,TASK_COMPLETED,...
每次触发事件时,存储过程变量“ _dirty”并将其设置为true
每隔10分钟(执行我的JSON-bean一次)查询所有将“ _dirty”变量设置为true的进程
将JSON发送到审核系统后,将所有“ _dirty”过程变量设置为false。


这种方法的问题:进程结束后,我无法更新“ _dirty”变量。至少我不知道如何。

我的第二种方法是将每个事件的processInstanceId存储到“全局”属性中,但是如果服务器重新启动,我不知道如何将该“全局”属性存储到数据库中。有没有一种方法可以将属性或实体保留到数据库中而无需创建额外的表,DAO等?

关于如何解决此任务的任何想法?非常感谢所有提示!

最佳答案

AFAIK,没有这样的选择

但是你看看这个。看看对您的情况是否有帮助。
https://www.activiti.org/userguide/#_database_tables

09-11 17:27