提问者:小点点

Apache Activiti工作流执行作为一个单独的进程或在Activiti进程中执行


我一直在为我们的一个工作流用例调查Azkaban和Apache Activiti。我的理解是Azkaban中的每个作业都作为一个单独的进程运行,Activiti也是如此,或者Activiti任务在Activiti的主进程中作为单独的线程运行。


共2个答案

匿名用户

Activiti任务在主引擎运行的同一进程中运行。

根据流中是否存在异步活动,它们将在您调用其API之一或后台线程池时使用的同一线程中运行。

也就是说,没有什么能阻止您在单独的流程中运行工作流的特定步骤(例如:长时间运行的批次处理作业)。这可以通过多种方式实现,但我喜欢的一种方式是将任务建模为“人工任务”,然后使用外部调度程序使用Activiti的API(REST或Java)选择这些任务进行实际执行。这种方法具有相当的可扩展性,并避免了一些与事务管理相关的陷阱,如果您的任务过于复杂和/或执行时间很长,可能会出现这些陷阱。

匿名用户

如果Activiti引擎嵌入在您的应用程序中,则任务在调用引擎的线程中运行API(可能是服务任务或用户任务)。但我从您的问题中了解到的是,您可能对使用REST远程调用Activiti引擎感兴趣API在这种情况下,显然任务在托管Activiti引擎的容器中作为不同的线程运行。