flowable工作流审批状态
时间: 2023-10-06 10:13:42 浏览: 107
flowable工作流的审批状态可以通过查询流程任务来获取。根据业务需求,我们可以先通过权限关系表获取当前登录人可以审批的流程信息,然后再根据这些信息查询待审批的任务节点。在flowable的数据库中,审批状态通常会存储在任务表中的状态字段中。具体状态值会根据业务需求而定,常见的审批状态包括待审批、已通过、已驳回等。通过查询任务表,我们可以获取到每个任务节点的审批状态。
相关问题
flowable工作流使用示例
Flowable是一个开源的工作流引擎,用于实现企业内部的业务流程管理。它提供了一套强大且灵活的工作流功能,可以帮助企业实现高效的任务分配、流程管理和决策。下面是一个Flowable工作流使用示例的描述:
假设我们有一个采购审批流程,包含以下几个步骤:提交申请、主管审批、部门经理审批和财务审批。
首先,我们需要定义这个流程的模型。可以使用Flowable提供的BPMN 2.0标准来绘制流程图,或者使用Flowable自带的流程设计器来设计流程模型。在设计过程中,可以设置每个步骤的处理人、流程变量等信息。
然后,我们可以使用Flowable的API来编写代码,实现流程的部署和执行。通过Flowable的部署API,我们可以将流程模型部署到Flowable的引擎中。通过Flowable的运行API,我们可以启动流程实例,并管理流程的执行。
在我们的采购审批流程中,当一个员工提交申请后,流程会自动启动一个流程实例。然后,主管、部门经理和财务根据设定的顺序依次审批申请。每个步骤的审批结果都会影响流程的后续走向。
例如,如果主管拒绝了申请,流程会直接结束。如果主管通过了申请,流程会继续到下一个步骤,即部门经理审批。如果部门经理也通过了申请,流程会进入最后一个步骤,即财务审批。最后,如果财务同意了申请,流程会成功结束。否则,流程也会结束,并且申请被拒绝。
在流程的执行过程中,我们可以使用Flowable提供的监听器功能来监控流程的状态。通过监听器,我们可以获取流程的各个阶段信息,比如流程启动、任务分配、任务完成等。这些信息可以用于流程的监控和统计分析。
总之,Flowable提供了一个灵活且易于使用的工作流引擎,可以用于各种企业业务流程的管理和优化。以上是一个简单的Flowable工作流使用示例,希望对您有所帮助。
flowable工作流实现加代码
好的,以下是一个简单的使用Flowable实现工作流的示例代码。这个示例演示的是一个请假流程,包含提交请假申请、经理审批和人事审批三个步骤。
首先,需要创建一个BPMN流程定义文件,例如 `leave_process.bpmn20.xml`:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:flowable="http://flowable.org/bpmn"
targetNamespace="http://www.flowable.org/processdef">
<process id="leaveProcess" name="请假流程" isExecutable="true">
<startEvent id="start" name="开始"/>
<userTask id="applyLeave" name="提交请假申请" flowable:assignee="${applyUserId}">
<extensionElements>
<flowable:formProperty id="leaveType" name="请假类型" type="string" required="true"/>
<flowable:formProperty id="leaveDays" name="请假天数" type="long" required="true"/>
<flowable:formProperty id="leaveReason" name="请假原因" type="string" required="false"/>
</extensionElements>
</userTask>
<userTask id="approveByManager" name="经理审批" flowable:assignee="${managerId}">
<extensionElements>
<flowable:formProperty id="approveStatus" name="审批状态" type="string" required="true">
<flowable:value>同意</flowable:value>
<flowable:value>驳回</flowable:value>
</flowable:formProperty>
<flowable:formProperty id="approveReason" name="审批意见" type="string" required="false"/>
</extensionElements>
</userTask>
<userTask id="approveByHR" name="人事审批" flowable:assignee="${hrId}">
<extensionElements>
<flowable:formProperty id="approveStatus" name="审批状态" type="string" required="true">
<flowable:value>同意</flowable:value>
<flowable:value>驳回</flowable:value>
</flowable:formProperty>
<flowable:formProperty id="approveReason" name="审批意见" type="string" required="false"/>
</extensionElements>
</userTask>
<endEvent id="end" name="结束"/>
<sequenceFlow id="flow1" sourceRef="start" targetRef="applyLeave"/>
<sequenceFlow id="flow2" sourceRef="applyLeave" targetRef="approveByManager"/>
<sequenceFlow id="flow3" sourceRef="approveByManager" targetRef="approveByHR"/>
<sequenceFlow id="flow4" sourceRef="approveByHR" targetRef="end"/>
</process>
</definitions>
```
然后,可以使用Flowable提供的API进行部署和启动流程实例,例如:
```java
// 创建流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 部署流程定义
DeploymentBuilder deploymentBuilder = processEngine.getRepositoryService().createDeployment();
deploymentBuilder.addClasspathResource("leave_process.bpmn20.xml").deploy();
// 启动流程实例
Map<String, Object> variables = new HashMap<>();
variables.put("applyUserId", "zhangsan");
variables.put("managerId", "lisi");
variables.put("hrId", "wangwu");
variables.put("leaveType", "病假");
variables.put("leaveDays", 3);
processEngine.getRuntimeService().startProcessInstanceByKey("leaveProcess", variables);
```
接下来,可以使用API完成流程中的任务,例如:
```java
// 经理审批通过
Task task = processEngine.getTaskService().createTaskQuery().taskAssignee("lisi").singleResult();
Map<String, Object> taskVariables = new HashMap<>();
taskVariables.put("approveStatus", "同意");
taskVariables.put("approveReason", "无问题");
processEngine.getTaskService().complete(task.getId(), taskVariables);
// 人事审批驳回
task = processEngine.getTaskService().createTaskQuery().taskAssignee("wangwu").singleResult();
taskVariables = new HashMap<>();
taskVariables.put("approveStatus", "驳回");
taskVariables.put("approveReason", "请假时间不充分");
processEngine.getTaskService().complete(task.getId(), taskVariables);
```
最后,可以使用API查询流程实例的状态和历史记录,例如:
```java
// 查询流程实例状态
ProcessInstance processInstance = processEngine.getRuntimeService().createProcessInstanceQuery().processInstanceBusinessKey("leaveProcess").singleResult();
if (processInstance == null) {
System.out.println("流程已结束");
} else {
System.out.println("流程未结束");
}
// 查询流程历史记录
List<HistoricTaskInstance> taskInstances = processEngine.getHistoryService().createHistoricTaskInstanceQuery().processDefinitionKey("leaveProcess").list();
for (HistoricTaskInstance instance : taskInstances) {
System.out.println(instance.getAssignee() + ": " + instance.getName() + " (" + instance.getStartTime() + " - " + instance.getEndTime() + ")");
}
```
这只是一个简单的示例,实际上Flowable提供了更丰富的API和工具,可以满足各种复杂的工作流需求。