Acitivti 5.X中的集群与JBPM 5.X中的集群有何不同?

Acitivti 5.X中的集群与JBPM 5.X中的集群有何不同?,jbpm,activiti,Jbpm,Activiti,我所基于的场景 Load Balancer | ------------------------------------------ | | | Node 1 Node 2 Node 3 | | | -----------------

我所基于的场景

             Load Balancer
                     |
------------------------------------------
|                    |                   |
Node 1             Node 2              Node 3
|                    |                   |
------------------------------------------
                     |
               Common Database
节点1、2和3将拥有自己的流程引擎单例实例。所有服务器都处于活动配置中,这意味着请求或多或少以循环方式路由到每个节点

情景1 请求被路由到节点1,节点1启动id为100的进程Activiti立即将此状态刷新到数据库。另一个请求被路由到节点2,在节点2,用户可能希望对具有相同id(即100)的流程实例执行人工任务(如批准)。尽管流程实例不在第二个节点的内存中,但如果此特定节点上的流程引擎查询数据库,它将获取它,加载它并允许用户执行任务。所以没有问题。 但是,由于JBPM 5.4不会立即将其状态刷新到数据库,这将导致问题我说得对吗?

情景2
这是一个maker checker场景。两个检查器分别登录到节点1和节点2。第一个检查器批准一个工作项。第二个检查器批准相同的工作项Activti如何处理此问题?。它会抛出异常还是以幂等方式运行并允许两个操作都成功JBPM是如何处理的?

希望这个答案不会太晚

我们在集群环境中使用活动,它在不做任何事情的情况下工作得很好。 从零开始,Activiti引擎就可以在集群模式下工作。 不需要进行额外的配置。只需创建多个进程引擎(在机器上或多台机器不关心),并将它们连接到同一个数据库。 连接到同一数据库的所有进程引擎彼此通信(使用数据库)并自行处理

Activiti documentation/forum还表示,没有具体的需要或工作要做,因为即使在集群应用程序上,Activiti本身也是线程安全的。 我们现在在生产中使用上述方法已超过6个月,没有任何问题

在开始您所学的流程之前,请检查此流程是否已针对相同id(例如100)启动,以确定是否已启动。但是你也可以检查你的工作流程,并抛出一个已经处理过的错误

工作起来很有魅力