Activiti-01入门

Activiti

项目中有流程审批的需求,为了应对更多需求,决定加入工作流,选用activiti。本篇旨在入门认识

jar依赖

本该使用5或者6的版本,这里是为了学习,加的7版本。本该集成springboot的,因其需要springSecurity,故用原始jar

<properties>
    <activiti.version>7.1.0.M6</activiti.version>
    <activiti.cloud.version>7-201802-EA</activiti.cloud.version>
</properties>

需要以来的jar

<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring</artifactId>
    <version>${activiti.version}</version>
</dependency>
<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-engine</artifactId>
    <version>${activiti.version}</version>
</dependency>
<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-bpmn-model</artifactId>
    <version>${activiti.version}</version>
</dependency>
<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-bpmn-converter</artifactId>
    <version>${activiti.version}</version>
</dependency>
<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-json-converter</artifactId>
    <version>${activiti.version}</version>
</dependency>
<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-bpmn-layout</artifactId>
    <version>${activiti.version}</version>
</dependency>

示例

流程示例图
简单流程示例
指定任务名称
任务名称
指定任务处理人
处理人

如果找不到Properties,Window -> Show View —> Other —> General —> Properties

测试代码

@Slf4j
@RunWith(SpringRunner.class)
@ActiveProfiles("dev5566")
@SpringBootTest
public class ActivitiTest {

	@Autowired
	ProcessEngineConfiguration configuration;

	/**
	 * 生成表结构
	 */

	@Test
	public void testGenTable() { // 1.创建一个ProcessonEngineConfig对象
		// 创建 ProcessonEngine 对象 ProcessEngine processEngine =
		ProcessEngine processEngine = configuration.buildProcessEngine(); // 3.输出测试
		System.out.println("------------->" + processEngine);
		log.error("******************>" + processEngine.getName());
	}

	/**
	 * 流程部署
	 */
	@Test
	public void testDeployment() {
		// 创建processEngine对象
		ProcessEngine processEngine = configuration.buildProcessEngine();
		// 得到RepositoryService
		RepositoryService repositoryService = processEngine.getRepositoryService(); // 与流程定义部署相关的service
		// 进行部署
		Deployment deployment = repositoryService.createDeployment() // 创建一个对象
				.addClasspathResource("diagram/aa.bpmn") // 一次只能加载一个文件,加载流程定义
				.addClasspathResource("diagram/aa.png") // 一次只能加载一个文件,加载图片
				.name("请假流程") // 起一个名字
				.deploy(); // 进行部署

		System.out.println("部署ID " + deployment.getId()); // 部署ID 10001
		System.out.println("部署名称 " + deployment.getName()); // 部署名称 请假流程
	}

	/**
	 * 启动流程实例 使用key启动默认是使用流程最新版本的流程定义启动
	 */
	@Test
	public void startProcessTest() {
		ProcessEngine processEngine = configuration.buildProcessEngine();
		String processDefinitionKey = "helloworld";
		ProcessInstance processInstance = processEngine.getRuntimeService() // 与正在执行的流程实例和执行对象相关的service
				.startProcessInstanceByKey(processDefinitionKey); // 使用流程定义的key启动流程实例.key对应helloworld.bppmn文件中ID的属性值;
		System.out.println("流程实例ID " + processInstance.getId()); // 流程实例ID 12501
		System.out.println("流程定义ID " + processInstance.getProcessDefinitionId()); // 流程定义ID helloworld:5:10004
	}

	/**
	 * 查询当前个人任务
	 */
	@Test
	public void findMyTaskTest() {
		ProcessEngine processEngine = configuration.buildProcessEngine();
		String assignee = "张三";
		List<Task> list = processEngine.getTaskService() // 和任务相关的service
				.createTaskQuery() // 创建任务查询对象
				.taskAssignee(assignee).list(); // 指定个人任务查询.指定办理人
		if (CollectionUtils.isEmpty(list)) {
			return;
		}
		for (Task task : list) {
			System.out.println("任务ID " + task.getId()); // 任务ID 12505
			System.out.println("任务名称 " + task.getName()); // 任务名称 提交请假单
			System.out.println("任务的创建时间 " + task.getCreateTime()); // 任务的创建时间 Thu Aug 27 11:57:56 CST 2020
			System.out.println("任务的办理人 " + task.getAssignee()); // 任务的办理人 张三
			System.out.println("流程实例ID " + task.getProcessInstanceId()); // 流程实例ID 12501
			System.out.println("流程对象ID " + task.getExecutionId()); // 流程对象ID 12502
			System.out.println("流程定义ID " + task.getProcessDefinitionId()); // 流程定义ID helloworld:5:10004
			System.out.println("----------------------------------------------");
		}
	}

	/** 完成我的任务 */
	@Test
	public void completeMyProcessTask() {
		ProcessEngine processEngine = configuration.buildProcessEngine();
		String taskId = "12505";
		processEngine.getTaskService().complete(taskId);
		System.out.println("完成任务, 任务ID: " + taskId);
	}
	
	
	
	/**
	 * 查询当前个人任务
	 */
	@Test
	public void findMyTaskTestLiSi() {
		ProcessEngine processEngine = configuration.buildProcessEngine();
		String assignee = "李四";
		List<Task> list = processEngine.getTaskService() // 和任务相关的service
				.createTaskQuery() // 创建任务查询对象
				.taskAssignee(assignee).list(); // 指定个人任务查询.指定办理人
		if (CollectionUtils.isEmpty(list)) {
			System.out.println(assignee +  "当前没有需要处理的任务");
			return;
		}
		for (Task task : list) {
			System.out.println("任务ID " + task.getId()); // 任务ID 12505
			System.out.println("任务名称 " + task.getName()); // 任务名称 提交请假单
			System.out.println("任务的创建时间 " + task.getCreateTime()); // 任务的创建时间 Thu Aug 27 12:47:26 CST 2020
			System.out.println("任务的办理人 " + task.getAssignee()); // 任务的办理人 李四
			System.out.println("流程实例ID " + task.getProcessInstanceId()); // 流程实例ID 12501
			System.out.println("流程对象ID " + task.getExecutionId()); // 流程对象ID 12502
			System.out.println("流程定义ID " + task.getProcessDefinitionId()); // 流程定义ID helloworld:5:10004
			System.out.println("----------------------------------------------");
		}
	}
}

官网Demo下载

activiti-6.0.0下载

原文地址:https://www.cnblogs.com/cfb513142804/p/13570151.html