代码已上传至Github:https://github.com/ylw-github/Activiti-Demo.git
1.新建maven项目
点击next,输入GroupId和ArtifactId,点击next,定义项目名和项目地址,Finish之后项目就建好了。
2.添加依赖
3.绘制工作流
使用bpmn插件,在java的resource目录下,点击New,选择BpmnFile,创建bpmn文件
我们需要一个开始,一个结束,两个UserTask
我们需要修改两个UserTask的Name和Assignee,如图:
员工请假:
经理审批:
保存之后打开可能会出现乱码,解决办法参考:https://blog.csdn.net/vimonkey/article/details/72910153
4.代码
在recourse目录下写一个activiti的配置文件activiti.cfg.xml。
新建测试工具类ActivitiTest.java,运行创建工作流方法
运行成功:
打开数据库,发现已经自动生成表了
下面附上完整的代码:
package com.ylw.activiti;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.task.Task;
import org.junit.Test;
import java.util.List;
public class ActivitiTest {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
@Test
public void testCreateProcessEngineByCfgXml() {
ProcessEngineConfiguration cfg = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
ProcessEngine engine = cfg.buildProcessEngine();
}
@Test
public void test() {
testCreateProcessEngineByCfgXml();
deployProcess();
startProcess();
queryTask();
//handle();
}
@Test
public void startProcess() {
RuntimeService runtimeService = processEngine.getRuntimeService();
runtimeService.startProcessInstanceByKey("myProcess_1");
}
@Test
public void deployProcess() {
RepositoryService repositoryService = processEngine.getRepositoryService();
DeploymentBuilder builder = repositoryService.createDeployment();
builder.addClasspathResource("helloworld.bpmn");
builder.deploy();
}
@Test
public void queryTask() {
TaskService taskService = processEngine.getTaskService();
String assignee = "emp";
List<Task> tasks = taskService.createTaskQuery().taskAssignee(assignee).list();
int size = tasks.size();
for (int i = 0; i < size; i++) {
Task task = tasks.get(i);
}
for (Task task : tasks) {
System.out.println("taskId:" + task.getId() +
",taskName:" + task.getName() +
",assignee:" + task.getAssignee() +
",createTime:" + task.getCreateTime());
}
}
@Test
public void handleTask() {
TaskService taskService = processEngine.getTaskService();
String taskId = "25008";
taskService.complete(taskId);
}
}