0

我在我的 bpm 流程中制作异步 jBPM 自定义任务时遇到了一些问题。我的自定义任务依赖于我的 CustomTaskHandler 类,看起来像这样

@RequiredArgsConstructor
@Component("CustomSpringTask")
public class CustomTaskHandler implements WorkItemHandler {

    private final RuntimeDataServiceBase runtimeDataServiceBase;

    private final MeterRegistry meterRegistry;

    public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
        //new Thread(() -> executeLogic(workItem, manager)).start();
        executeLogic(workItem, manager);
    }

    public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
        manager.abortWorkItem(workItem.getId());
    }
}

SN:我显然尝试了 Thread 路径,但这不是我可以在我的用例中使用的解决方案

这在使用正常的非异步任务时非常有效。但是,当使任务异步时,应用程序会在调用executeWorkItem

2021-07-28 12:27:44,641 [WARN] org.jbpm.workflow.instance.node.AsyncEventNodeInstance - 没有发现异步执行器服务继续作为同步操作...

这可能是因为我从未创建过 Executor 服务。我已经打开了 AsyncWorkItemHandler使用ExecutorService类来安排命令执行的默认设置。

所以我有两个疑问:

  1. 我是否应该扩展 AsyncWorkItemHandler (尽管如果我扩展它,我担心类的可定制性)
  2. 我是否应该简单地复制其中的代码并添加自定义部分

关于第二点,我可能会问 ExecutorService 所需的 CommandClass 是什么,在哪里实例化这个 ExecutorService 以及它依赖于哪个类。

我在互联网上几乎没有找到关于它的文档。如果有人能指出一个可行的解决方案或文档,那就太好了

现在我的项目正在使用这个设置:

  • 弹簧靴
  • 7.52.0 凯服务器
4

1 回答 1

0

JBpm 需要 ExecuterService 来运行异步任务。如果您使用的是 kie 组提供的 spring boot 启动器,那么您可以通过在 application.properties 文件中设置此属性来简单地启用执行器。

jbpm.executor.enabled=true

更多关于 jbpm 的异步执行在这里

在github 上签出 jbpm 的 spring-boot-starter

于 2022-03-02T09:32:30.123 回答