0

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

4

2 回答 2

0

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

于 2017-07-16T15:28:14.080 回答
0

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

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

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

于 2017-07-16T15:17:20.733 回答