activiti常用api

原创 2017年10月13日 18:28:23

表详细注释:
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");













版权声明:本文为博主原创文章,未经博主允许不得转载。

activiti工作流常用api

1、绑定启动流程的当前用户          在启动流程时,先调用            identityService.setAuthenticatedUserId(user)...
  • techn_panda
  • techn_panda
  • 2017年02月04日 16:18
  • 3013

Activiti入门教程六(详解Activiti中的查询API)

这篇博客呢,主要通过用户组为例,在把Activiti中的查询的API跟学习一下。任何知识,都能发现共同点,所以以后我们在学习的道路上面,一定要多多发现知识的共同点,建立知识之间的联系,这回让自己事半功...
  • ZHOUCHAOQIANG
  • ZHOUCHAOQIANG
  • 2015年09月20日 16:07
  • 4506

(四)activiti的几个核心类

先来一张图:              在前几篇文章汇中已经集成好了activiti,最后我们获取到的是activiti对外提供的7个核心服务,所有针对activiti的操作都是使用这7个核心服务来...
  • sxyandapp
  • sxyandapp
  • 2016年02月04日 11:47
  • 2215

activiti入门2流程引擎的API和服务基础

RepositoryService : 管理和控制发布包和流程定义(包含了一个流程每个环节的结构和行为)的操作 除此之外,服务可以 查询引擎中的发布包和流程定义。 暂停或激活发布包,对应全部和特定流程...
  • a67474506
  • a67474506
  • 2014年10月23日 15:49
  • 3876

Activiti学习笔记二 核心API

上一篇简单记录了工作流的概念,以及对Activiti5进行了简单介绍,生成了23张数据库表。 这一篇记录下Activiti的几个核心API。 引擎API(图例) 一. ProcessEngine ...
  • qq710262350
  • qq710262350
  • 2014年12月15日 14:10
  • 1009

Activiti 核心API 简介

1、ProcessEngine说明: 1) 在Activiti中最核心的类,其他的类都是由他而来。 2) 产生方式: ProcessEngine processEngine=Process...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2016年08月28日 22:07
  • 1770

Activiti API

  • 2017年05月20日 15:50
  • 933KB
  • 下载

activiti-5.22-API

  • 2016年11月14日 14:33
  • 659KB
  • 下载

Activiti 组件介绍与 API

  • 2015年01月27日 14:11
  • 856KB
  • 下载

Activiti入门教程八(玩转Task任务API)

经过几年的学习,现在才感觉,了解源码是多么的重要,甚至如今火热的培训班的老师也是这样过来的吧!一点一点的分析源码,再加上一点一点的思考和总结,才能够对知识了解的那么深刻吧!原来学习就是如此的简单。  ...
  • ZHOUCHAOQIANG
  • ZHOUCHAOQIANG
  • 2015年09月21日 19:35
  • 11997
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:activiti常用api
举报原因:
原因补充:

(最多只允许输入30个字)