Multithreading jBPM是否有固定大小的异步工作流线程池?

Multithreading jBPM是否有固定大小的异步工作流线程池?,multithreading,jakarta-ee,wildfly,jbpm,Multithreading,Jakarta Ee,Wildfly,Jbpm,我有jBPM 5.4,我发现无论我在standalone.xml的线程池大小中做了什么更改,wildfly上的jBPM异步运行大量工作流所需的时间都是一样的 恐怕jBPM是通过固定的池大小来实现的。有人能证实或否认这一点吗?免责声明:我最近没有尝试过,这是从对旧项目的回忆(6.0即将问世,没有使用,但讨论过)和通过检查文档刷新我的记忆中得出的。此外,我不希望这里的“工作流”有什么特殊之处,同样的原则也应该适用 jBPM的发动机是: 我们选择使用一个线程实现逻辑多线程:包含逻辑多线程的jBPM进程

我有jBPM 5.4,我发现无论我在standalone.xml的线程池大小中做了什么更改,wildfly上的jBPM异步运行大量工作流所需的时间都是一样的


恐怕jBPM是通过固定的池大小来实现的。有人能证实或否认这一点吗?

免责声明:我最近没有尝试过,这是从对旧项目的回忆(6.0即将问世,没有使用,但讨论过)和通过检查文档刷新我的记忆中得出的。此外,我不希望这里的“工作流”有什么特殊之处,同样的原则也应该适用

jBPM的发动机是:

我们选择使用一个线程实现逻辑多线程:包含逻辑多线程的jBPM进程将只在一个技术线程中执行

对于v5中的异步任务,您必须自己处理线程,如文档中的示例所示:

public class MyServiceTaskHandler implements WorkItemHandler {

    public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
        new Thread(new Runnable() {
            public void run() {
                // Do the heavy lifting here ...
            }
        }).start();
    }

    public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {

    }
}
我的理解是,如果不这样做,您的异步任务就可能是异步的。如果这样做,就无法控制并发级别。所以这是一个糟糕的例子,他们至少应该展示如何使用
ExecutorService
或一些合理的东西

无论如何,版本6仍然有一个单线程核心引擎,但是:

在版本6中,jBPM引入了名为jBPM executor的新组件,它为异步执行提供了非常高级的功能。它为命令的后台执行提供了通用环境


它的内部线程池可以配置系统属性
org.kie.executor.pool.size
(在上面链接的页面底部提到)。

这在jBPM 6中得到了修复:请参阅感谢您的回复。你确定我们没有混淆“过程”和“引擎”吗?一个进程是单线程的,我们确实有代码,工作项处理程序,它可以启动多个线程来执行该工作项中的并发操作。对我来说,无状态会话bean池所扮演的角色似乎更有趣。这是进行异步工作项调用时的限制因素吗?抱歉,我不确定我是否正确处理了您的问题。。。也不确定无状态会话bean池在这里扮演什么角色:-/另一个答案提到了我提到的同一个执行者(所以我们2谈论的是同一件事)。该执行器在6.0中引入,但仍按顺序执行。这是6.0版本,我确信它可以通过系统属性
org.kie.executor.pool.size
进行配置。。。也许这是完全不相关的:(