工作流

来源:互联网 发布:服务器带宽测试软件 编辑:程序博客网 时间:2024/05/01 18:07

1、部署业务流程图及查询

 

核心操作类

管理流程定义  RepositoryService

核心方法

repositoryService.createDeployment()//创建部署对象

.name(filename)//添加部署名称

.addZipInputStream(zipInputStream)//

.deploy();//完成部署

   `act_re_deployment`

List<Deployment> list = repositoryService.createDeploymentQuery()//创建部署对象查询            .orderByDeploymenTime().asc()//

.list();

   `act_re_procdef`

List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery()//创建流程定义查询

.orderByProcessDefinitionVersion().asc()//

.list();

查看流程图

根据部署id和图片名字查询   `act_ge_bytearray`

 

repositoryService.getResourceAsStream(deploymentId, imageName);

 

2、业务管理

当提交一个任务时,启动流程在这里启动的流程实例关联业务,所以运行流程实例表(`act_ru_execution`)的同时还需要设置流程办理人,根据流程定义id启动流程

核心操作类  RuntimeService  

执行管理,包括启动、推进、删除流程实例等操作

 

runtimeService.startProcessInstanceByKey(key,objId,variables);

 

任务管理

   查询任务

TaskService   任务管理

查询任务肯定用到任务管理类

肯定是根据办理人查询

List<Task> list = taskService.createTaskQuery()//

.taskAssignee(name)//指定个人任务查询

.orderByTaskCreateTime().asc()//

.list();

   任务详情

 

首先根据任务查询业务这就要用到启动流程设置的 business_key 查找业务,

然后还要知道任务完成后的连线名称

任务历史审核人信息

 

得到business_key存在于流程实例中

在这里操作的是流程实例,所以用到的service是   runtimeService

//2:使用任务对象Task获取流程实例ID

String processInstanceId = task.getProcessInstanceId();

//3:使用流程实例ID,查询正在执行的执行对象表,返回流程实例对象

ProcessInstance pi = runtimeService.createProcessInstanceQuery()//

.processInstanceId(processInstanceId)//使用流程实例ID查询

.singleResult();

 

 

连线名称存在于流程实体中,通过流程id查询流程定义实体对象 既然是

定义那么service 必然是repositoryService

同时我们要知道流程运行到哪一步了,那么我们必须得到流程实例对象的活动id

//使用流程实例ID,查询正在执行的执行对象表,返回流程实例对象

ProcessInstance pi = runtimeService.createProcessInstanceQuery()//

.processInstanceId(processInstanceId)//使用流程实例ID查询

.singleResult();

//获取当前活动的id

String activityId = pi.getActivityId();

最后我们用流程实体根据活动id就可以查询到连线名称了

ActivityImpl activityImpl = processDefinitionEntity.findActivity(activityId);

//5:获取当前活动完成之后连线的名称

List<PvmTransition> pvmList = activityImpl.getOutgoingTransitions();

 

 

历史批注

通过流程实例id就可以得到。

list = taskService.getProcessInstanceComments(processInstanceId);

 

   完成任务

首先要添加当前任务审核人及批注

Authentication.setAuthenticatedUserId(SessionContext.get().getName());

通过传过来的参数告知任务走那条线

taskService.addComment(taskId, processInstanceId, message);

 

然后完成任务

taskService.complete(taskId, variables);

 

最后如果任务完成,更新业务状态状态。

 

画流程图

流程定义 id与业务bean相同。

 

 

定义任务id和名称

 

定义任务办理人及办理动作方法

 

定义连线id和名称

 

定义连线的条件

 

 

 

通过指定类,指定任务办理人

0 0