activiti常用api

来源:互联网 发布:阿里云短信授权书 编辑:程序博客网 时间:2024/06/05 04:32

表详细注释:
act_hi_actinst  #活动历史表,记录所有活动。活动包括任务,所以此表中不仅记录了任务,还记录了流程执行过程的其它活动,比如开始事件、结束事件。
                ACT_ID_->流程节点的id
                ACT_NAME_->流程节点的名字
                DURATION->流程开始到结束的时间

act_hi_procinst #流程实例历史表。流程实例启动,会在此表插入一条记录,流程实例运行完成记录也不会删除

act_hi_varinst  #历史流程变量表

act_re_deployment #流程定义部署表,记录流程部署信息

act_re_procdef #流程定义表,记录流程定义信息
注:一个部署有多个定义


 act_ru_identitylink #任务参与者,记录当前参与任务的用户或组.当前任务如果设置了候选人,会向该表插入候选人记录,有几个候选就插入几个.对应的还有一张                                    历史表act_hi_identitylink,向act_ru_identitylink插入记录的同时也会向历史表插入记录。任务完成

 act_ru_execution #流程实例执行表,记录当前流程实例的执行情况。一个流程实例运行完成,此表中与流程实例相关的记录删除。
 
 act_ru_task #任务执行表,记录当前执行的任务。说明:启动流程实例,流程当前执行到第一个任务结点,此表会插入一条记录表示当前任务的执行情况,如果任务                            完成则记录删除。由于该任务当前是组任务,所有assignee为空,当拾取任务后该字段就是拾取用户的id

act_ru_variable #当前执行流程变量表



部署流程:

Deployment deploy = repositoryService.createDeployment().addInputStream(bpmn, imputBpmn).addInputStream(bpmn1,imputBpmn1).deploy();
System.out.println("部署ID:"+deploy.getId());


查询部署的流程定义:
List<ProcessDefinition> list = 
repositoryService.createProcessDefinitionQuery()
.processDefinitionKey(processDefinitionKey)
.orderByProcessDefinitionVersion().desc().list();//按照版本排序
for (ProcessDefinition processDefinition : list) {
System.out.println("------------------------");
************System.out.println("流程部署id:" + processDefinition.getDeploymentId());
System.out.println("流程定义id:" + processDefinition.getId());
System.out.println("流程定义名称:" + processDefinition.getName());
System.out.println("流程定义key:" + processDefinition.getKey());
System.out.println("流程定义版本:" + processDefinition.getVersion());
}


删除流程部署:
repositoryService.deleteDeployment(deploymentId);




开启流程实例:
//单流程流程实例和流程执行实例相同,对于并发的,流程实例只有一个,流程执行实例有多个
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(key);
System.out.println("流程活动节点:"+processInstance.getActivityId());
System.out.println("流程定义KEY:"+processInstance.getProcessDefinitionId());
System.out.println("流程实例ID:"+processInstance.getProcessInstanceId());
System.out.println("流程执行实例ID:"+processInstance.getId());




启动流程时设置任务发起人
identityService.setAuthenticatedUserId(userId);




查询正在运行的流程实例:
ProcessInstanceQuery processInstanceKey = runtimeService.createProcessInstanceQuery().processDefinitionKey("myProcess");
List<ProcessInstance> list = processDefinitionKey.list();
for (ProcessInstance processInstance : list) {
System.out.println("流程活动节点:"+processInstance.getActivityId());
System.out.println("流程定义KEY:"+processInstance.getProcessDefinitionId());
System.out.println("流程实例ID:"+processInstance.getProcessInstanceId());
System.out.println("流程执行实例ID:"+processInstance.getId());
System.out.println("该实例是否执行完成:" + processInstance.isEnded());
System.out.println("是否暂停:" + processInstance.isSuspended());
}


流程的挂起和激活
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
//是否暂停
boolean suspend = processDefinition.isSuspended();
if(suspend){
//如果暂停则激活,这里将流程定义下的所有流程实例全部激活
repositoryService.activateProcessDefinitionById(processDefinitionId, true, null);
System.out.println("流程定义:"+processDefinitionId+"激活");
}else{
//如果激活则挂起,这里将流程定义下的所有流程实例全部挂起
repositoryService.suspendProcessDefinitionById(processDefinitionId, true, null);
System.out.println("流程定义:"+processDefinitionId+"挂起");
}


}


单个流程实例挂起
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
boolean suspend = processInstance.isSuspended();
if(suspend){
//如果暂停则激活
runtimeService.activateProcessInstanceById(processInstanceId);
System.out.println("流程实例:"+processInstanceId+"激活");
}else{
//如果激活则挂起
runtimeService.suspendProcessInstanceById(processInstanceId);
System.out.println("流程实例:"+processInstanceId+"挂起");
}
}






查询所有的未完成的任务:
List<Task> list = taskService.createTaskQuery().processDefinitionKey("myProcess")//
//.taskAssignee(assignee)//只查询该任务负责人的任务
.list();
for (Task task : list) {
System.out.println("流程实例id:" + task.getProcessInstanceId());
System.out.println("任务id:" + task.getId());
System.out.println("任务负责人:" + task.getAssignee());
System.out.println("任务名称:" + task.getName());


}




全局--在启动流程实例时设置流程变量
Map<String, Object> variables = new HashMap<String, Object>();
//设置流程变量assignee
variables.put("assignee", "张三");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, variables);




全局--办理任务设置流程变量
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("assignee", "张三");
taskService.complete(taskId, variables);




局部--办理任务设置流程变量
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("assignee", "张三");
// 设置local变量,作用域为该任务
        taskService.setVariablesLocal(tasked, variables);
taskService.complete(taskId);









查询已经结束的流程
List<HistoricProcessInstance> list = historyService.createHistoricProcessInstanceQuery().processDefinitionKey(processDefinitionKey)
.finished().list();//只查询已结束的流程
for (HistoricProcessInstance historicProcessInstance : list) {
System.out.println("流程定义id:"+ historicProcessInstance.getProcessDefinitionId());
System.out.println("流程实例id:" + historicProcessInstance.getId());
System.out.println("开始时间:" + historicProcessInstance.getStartTime());
System.out.println("结束时间:" + historicProcessInstance.getEndTime());
System.out.println("持续时长:"+ historicProcessInstance.getDurationInMillis());
}


查询流程历史任务
List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery().processDefinitionKey(processDefinitionKey)
.processInstanceId("")//指定流程实例id
//.taskAssignee("")//只查询某个的历史任务
.list();
//遍历历史任务
for(HistoricTaskInstance historicTaskInstance:list){
System.out.println("任务id:"+historicTaskInstance.getId());
System.out.println("任务标识:"+historicTaskInstance.getTaskDefinitionKey());
System.out.println("任务名称:"+historicTaskInstance.getName());
System.out.println("任务负责人:"+historicTaskInstance.getAssignee());
System.out.println("任务开始时间:"+historicTaskInstance.getStartTime());
System.out.println("任务结束时间:"+historicTaskInstance.getEndTime());
System.out.println("持续时长:"+historicTaskInstance.getDurationInMillis());
}




添加组信息
if(identityService.createGroupQuery().groupId("10").singleResult()==null){
GroupEntity groupEntity = new GroupEntity();
groupEntity.setId("10");
groupEntity.setName("员工");


identityService.saveGroup(groupEntity);
}
if(identityService.createGroupQuery().groupId("11").singleResult()==null){
GroupEntity groupEntity = new GroupEntity();
groupEntity.setId("11");
groupEntity.setName("部门经理");


identityService.saveGroup(groupEntity);
}

添加人员信息
if(identityService.createUserQuery().userId("zhangsan").singleResult()==null){
UserEntity userEntity = new UserEntity();
userEntity.setId("zhangsan");
userEntity.setFirstName("张三");
userEntity.setLastName("");
identityService.saveUser(userEntity);
}
if(identityService.createUserQuery().userId("lisi").singleResult()==null){
UserEntity userEntity = new UserEntity();
userEntity.setId("lisi");
userEntity.setFirstName("李四");
userEntity.setLastName("");
identityService.saveUser(userEntity);
}


添加用户和组的关系
identityService.deleteMembership("zhangsan", "10");
identityService.createMembership("zhangsan", "10");
identityService.deleteMembership("lisi", "11");
identityService.createMembership("lisi", "11");













原创粉丝点击