我在我的 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
类来安排命令执行的默认设置。
所以我有两个疑问:
- 我是否应该扩展 AsyncWorkItemHandler (尽管如果我扩展它,我担心类的可定制性)
- 我是否应该简单地复制其中的代码并添加自定义部分
关于第二点,我可能会问 ExecutorService 所需的 CommandClass 是什么,在哪里实例化这个 ExecutorService 以及它依赖于哪个类。
我在互联网上几乎没有找到关于它的文档。如果有人能指出一个可行的解决方案或文档,那就太好了
现在我的项目正在使用这个设置:
- 弹簧靴
- 7.52.0 凯服务器