使用camunda在java代码中创建一个简单的请假流程
时间: 2023-09-16 08:14:22 浏览: 159
activiti简单的请假流程java代码
4星 · 用户满意度95%
首先你需要在你的项目中添加 Camunda 相关的依赖,例如在 Maven 中添加以下依赖:
```xml
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-engine</artifactId>
<version>7.14.0</version>
</dependency>
```
然后你需要创建一个 BPMN 文件来定义你的请假流程。例如,你可以创建一个名为 `leave-process.bpmn` 的文件,其中包含以下步骤:
1. 开始事件(Start Event)
2. 用户任务(User Task):请假申请
3. 排他网关(Exclusive Gateway):根据请假天数决定审批人
4. 用户任务(User Task):部门经理审批
5. 用户任务(User Task):总经理审批
6. 结束事件(End Event)
这个 BPMN 文件的 XML 可以长成这样:
```xml
<bpmn2:definitions xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
id="Definitions_1">
<bpmn2:process id="leave-process" isExecutable="true">
<bpmn2:startEvent id="start-event" name="Start"></bpmn2:startEvent>
<bpmn2:userTask id="leave-application" name="请假申请"></bpmn2:userTask>
<bpmn2:exclusiveGateway id="exclusive-gateway" name="根据请假天数决定审批人"></bpmn2:exclusiveGateway>
<bpmn2:userTask id="department-manager-approval" name="部门经理审批"></bpmn2:userTask>
<bpmn2:userTask id="general-manager-approval" name="总经理审批"></bpmn2:userTask>
<bpmn2:endEvent id="end-event" name="End"></bpmn2:endEvent>
<bpmn2:sequenceFlow id="flow1" sourceRef="start-event" targetRef="leave-application"/>
<bpmn2:sequenceFlow id="flow2" sourceRef="leave-application" targetRef="exclusive-gateway"/>
<bpmn2:sequenceFlow id="flow3" sourceRef="exclusive-gateway" targetRef="department-manager-approval">
<bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${days <= 3}]]></bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="flow4" sourceRef="exclusive-gateway" targetRef="general-manager-approval">
<bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${days > 3}]]></bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="flow5" sourceRef="department-manager-approval" targetRef="end-event"/>
<bpmn2:sequenceFlow id="flow6" sourceRef="general-manager-approval" targetRef="end-event"/>
</bpmn2:process>
</bpmn2:definitions>
```
其中,`${days}` 表示请假天数,根据请假天数的不同,审批人也会不同。
接下来,在你的 Java 代码中,你可以使用 Camunda 的 API 来创建一个简单的请假流程实例。例如:
```java
public static void main(String[] args) {
// 创建流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 部署流程定义
Deployment deployment = processEngine.getRepositoryService()
.createDeployment()
.addClasspathResource("leave-process.bpmn")
.deploy();
// 启动流程实例
Map<String, Object> variables = new HashMap<>();
variables.put("days", 2);
processEngine.getRuntimeService()
.startProcessInstanceByKey("leave-process", variables);
// 关闭流程引擎
processEngine.close();
}
```
这个代码会启动一个请假流程实例,并且根据请假天数自动指定审批人。你可以根据需要修改这个代码,添加更多的步骤和条件分支。
阅读全文