我一直在调查Azkaban和Apache Activiti的工作流程用例。据我所知,Azkaban中的每个工作都是作为一个单独的流程运行,与Activiti相同,或者Activiti任务在Activiti的主流程中作为单独的线程运行。
答案 0 :(得分:0)
Activiti任务在主引擎运行的同一进程中运行。
根据流中异步活动的存在与否,它们将在您调用其中一个API或后台线程池时使用的同一线程中运行。
也就是说,没有什么可以阻止您在单独的流程中运行工作流的特定步骤(例如:长时间运行的批处理)。这可以通过多种方式实现,但我赞成的是将任务建模为“人工任务”,然后使用外部调度程序使用Activiti的API(REST或Java)来实际执行。这种方法具有很强的可扩展性,可以避免一些与事务管理相关的陷阱,如果您的任务过于复杂和/或需要很长时间执行,可能会出现这些陷阱。
答案 1 :(得分:0)
如果Activiti引擎嵌入在您的应用程序中,则任务在调用引擎API的线程中运行(可以是服务任务或用户任务)。但是我从你的问题中理解的可能是你有兴趣使用REST API调用Activiti引擎remotely,在这种情况下,任务显然是在容器托管Activiti引擎中作为不同线程运行。