`

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;
	}
分享到:
评论
发表评论

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

相关推荐

    Activiti待办事项查询VIEW

    "Activiti待办事项查询VIEW"是一个关于使用Activiti工作流引擎进行待办任务查询的专题,主要关注如何在实际应用中实现用户界面的展示。Activiti是一个开源的业务流程管理(BPM)和工作流引擎,广泛应用于企业级应用...

    activiti5工作流demo

    - **任务处理**:理解如何通过 Activiti API 获取待办任务,完成任务并传递到下一个步骤。 - **流程变量**:如何设置和获取流程变量,它们是流程中传递信息的关键。 - **监听器与事件**:利用监听器可以对流程中的...

    SpringBoot集成Activiti案例

    通过调用Activiti的API,我们可以获取当前用户(或角色)的待办任务。每个待办任务包含任务ID、任务名称、执行人等信息。用户可以选择任务并进行处理,比如填写表单、审批等。完成任务后,Activiti会自动更新流程...

    activiti-5.16中文API

    3. **任务操作**:Activiti的任务管理API允许开发者获取待办任务列表、领取任务、完成任务、分配任务给特定用户或组,以及设置和获取任务变量。 4. **变量处理**:在流程执行过程中,可能会涉及到各种变量的设置和...

    oa-activity.zip

    Activiti提供了获取待办任务(Todo)的功能,这些待办任务代表了当前需要用户处理的工作流步骤。待办任务可以通过查询服务根据用户或特定条件来获取。 5. **代办人传值**: 在流转过程中,可能需要传递信息给不同...

    ActivitiDemo

    此外,如果涉及到用户界面交互,那么前端部分可能会使用到Spring MVC或其它Web框架,通过AJAX请求与后端进行通信,显示和处理待办任务。 总结来说,"ActivitiDemo"是一个演示如何将Activiti工作流引擎集成到Spring...

    activiti原型和代码

    4. **任务的处理**:查询当前用户待办任务,完成任务,或者模拟用户行为以推进流程。 5. **流程变量的管理**:设置、获取和更新流程中的变量,这些变量可以用来传递信息和控制流程行为。 6. **监听器和事件**:...

    activiti测试(部署,启动,查看状态,查看私有和公有任务)

    查看这些任务通常涉及使用Activiti的工作流查询服务,获取待办事项列表,并可能包括任务的分配、认领、完成等操作。 在进行这些操作时,了解BPMN 2.0标准是至关重要的,因为这是Activiti支持的流程建模语言。BPMN...

    test-activiti_activiti_DEMO_activitidemo_

    在流程实例运行过程中,用户可以通过任务查询服务(TaskQueryService)获取待办任务(Todo List),然后进行审批或驳回。这通常涉及到调用 `claim(Task task)` 来领取任务,`complete(Task task, Map, Object&gt; ...

    activiti的说明文档

    - **任务列表**: 展示待办任务。 - **领取任务**: 用户领取任务。 - **完成任务**: 用户完成任务。 - **结束流程**: 结束流程实例。 - **代码总结**: 代码示例分析。 - **更多思考**: 进一步探讨BPMN的应用。 #### ...

    jfinal 和 activiti整合例子

    6. **Service层处理**:在Service层,通过Activiti的API操作流程实例,如完成任务、跳转流程节点、获取当前任务信息等。 7. **视图展示**:使用JFinal的模板引擎(如Freemarker或Velocity),设计前端页面,展示...

    jeecg-boot集成activiti demo.rar

    - **任务分配**:Jeecg-Boot可以根据Activiti的任务分配规则,将待办任务推送给相应人员。 - **流程监控**:通过Activiti的API,可以获取到流程运行状态,进行实时监控和分析。 - **历史数据查询**:记录流程的...

    springboot集成activiti demo

    7. **处理任务**:通过`TaskService`获取当前用户待办的任务,用户可以通过接口完成任务,同时更新流程变量。 8. **监控和调试**:Activiti提供了丰富的监控工具,如流程图、历史数据查询等,方便我们了解流程的...

    SpringBoot整合Activiti5.22 Demo

    例如,获取当前用户的待办任务并完成它: ```java @Autowired private TaskService taskService; List&lt;Task&gt; tasks = taskService.createTaskQuery().taskAssignee("张三").list(); for (Task task : tasks) { ...

    springboot整合activiti

    你可以通过`TaskService`获取当前用户的待办任务,并使用`CompleteTask`方法来完成它们。这通常涉及到业务逻辑的执行。 6. **监听器和回调**:你可以注册监听器以在流程的不同事件上执行操作,例如启动、完成任务或...

    Activiti7(流程引擎)简单笔记,附带作者执行的Demo代码文件

    - **任务(Task)管理**:如何获取当前用户的待办任务,如何完成任务,以及任务委托和分配。 - **监听器(Listener)**:可以监听并响应流程中的特定事件,如任务创建、完成、流程启动等,实现自定义行为。 - **...

    springboot 2.0.3+activiti 5.22 设计器整合

    这个系统不仅提供了创建、删除流程模型的功能,还支持查看待办、已办事项,以及进行流程跟踪、任务完成和撤回操作。特别的是,它还集成了网页设计器,让用户能够直观地设计和修改工作流,实现真正的"开箱即用"体验。...

    activiti-5.22.0.zip

    在SpringMVC中,通常会创建视图层来显示待办任务列表,并允许用户完成任务或传递给其他用户。 6. **监听和事件处理**:Activiti提供了丰富的事件机制,可以在流程执行的不同阶段触发自定义逻辑。通过实现`org....

    Activiti Modeler java参考代码.rar

    你可以通过`taskService.createTaskQuery()`查询当前用户待办的任务,然后使用`claim`、`complete`或`assignee`方法来处理这些任务。 6. **监听器和事件** Activiti支持事件监听器,可以监听流程中的特定事件,如...

Global site tag (gtag.js) - Google Analytics