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: 明らかにスレッド パスを試しましたが、それは私のユース ケースで使用できるソリューションではありません
通常の非非同期タスクを使用する場合、これは完全に正常に機能します。ただし、タスクを非同期にする場合、アプリケーションはこの行をログに記録してから、executeWorkItem
2021-07-28 12:27:44,641 [警告] org.jbpm.workflow.instance.node.AsyncEventNodeInstance - 非同期エグゼキューター サービスが同期操作として続行されていないことがわかりました...
これはおそらく、Executor サービスを作成したことがないためです。クラスをAsyncWorkItemHandler
使用してコマンドの実行をスケジュールするデフォルトを開きました 。ExecutorService
だから私は2つの疑問があります:
- AsyncWorkItemHandler を拡張する必要がありますか (ただし、拡張するとクラスのカスタマイズ可能性が懸念されます)
- その中のコードを単純に複製し、カスタム パーツを追加する必要があります。
次に、ExecutorService に必要な CommandClass とは何か、この ExecutorService をインスタンス化する場所と依存するクラスは何かを尋ねることがあります。
インターネット上でそれに関するドキュメントはほとんどまたはまったく見つかりませんでした。誰かが私にもっともらしい解決策やドキュメントを指摘できれば、それは素晴らしいでしょう
現在、私のプロジェクトはこのセットアップを使用しています:
- スプリングブーツ
- 7.52.0 Kie サーバー