3

DefaultAsyncJobExecutorは、 AsyncExecutorインターフェイス の実装としてデフォルトで選択されるクラスであると想定しています(この仮定が正しいかどうかはわかりません)

基本的に、非同期ジョブのデフォルトのタイムアウト期間を変更したいのですが、デフォルトのタイムアウト期間は 5 分で、これは2 つの変数の値です。

timerLockTimeInMillisAbstractAsyncExecutor .java内のasyncJobLockTimeInMillis **

それぞれのセッターメソッドで両方の値を変更しようとし、次のようにカスタム実装のコンストラクターで値を直接変更しようとしました:

public class AsyncExecutorConfigImpl extends DefaultAsyncJobExecutor
{
    //    @Value( "${async.timeout.duration}" )
    private int customAsyncJobLockTimeInMillis = 10 * 60 * 1000;

    AsyncExecutorConfigImpl()
    {
        super();
        setTimerLockTimeInMillis( this.customAsyncJobLockTimeInMillis );
        setAsyncJobLockTimeInMillis( this.customAsyncJobLockTimeInMillis );
        super.timerLockTimeInMillis = this.customAsyncJobLockTimeInMillis;
        super.asyncJobLockTimeInMillis = this.customAsyncJobLockTimeInMillis;
    }
}

ただし、5 分後にタイムアウトが発生するため、値は同じままです。

初期化は、start-new-process-instance などの API を介して行われます。この API では、プロセス インスタンスを開始するためのコードが続きます。

->ワークフロー プロセス インスタンスを非同期的に開始します (processInstanceName、processInstanceId)

ProcessInstance lProcessInstance = mRuntimeService.createProcessInstanceBuilder()
                                                              .processDefinitionId( lProcessDefinition.get().getId() )
                                                              .variables( processInstanceRequest.getVariables() )
                                                              .name( lProcessInstanceName )
                                                              .predefineProcessInstanceId( lProcessInstanceId )
                                                              .startAsync();

->これが完了すると、残りのワークフローにはサービス タスクが含まれ、1 つのインスタンスの実行中にタイムアウトが発生し、インスタンスが再起動されると思います

-> リスナーが構成されているため、5 分ごとに開始イベント アクティビティが開始されることをログで確認できました。

たとえば、event-1 が最初のイベントで、このイベントは 5 分後に再開されます (期間はコンソール ログに表示されます)。

この時点で何が欠けているかわかりません。他に詳細が必要な場合はお知らせください

4

2 に答える 2