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");













版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34921840/article/details/78229257

activiti工作流常用api

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

Activiti工作流框架学习(二)——使用Activiti提供的API完成流程操作

可以在项目中加入log4j,将logj4.properties文件拷入到src目录下,这样框架执行的sql就可以输出到到控制台,log4j提供的日志级别有以下几种: Fatal  error  wa...
  • xnf1991
  • xnf1991
  • 2016-09-26 23:00:46
  • 7313

Activiti用户指南之Activiti的API

一、流程引擎的API和服务(services)      引擎的API是影响Activiti最常见的一种方法。我们一开始最关注的中心是ProcessEngine,像之前描述的那样,流程引擎可以被...
  • sdujava2011
  • sdujava2011
  • 2015-01-30 17:03:21
  • 1631

学习Activiti工作流框架的API

1 部署流程定义 Ø 部署流程定义(方式一):将设计的流程图发布到数据库中 public void run3() { // 创建流程部署建造对象 DeploymentBuilder deplo...
  • taokai_110
  • taokai_110
  • 2015-09-15 21:41:21
  • 878

Activiti5 中文帮助文档API

  • 2017年08月16日 10:19
  • 5.25MB
  • 下载

Activiti API

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

Activiti 核心API 简介

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

activiti中文api

  • 2017年09月12日 17:04
  • 2.84MB
  • 下载

Activiti入门——环境搭建和核心API简介

相关文章: 《》 本章内容,主要讲解Activiti框架环境的搭建,能够使用Activiti的API创建23张数据库表,正式开始Activiti之旅。 在前一章,介绍了Activitie核心的数据...
  • villainy13579
  • villainy13579
  • 2015-02-03 10:30:54
  • 1534

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

RepositoryService : 管理和控制发布包和流程定义(包含了一个流程每个环节的结构和行为)的操作 除此之外,服务可以 查询引擎中的发布包和流程定义。 暂停或激活发布包,对应全部和特定流程...
  • a67474506
  • a67474506
  • 2014-10-23 15:49:41
  • 4221
收藏助手
不良信息举报
您举报文章:activiti常用api
举报原因:
原因补充:

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