在camunda中使用java api完成简单的审核流程
时间: 2024-02-01 12:13:36 浏览: 87
camunda-rest-client:用于rest api的Java客户端
假设我们要实现一个简单的请假流程,包括提交申请、经理审核、人事审核三个步骤。在 Camunda 中使用 Java API 完成该流程可以分为以下几个步骤:
1. 创建 Camunda 流程引擎并获取 RuntimeService 和 TaskService 对象。
```java
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
TaskService taskService = processEngine.getTaskService();
```
2. 部署流程定义文件。
```java
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("leave_process.bpmn")
.deploy();
```
3. 启动流程实例并设置流程变量。
```java
Map<String, Object> variables = new HashMap<>();
variables.put("applicant", "John");
variables.put("manager", "Alice");
variables.put("hr", "Bob");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leave_process", variables);
```
4. 完成经理审核任务。
```java
Task managerTask = taskService.createTaskQuery()
.taskAssignee("Alice")
.singleResult();
taskService.complete(managerTask.getId());
```
5. 完成人事审核任务。
```java
Task hrTask = taskService.createTaskQuery()
.taskAssignee("Bob")
.singleResult();
taskService.complete(hrTask.getId());
```
完整代码示例:
```java
import org.camunda.bpm.engine.ProcessEngine;
import org.camunda.bpm.engine.ProcessEngines;
import org.camunda.bpm.engine.RuntimeService;
import org.camunda.bpm.engine.TaskService;
import org.camunda.bpm.engine.repository.Deployment;
import org.camunda.bpm.engine.runtime.ProcessInstance;
import org.camunda.bpm.engine.task.Task;
import java.util.HashMap;
import java.util.Map;
public class LeaveProcess {
public static void main(String[] args) {
// 创建 Camunda 流程引擎并获取 RuntimeService 和 TaskService 对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
TaskService taskService = processEngine.getTaskService();
// 部署流程定义文件
Deployment deployment = processEngine.getRepositoryService().createDeployment()
.addClasspathResource("leave_process.bpmn")
.deploy();
// 启动流程实例并设置流程变量
Map<String, Object> variables = new HashMap<>();
variables.put("applicant", "John");
variables.put("manager", "Alice");
variables.put("hr", "Bob");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leave_process", variables);
// 完成经理审核任务
Task managerTask = taskService.createTaskQuery()
.taskAssignee("Alice")
.singleResult();
taskService.complete(managerTask.getId());
// 完成人事审核任务
Task hrTask = taskService.createTaskQuery()
.taskAssignee("Bob")
.singleResult();
taskService.complete(hrTask.getId());
}
}
```
其中,leave_process.bpmn 是流程定义文件的名称,可以根据实际情况修改。在此示例中,我们将申请人、经理和人事的名字作为流程变量传递给流程实例。在实际应用中,可以根据需要添加更多的流程变量。
阅读全文