因工作需求,博主需要自学工作流。目前暂定技术选型为activii。
今天遇到一个很奇葩的问题
博主使用eclipse当作绘图工具,绘制了一张简单的流程图
然后使用java在idea内欲实现这个流程
处理流程任务时 taskService.createTaskQuery().list()一直为null,经检查流程文件表格为异步原因
去掉此属性后可正常读取流程
另外流程文件命名必须以20.xml结尾
否则读取流程文件会为空
package com.imooc.activiti.helloword;
import org.activiti.engine.*;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
public class DomoMain {
private static final Logger log = LoggerFactory.getLogger(DomoMain.class);
public static void main(String[] args){
log.info("启动我们的程序");
//创建流程引擎
ProcessEngineConfiguration cfg = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();
ProcessEngine processEngine = cfg.buildProcessEngine();
String name = processEngine.getName();
String version = processEngine.VERSION;
log.info("流程引擎名称{},版本{}",name,version);
//部署流程定义文件
RepositoryService repositoryService = processEngine.getRepositoryService();
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
deploymentBuilder.addClasspathResource("second_approve2.bpmn20.xml");
Deployment deployment = deploymentBuilder.deploy();
String deploymentId = deployment.getId();
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.deploymentId(deploymentId)
.singleResult();
log.info("流程定义对象{},流程ID{}",processDefinition.getName(),processDefinition.getId());
//启动运行流程
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinition.getId());
log.info("启动流程[{}]",processInstance.getProcessDefinitionKey());
//处理流程任务
TaskService taskService = processEngine.getTaskService();
List<Task> list = taskService.createTaskQuery().list();
for (Task task : list){
log.info("待处理任务[{}]",task.getName());
}
log.info("待处理任务数量[{}]",list.size());
log.info("结束我们的程序");
}
}