Java 未执行activiti中的异步任务

Java 未执行activiti中的异步任务,java,activiti,Java,Activiti,我对使用activiti引擎和Java实现的简单工作流有一个问题 我无法异步执行任务。工作流程非常简单 工作流的上部启动流程执行“启动服务任务”发出信号并执行“循环服务任务”并重复10次。 底部由上部发出的信号触发,必须异步执行循环部分,但实际上它阻止了“循环服务任务” 我尝试在底部流中设置async属性,但在这种情况下,底部流不会被执行。 点击github项目的链接。 包配置; 导入org.activiti.engine.ProcessEngine; 导入org.activiti.engi

我对使用activiti引擎和Java实现的简单工作流有一个问题 我无法异步执行任务。工作流程非常简单

工作流的上部启动流程执行“启动服务任务”发出信号并执行“循环服务任务”并重复10次。 底部由上部发出的信号触发,必须异步执行循环部分,但实际上它阻止了“循环服务任务”

我尝试在底部流中设置async属性,但在这种情况下,底部流不会被执行。 点击github项目的链接。

包配置;
导入org.activiti.engine.ProcessEngine;
导入org.activiti.engine.ProcessEngineConfiguration;
导入org.activiti.engine.RepositoryService;
导入org.activiti.engine.impl.asyncexecutor.asyncexecutor;
导入org.activiti.engine.impl.asyncexecutor.ManagedAsyncJobExecutor;
导入org.activiti.engine.impl.cfg.standaloneinemprocessengineconfiguration;
公共类工作流配置{
最终进程引擎进程引擎;
公共工作流配置(最终字符串workFlowName){
processEngine=setUpProcessEngine(工作流名称);
}
公共ProcessEngine getProcessEngine(){
返回引擎;
}
专用ProcessEngine setUpProcessEngine(字符串workFlowName){
ProcessEngineConfiguration cfg=null;
cfg=新标准流程EngineConfiguration()
.setJdbcUrl(“jdbc:h2:mem:activiti;DB\u CLOSE\u DELAY=1000”)
.setJdbcUsername(“sa”)
.setjdbc密码(“”)
.setjdbdriver(“org.h2.Driver”)
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB\u SCHEMA\u UPDATE\u TRUE);
final ProcessEngine ProcessEngine=cfg.buildProcessEngine();
RepositoryService RepositoryService=processEngine.getRepositoryService();
repositoryService.createDeployment().addClasspathResource(“activiti/”+workFlowName)
.deploy();
返回引擎;
}
}
包配置;
导入org.activiti.engine.ProcessEngine;
导入org.activiti.engine.runtime.ProcessInstance;
导入java.util.HashMap;
导入java.util.Map;
公共类工作流操纵器{
私有最终映射nextDelegateVariables;
私有最终字符串名称;
私人最终处理引擎;
公共工作流操纵器(字符串wfName、ProcessEngine){
this.nextDelegateVariables=new HashMap();
this.wfName=wfName;
这个。发动机=发动机;
}
public ProcessInstance startProcess(){
if(nextDelegateVariables.size()>0){
返回engine.getRuntimeService().startProcessInstanceByKey(wfName,nextDelegateVariables);
}否则{
返回engine.getRuntimeService().startProcessInstanceByKey(wfName);
}
}
}

通常我在发帖几分钟后就找到了答案。 问题在于流程引擎配置中,您需要设置一个异步执行器,并像下面的示例中那样启用和激活它

ProcessEngineConfiguration cfg;
AsyncExecutor AsyncExecutor=新ManagedAsyncJobExecutor();
cfg=新标准化处理程序EngineConfiguration()
.setAsyncExecutor(异步执行器)
.setAsyncExecutorEnabled(真)
.setAsyncExecutorActivate(true);
final ProcessEngine ProcessEngine=cfg.buildProcessEngine();

通常我在发帖几分钟后就找到了答案。 问题在于流程引擎配置中,您需要设置一个异步执行器,并像下面的示例中那样启用和激活它

ProcessEngineConfiguration cfg;
AsyncExecutor AsyncExecutor=新ManagedAsyncJobExecutor();
cfg=新标准化处理程序EngineConfiguration()
.setAsyncExecutor(异步执行器)
.setAsyncExecutorEnabled(真)
.setAsyncExecutorActivate(true);
final ProcessEngine ProcessEngine=cfg.buildProcessEngine();

请提供所有无外部链接的代码源详细信息。请提供所有无外部链接的代码源详细信息。
@Log4j2
public class TestWorkFlowMain {

  public static void main(String[] args) throws IOException {

    WorkflowConfiguration workflowConfiguration = new WorkflowConfiguration("test.bpmn");
    WorkflowManipulator workflowManipulator = new WorkflowManipulator("testProcess", workflowConfiguration.getProcessEngine());
    ProcessInstance processInstance = workflowManipulator.startProcess();
  }
}
package delegates;

import lombok.extern.log4j.Log4j2;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.JavaDelegate;

@Log4j2
public class AsyncServiceTask implements JavaDelegate {
  @Override
  public void execute(DelegateExecution execution) throws Exception {
    log.info("Sleeping for 3 second");
    Thread.sleep(3000);
    log.warn("AsyncCompleted");
  }
}