`

Activiti获取待办任务信息

 
阅读更多
根据userid获得TaskQuery然后再获得HistoricTaskInstance然后再赋值到页面需要的BO。
/**
	 * 
	 *@User :Test
	 *@date :2014-6-27 上午09:53:09
	 *@return :List
	 *@userFor :获得待办任务列表
	 */
	public List getCurrentWorkList(int pageNo, int pageSize, String sort,
			String dir, TaskQueryBo taskQueryBo) {
		if (pageNo <= 1)
			pageNo = 1;
		if (pageSize <= 1)
			pageSize = 0xf423f;
		int start = (pageNo - 1) * pageSize;
		int limit = pageSize;
		List tasks = new ArrayList();
		TaskQuery taskQuery = getTaskQuery(taskQueryBo);
		// 根据用户id得到任务列表
		List todoList = ((TaskQuery) ((TaskQuery) taskQuery
				.orderByTaskPriority().desc()).orderByTaskCreateTime().desc())
				.listPage(start, limit);
		tasks.addAll(todoList);
		List taskBoList = new ArrayList();
		TaskBo taskBo;
		// TaskQuery转换成Task
		for (Iterator iterator = tasks.iterator(); iterator.hasNext(); taskBoList
				.add(taskBo)) {
			Task task = (Task) iterator.next();
			taskBo = getTaskDetail(task.getId());
		}

		return taskBoList;
	}

	/**
	 * 
	 *@User :Test
	 *@date :2014-6-27 上午09:55:12
	 *@return :TaskQuery
	 *@userFor :根据不同的条件获得任务列表 TaskQuery
	 */
	private TaskQuery getTaskQuery(TaskQueryBo taskQueryBo) {
		TaskQuery taskQuery = taskService.createTaskQuery();
		if (taskQueryBo != null) {
			String candidateUser = taskQueryBo.getCandidateUser();
			if (StringUtil.hasText(candidateUser))
				taskQuery = taskQuery.taskCandidateUser(candidateUser);
			String systemName = taskQueryBo.getSystemName();
			if (StringUtil.hasText(systemName))
				taskQuery = taskQuery.processVariableValueEquals(
						"processCategory", systemName);
			String workflowName = taskQueryBo.getWorkflowName();
			if (StringUtil.hasText(workflowName))
				taskQuery = taskQuery.taskDefinitionKey(workflowName);
			String taskId = taskQueryBo.getTaskId();
			if (StringUtil.hasText(taskId))
				taskQuery = taskQuery.taskId(taskId);
		}
		return taskQuery;
	}

	public TaskBo getTaskDetail(String taskId) {
		TaskBo taskBo;
		HistoricTaskInstance historicTaskInstance = (HistoricTaskInstance) historyService
				.createHistoricTaskInstanceQuery().taskId(taskId)
				.singleResult();
		taskBo = null;
		if (historicTaskInstance != null)
			taskBo = setTaskBo(historicTaskInstance);
		return taskBo;
	}
	/**
	 * 
	 *@User   :Test
	 *@date   :2014-6-27 上午09:59:45
	 *@return :TaskBo
	 *@userFor :设置页面需要的字段信息 HistoricTaskInstance
	 */
	private TaskBo setTaskBo(HistoricTaskInstance task) {
		TaskBo taskBo = new TaskBo();
		taskBo.setTaskId(task.getId());
		taskBo.setTaskName(task.getName());
		taskBo.setApproveUserName(task.getAssignee() != null ? getUserName(task
				.getAssignee()) : "");
		taskBo.setStartTime(task.getStartTime() != null ? DateTimeUtil
				.getFormatDate(task.getStartTime(),
						WorkflowConstants.DATEFORMATSTRING) : "");
		if (task.getEndTime() == null)
			taskBo.setEndTime("");
		else
			taskBo.setEndTime(DateTimeUtil.getFormatDate(task.getEndTime(),
					WorkflowConstants.DATEFORMATSTRING));
		taskBo.setDueTime(task.getDueDate() != null ? DateTimeUtil
				.getFormatDate(task.getDueDate(),
						WorkflowConstants.DATEFORMATSTRING) : "");
		ProcessDefinition processDefinition = (ProcessDefinition) repositoryService
				.createProcessDefinitionQuery().processDefinitionId(
						task.getProcessDefinitionId()).singleResult();
		taskBo.setBusinessName(processDefinition.getName());
		taskBo.setWorkflowName(processDefinition.getKey());
		//流程状态
		taskBo.setStatus(processDefinition.isSuspended() ? "已挂起" : "正常");
		taskBo.setVersion(String.valueOf(processDefinition.getVersion()));
		HistoricProcessInstance historicProcessInstance = (HistoricProcessInstance) historyService
				.createHistoricProcessInstanceQuery().processInstanceId(
						task.getProcessInstanceId()).singleResult();
		//得到业务id即eventid
		taskBo.setBusinessEventId(historicProcessInstance.getBusinessKey());
		//发起人姓名
		if (historicProcessInstance.getStartUserId() != null)
			taskBo.setStartUserName(getUserName(historicProcessInstance
					.getStartUserId()));
		else
			taskBo.setStartUserName("");
		taskBo.setWorkflowSubject(getWorkflowVariable(historicProcessInstance
				.getId(), WorkflowConstants.WORKFLOWSUBJECT));
		return taskBo;
	}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Flowable从入门到精通

    从基础讲起,结合应用场景,由浅到深细化讲解BPMN和Flowable的相关组件,并结合具体...5.1.3 查询待办任务 5.1.4 提交任务 5.1.5 查询候选任务 5.1.6 获取候选任务 5.1.7 通过流程实例ID查询任务流转图 5.2 实战案例二

    JAVA上百实例源码以及开源项目

     关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...

    JAVA上百实例源码以及开源项目源代码

     关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...

    java开源包1

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包11

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包2

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包3

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包6

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包5

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包10

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包4

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包8

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包7

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包9

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包101

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    Java资源包01

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

Global site tag (gtag.js) - Google Analytics