activiti中的api:

activiti的API查询网址:
https://www.activiti.org/javadocs/overview-summary.html

获取任务的办理人
List<IdentityLink> identityLinkList = activitiEngine.getTaskService().getIdentityLinksForTask(task.getId());

这个和正常查询task的区别
Task task=activitiEngine.getTaskService().createTaskQuery().processInstanceId(processInstanceId).active().singleResult();

List<Task> list= activitiEngine.getTaskService().createTaskQuery().active().list();
List<Task> lsit1=activitiEngine.getTaskService().createTaskQuery().taskId(taskId).list();

这个active是什么方法:仅选择活动(即未挂起)的任务

  下面是源码的注释
  /**
   * Only selects tasks which are active (ie. not suspended)
   */
  TaskQuery active();
//查询个人的所有的代办
activitiEngine.getTaskService().createTaskQuery().taskCandidateOrAssigned(userId)
        .includeProcessVariables().active().orderByTaskCreateTime().desc().list();
不忘初心 19:01:36
大哥
不忘初心 19:02:02
这样不就能查出这个人的所有的代办任务吗?
// 用来设置启动流程的人员ID,引擎会自动把用户ID保存到activiti:initiator中identityService.setAuthenticatedUserId(userId);


taskService.createTaskQuery().taskCandidateOrAssigned(userId).list();

TaskListener 这个接口 和这个JavaDelegate 有啥区别啊。监听器不是分为流程监听器和任务监听器 JavaDelegate 这个接口是做什么的呢?
获取发布的流程的所有的任务节点
Process process = activitiEngine.getRepositoryService().getBpmnModel(processDefinitionId).getMainProcess();
		List<org.activiti.bpmn.model.Task> taskNodes = process
				.findFlowElementsOfType(org.activiti.bpmn.model.Task.class);

查看发布流程的所有节点
BpmnModel model = activitiEngine.getRepositoryService().getBpmnModel(processDefinitionId);
		if(model != null) {
		    Collection<FlowElement> flowElements = model.getMainProcess().getFlowElements();
		    for(FlowElement e : flowElements) {
		        System.out.println("flowelement id:" + e.getId() + "  name:" + e.getName() + "   class:" + e.getClass().toString());
		    }
		}
通过processInstanceId获取processDefinitionId
HistoricProcessInstance  hi=activitiEngine.getHistoryService().createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
String processDefinitionId=hi.getProcessDefinitionId();
List<HistoricTaskInstance> list = Context.getProcessEngineConfiguration().getHistoryService()
					.createHistoricTaskInstanceQuery().processInstanceId(procInstId).list();

			List<HistoricTaskInstance> taskHis = Context.getProcessEngineConfiguration().getHistoryService()
					.createHistoricTaskInstanceQuery().executionId(task.getExecutionId()).finished()
					.orderByHistoricTaskInstanceEndTime().desc().list();
			List<HistoricActivityInstance> taskHis2 = Context.getProcessEngineConfiguration().getHistoryService()
					.createHistoricActivityInstanceQuery().executionId(task.getExecutionId()).finished()
					.orderByHistoricActivityInstanceEndTime().desc().list();
			
			Task Task2 = Context.getProcessEngineConfiguration().getTaskService().createTaskQuery().taskId(taskId)
					.singleResult();
			String processInstanceId2 = Context.getProcessEngineConfiguration().getTaskService().createTaskQuery()
					.taskId(taskId).singleResult().getProcessInstanceId();
			String executionId2 = Context.getProcessEngineConfiguration().getTaskService().createTaskQuery()
					.taskId(taskId).singleResult().getExecutionId();
			// 获取流程发布Id信息
			String definitionId2 = Context.getProcessEngineConfiguration().getRuntimeService()
					.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult()
					.getProcessDefinitionId();

			processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) Context
					.getProcessEngineConfiguration().getRepositoryService()).getDeployedProcessDefinition(definitionId);

			List<Execution> execution2 = Context.getProcessEngineConfiguration().getRuntimeService()
					.createExecutionQuery().executionId(executionId).list();
			String activitiId = execution.get(0).getActivityId();
@  for (HistoricProcessInstance histTask : historicProcessInstanceList) {
 List<HistoricTaskInstance> list = processEngine.getHistoryService()
 .createHistoricTaskInstanceQuery().taskAssignee(histTask.get).
蓝色的烟(51140145) 15:51:18
在这个下边怎么取这个历史
?<miniyu@aliyun.com> 15:57:46
你是需要根据办理人查询呢 还是需要根据其他的进行查询, List<HistoricTaskInstance> list = processEngine.getHistoryService()
 .createHistoricTaskInstanceQuery().taskAssignee(histTask.get).
时根据办理人 查询办理过的 Task
蓝色的烟(51140145) 16:00:20
是提交人
?<miniyu@aliyun.com> 16:01:04
提交人不是办理人么
蓝色的烟(51140145) 16:02:48
不是办理人啊,就是他提交的单据,看看都是审批到哪里了
?<miniyu@aliyun.com> 16:03:06
发起人啊 
蓝色的烟(51140145) 16:03:40
List<HistoricProcessInstance> historicProcessInstanceList = 
historyService.createHistoricProcessInstanceQuery().startedBy(userName)
.orderByProcessInstanceStartTime().desc().listPage((int)params.get("offset"), (int)params.get("limit"));
List<StartTaskVO> startTaskVOS = new ArrayList<>();
 for (HistoricProcessInstance histTask : historicProcessInstanceList) {
 List<HistoricTaskInstance> list = processEngine.getHistoryService()
 .createHistoricTaskInstanceQuery().processInstanceId(histTask.getProcessDefinitionId()).list();
蓝色的烟(51140145) 16:03:48
对,这个取出来全是空
蓝色的烟(51140145) 16:04:03
list 是空
?<miniyu@aliyun.com> 16:04:37
按我理解 你们业务上每个单据应该都存储一个流程实例ID吧。使用流程实例id 查
蓝色的烟(51140145) 16:05:16
哪个
蓝色的烟(51140145) 16:05:18
histTask.getBusinessKey() == 7853930F259329F9E050007F01002619
histTask.getProcessDefinitionId() == project:14:370011
histTask.getProcessDefinitionKey() == project
histTask.getProcessDefinitionName() == 项目审批流程V3
蓝色的烟(51140145) 16:07:32
流程实例ID好像拿不到
List<HistoricProcessInstance> historicProcessInstanceList = 
historyService.createHistoricProcessInstanceQuery().startedBy(userName)
.orderByProcessInstanceStartTime().desc().listPage((int)params.get("offset"), (int)params.get("limit"));
蓝色的烟(51140145) 14:54:59
这个方法可以取到当前登录人所提交的所有单据
List<HistoricProcessInstance> historicProcessInstanceList = 
historyService.createHistoricProcessInstanceQuery().startedBy(userName)
.orderByProcessInstanceStartTime().desc().listPage((int)params.get("offset"), (int)params.get("limit"));
List<StartTaskVO> startTaskVOS = new ArrayList<>();
 for (HistoricProcessInstance histTask : historicProcessInstanceList) {
 StartTaskVO startVO = new StartTaskVO(histTask);
 startVO.setBusinessKey(histTask.getBusinessKey());
 startVO.setProcDefName(histTask.getProcessDefinitionName());
 startVO.setStartTime(histTask.getStartTime());
 startVO.setEndTime(histTask.getEndTime());
 UserDO user = userService.findByUserName(histTask.getStartUserId());
 startVO.setApplyUser(user!=null?user.getName():histTask.getStartUserId());
 startVO.setStatus("finish");
 startTaskVOS.add(startVO);
}
return startTaskVOS;

在这里插入图片描述

安全感(515590808) 18:07:28
这个是查询待办任务的时候用的
安全感(515590808) 18:07:37
createTaskQuery().taskCandidateUser(userId)
                .orderByTaskPriority().desc()
                .orderByTaskCreateTime().asc()
                .listPage(start, limit);    
Phoenix(1241012434) 18:08:08
感觉listPage这个有bug
安全感(515590808) 18:08:25
候选用户 候选组 代理人    还有candidateorAssignee    按照顺序查找
hoss--龚楼(783286653) 18:09:35
有啥bug
hoss--龚楼(783286653) 18:10:16
我自己没用过listPage都是自己查询act表,用自己公司的page对象的
Phoenix(1241012434) 18:10:40
和limit  offset
Phoenix(1241012434) 18:10:47
顺序感觉有点反了
Phoenix(1241012434) 18:10:54
可能没bug
Phoenix(1241012434) 18:10:58
我再试试
腔.调(291541567) 18:11:05
有bug的
安全感(515590808) 18:11:08
start  limit  有啥问题  第一个从哪里开始 第二个获取的长度 
安全感(515590808) 18:11:09
??
安全感(515590808) 18:11:25
啥bug说啊、
Phoenix(1241012434) 18:11:55
A6的
Phoenix(1241012434) 18:11:59
你自己试一下嘛
腔.调(291541567) 18:12:00
候选任务和已经认领了的和直接指定人的不能一起查出来
哪位大侠指点一下啊
深海荧光(1143715138) 11:40:10
@分享牛 老师麻烦帮忙看下,其实我的目的是把 调用子流程的流程实例中的businesskey和外部流程保持一致,这样我就可以用businesskey来查询所有的流程不管是外部还是内部的

**processEngine.getRuntimeService().updateBusinessKey 这个方法可以给流程实例更新businesskey**

RepositoryService


删除流程 不级联删除流程实例
activitiEngine.getRepositoryService().deleteDeployment(deploymentId);
删除流程 设置是否级联删除流程实例
activitiEngine.getRepositoryService().deleteDeployment(deploymentId, true);
删除流程 级联删除流程实例
activitiEngine.getRepositoryService().deleteDeploymentCascade(deploymentId);
// Process process =
		// ProcessDefinitionUtil.getProcess(task.getProcessDefinitionId());
		// FlowNode currentNode = (FlowNode)
		// process.getFlowElement(task.getTaskDefinitionKey());
		// HistoryService historyService =
		// Context.getProcessEngineConfiguration().getHistoryService();
		// return getPrevTaskNode(task.getProcessInstanceId(), currentNode,
		// process,
		// historyService);
		/*
		 * HistoricTaskInstance taskHis =
		 * Context.getProcessEngineConfiguration().getHistoryService()
		 * .createHistoricTaskInstanceQuery().executionId(task.getExecutionId())
		 * .finished()
		 * .orderByHistoricTaskInstanceEndTime().desc().list().get(0);
		 */
// ExecutionEntity execution = (ExecutionEntity)
		// activitiEngine.getRuntimeService().createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
		// 并行网管下不合适
		// Execution execution
		// =activitiEngine.getRuntimeService().createExecutionQuery().executionId(executionId).singleResult();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值