У меня проблема с простым рабочим процессом, реализованным с помощью обработчика activiti и Java. Я не могу выполнить задачу асинхронно. Рабочий процесс очень прост ![enter image description here](https://i.stack.imgur.com/QPOcs.png)
В верхней части рабочего процесса запускается процесс, запускается «Задача запуска службы», подается сигнал, выполняется «Задача обслуживания цикла» и повторяется 10. раз. Нижняя часть запускается сигналом, излучаемым в верхней части, и должна выполняться асинхронно относительно части цикла, но на самом деле она блокирует «Задачу службы цикла».
Я пытаюсь установить атрибут async в нижней части. поток, но в этом случае дно не выполняется. Перейдите по ссылке на проект GitHub. https://github.com/giane88/testActiviti
package configuration;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.impl.asyncexecutor.AsyncExecutor;
import org.activiti.engine.impl.asyncexecutor.ManagedAsyncJobExecutor;
import org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration;
public class WorkflowConfiguration {
final ProcessEngine processEngine;
public WorkflowConfiguration(final String workFlowName) {
processEngine = setUpProcessEngine(workFlowName);
}
public ProcessEngine getProcessEngine() {
return processEngine;
}
private ProcessEngine setUpProcessEngine(String workFlowName) {
ProcessEngineConfiguration cfg = null;
cfg = new StandaloneProcessEngineConfiguration()
.setJdbcUrl("jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000")
.setJdbcUsername("sa")
.setJdbcPassword("")
.setJdbcDriver("org.h2.Driver")
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
final ProcessEngine processEngine = cfg.buildProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
repositoryService.createDeployment().addClasspathResource("activiti/" + workFlowName)
.deploy();
return processEngine;
}
}
package configuration;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.runtime.ProcessInstance;
import java.util.HashMap;
import java.util.Map;
public class WorkflowManipulator {
private final Map<String, Object> nextDelegateVariables ;
private final String wfName;
private final ProcessEngine engine;
public WorkflowManipulator(String wfName, ProcessEngine engine) {
this.nextDelegateVariables = new HashMap<>();
this.wfName = wfName;
this.engine = engine;
}
public ProcessInstance startProcess() {
if (nextDelegateVariables.size() > 0) {
return engine.getRuntimeService().startProcessInstanceByKey(wfName, nextDelegateVariables);
} else {
return engine.getRuntimeService().startProcessInstanceByKey(wfName);
}
}
}
@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");
}
}