简介
Activiti 是一款轻量级的开源业务流程管理(BPM)引擎,它提供了一系列的工具和API,用于设计、执行和监控业务流程。本文将介绍如何通过一个简单的示例来入门 Activiti,帮助读者快速上手。
示例要求
在开始实例之前,我们需要做一些准备工作。首先,确保你已经安装了 Java 开发环境,并正确配置了环境变量。另外,你需要下载并安装 Activiti,可以从其官方网站或者 Maven 仓库获取,或者直接在项目的依赖中引入。
实例概述
在本示例中,我们将创建一个简单的请假流程。该流程包括三个节点:提交申请、经理审批和人事审批。具体流程如下:
- 提交申请:员工提交请假申请,包括请假天数和理由。
- 经理审批:经理收到申请后,可以选择批准或拒绝。
- 人事审批:如果经理批准了申请,人事部门将对申请进一步处理,否则流程将结束。
实例步骤
步骤一:创建工作流定义
首先,我们需要定义一个 Activiti 工作流文件(.bpmn 格式),用于描述我们的请假流程。
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti="http://activiti.org/bpmn"
targetNamespace="http://www.activiti.org/testprocess">
<process id="leaveProcess" name="请假流程">
<startEvent id="startEvent" name="开始"/>
<userTask id="applyTask" name="提交申请" activiti:candidateGroups="applicant"/>
<userTask id="managerApprovalTask" name="经理审批" activiti:candidateGroups="manager"/>
<userTask id="hrApprovalTask" name="人事审批" activiti:candidateGroups="hr"/>
<endEvent id="endEvent" name="结束"/>
<sequenceFlow id="flow1" sourceRef="startEvent" targetRef="applyTask"/>
<sequenceFlow id="flow2" sourceRef="applyTask" targetRef="managerApprovalTask"/>
<sequenceFlow id="flow3" sourceRef="managerApprovalTask" targetRef="hrApprovalTask"/>
<sequenceFlow id="flow4" sourceRef="hrApprovalTask" targetRef="endEvent"/>
</process>
</definitions>
以上代码描述了一个简单的请假流程,包括了开始节点、三个用户任务节点以及结束节点。每个用户任务节点都指定了所属的候选组。请保存该文件为 leave-process.bpmn
。
步骤二:编写 Java 代码
在本例中,我们使用 Java 代码来执行 Activiti 流程。以下是一个简单的 Java 类,用于启动并执行请假流程:
import org.activiti.engine.*;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
public class LeaveProcessExample {
public static void main(String[] args) {
// 创建流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 部署工作流定义
RepositoryService repositoryService = processEngine.getRepositoryService();
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("leave-process.bpmn")
.deploy();
// 启动并执行流程
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leaveProcess");
// 完成用户任务
TaskService taskService = processEngine.getTaskService();
Task task = taskService.createTaskQuery()
.processInstanceId(processInstance.getId())
.singleResult();
taskService.complete(task.getId());
// 关闭流程引擎
processEngine.close();
}
}
在上述代码中,我们通过 Activiti 提供的 API 完成了以下操作:
- 创建流程引擎。
- 部署工作流定义。
- 启动并执行流程。
- 完成用户任务。
- 关闭流程引擎。
步骤三:运行示例
编译并运行上述的 Java 代码,如果一切正常,你应该能够在控制台中看到输出结果。同时,你还可以通过 Activiti 提供的 Web 接口来查看和管理流程实例、任务等。
总结
本文介绍了如何通过一个简单的示例来入门 Activiti。通过该示例,读者可以了解 Activiti 的基本概念和使用方法,为进一步学习和使用 Activiti 奠定了基础。希望本文能对你有所帮助!
参考链接:
本文来自极简博客,作者:算法之美,转载请注明原文链接:Activiti 入门实例