首页 > 解决方案 > FLOWABLE:如何更改异步作业的 5 分钟默认间隔

问题描述

我假设DefaultAsyncJobExecutor是默认情况下作为AsyncExecutor接口 的实现被拾取的类(不确定这个假设是否正确)

所以基本上我想修改一个异步作业的默认超时时长,默认超时时长是5分钟,也就是两个变量的值:

AbstractAsyncExecutor .java中的timerLockTimeInMillisasyncJobLockTimeInMillis **

我尝试使用各自的 setter 方法更改这两个值,并尝试直接修改自定义实现的构造函数中的值,如下所示:

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 分钟后发生。

初始化是通过 API 完成的,例如 start-new-process-instance,在这个 API 中,以下代码用于启动流程实例

-> 像这样异步启动工作流流程实例(processInstanceName,processInstanceId)

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

->完成后,工作流程的其余部分涉及服务任务,当一个实例正在执行时,我猜会发生超时并且实例会重新启动

-> 因为,我配置了一个监听器,所以我能够在日志中看到启动事件活动每 5 分钟启动一次

例如:event-1 是第一个事件,然后此事件在 5 分钟后重新启动(持续时间显示在控制台日志中)

不确定,此时我缺少什么,如果需要任何其他详细信息,请告诉我

标签: flowable

解决方案


如果 jar 文件不受您的控制,则无法更改默认值,count因为在 jar 类中已编译。您只能更改对象内部的值,以便您可以使用super关键字:

class CustomImplementation extends DefaultExecutedClass{
  private int custom_count=1234;

  CustomImplementation(){
    super();
    super.count = this.custom_count;
  }

}

否则,如果您确实需要更改原始文件,则必须从 jar 中提取它


推荐阅读