`

Activiti获取某个流程实例已经审批的节点记录

 
阅读更多
已知businessid即eventid获得对应的审批记录

某个流程实例的节点信息都是存放在ACT_HI_ACTINST表中

business key存放在ACT_HI_PROCINST中,得到HistoricProcessInstance后获得对应的流程实例id。然后根据流程实例id获得ACT_HI_ACTINST对应的数据。即审批记录存放在ACT_HI_ACTINST中。结束时间不为空则说明已经审批完成

 /**
	 * 
	 * @CreateUser:xxxxx
	 * @ReturnType:List
	 * @param businessEventId
	 * @return
	 * @CreateDate:2014-6-10下午5:07:02
	 * @UseFor :获得某个流程实例各个节点的审批记录
	 */
	public List getApproveHistory(String businessEventId) {

		List<TaskBo> taskBoList = new ArrayList<TaskBo>();
		HistoricProcessInstance hisProcessInstance = (HistoricProcessInstance) historyService
				.createHistoricProcessInstanceQuery()
				.processInstanceBusinessKey(businessEventId).singleResult();
		// 该流程实例的所有节点审批记录
		List<HistoricActivityInstanceQuery> hisActInstList = getHisUserTaskActivityInstanceList(hisProcessInstance
				.getId());
		for (Iterator iterator = hisActInstList.iterator(); iterator.hasNext();) {
			// 需要转换成HistoricActivityInstance
			HistoricActivityInstance activityInstance = (HistoricActivityInstance) iterator
					.next();
			//如果还没结束则不放里面
			if ("".equals(taskBo.getEndTime()) || taskBo.getEndTime() == null) {
				continue;
			}
			TaskBo taskBo = new TaskBo();
			taskBo.setTaskName(activityInstance.getActivityName());
			// 获得审批人名称 Assignee存放的是审批用户id
			if (activityInstance.getAssignee() != null) {
				taskBo.setApproveUserName(getUserName(activityInstance
						.getAssignee()));
			} else {
				taskBo.setApproveUserName("");
			}
			// 获取流程节点开始时间
			taskBo.setStartTime(activityInstance.getStartTime() != null ? DateTimeUtil
					.getFormatDate(activityInstance.getStartTime(),
							WorkflowConstants.DATEFORMATSTRING) : "");
			// 获取流程节点结束时间
			if (activityInstance.getEndTime() == null) {
				taskBo.setEndTime("");
			} else {
				taskBo.setEndTime(DateTimeUtil.getFormatDate(
						activityInstance.getEndTime(),
						WorkflowConstants.DATEFORMATSTRING));
			}
			taskBoList.add(taskBo);
		}
		return taskBoList;
	}

	/**
	 * 
	 * @CreateUser:xxxx
	 * @ReturnType:List
	 * @param processInstanceId
	 * @return
	 * @CreateDate:2014-6-25下午5:03:13
	 * @UseFor :在 ACT_HI_ACTINST 表中找到对应流程实例的userTask节点 不包括startEvent
	 */
	private List<HistoricActivityInstanceQuery> getHisUserTaskActivityInstanceList(
			String processInstanceId) {
		List<HistoricActivityInstanceQuery> hisActivityInstanceList = ((HistoricActivityInstanceQuery) historyService
				.createHistoricActivityInstanceQuery()
				.processInstanceId(processInstanceId).activityType("userTask")
				.finished().orderByHistoricActivityInstanceEndTime().desc())
				.list();
		return hisActivityInstanceList;
	}

	/**
	 * 
	 * @CreateUser:xxxx
	 * @ReturnType:String
	 * @param userId
	 * @return
	 * @CreateDate:2014-6-10下午5:04:30
	 * @UseFor :获得审批人
	 */
	private String getUserName(String userId) {
		User user = (User) identityService.createUserQuery().userId(userId)
				.singleResult();
		return user.getFirstName();
	}
分享到:
评论
发表评论

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

相关推荐

    Activiti 学习笔记十:开始活动节点(判断流程是否结束及查询历史)

    查询结果返回的是 HistoricProcessInstance 对象,从中我们可以获取到流程实例的详细历史记录。 四、查询历史活动实例(HistoricActivityInstance) 除了查询整个流程实例的历史,我们还可以深入到每个活动...

    activiti代码实现审批流程的审批

    审批流程是组织中常见的业务流程,涉及不同角色的人员对某个请求或任务进行审查和批准。在Activiti中,这些流程可以通过流程定义文件(通常为`.bpmn`格式)来描述,该文件定义了各个步骤、参与者和决策规则。 在...

    Activiti 学习笔记六:流程执行历史记录

    历史记录是 Activiti 中的一个重要特性,它允许开发者和管理员查看已经执行过的流程实例和任务的详细信息。这些信息包括但不限于流程实例的启动时间、结束时间、参与者、任务完成顺序、变量变化等,对于业务分析和...

    使用activiti工作流引擎显示流程图时高亮显示流程图中已执行节点和已执行路径方法源代码

    要实现高亮显示已执行节点和路径,我们需要获取流程实例的历史数据。Activiti 提供了 HistoryService 接口,可以用来查询历史任务实例(HistoricTaskInstance)和历史流程实例(HistoricProcessInstance)。通过这些...

    Activiti工作流之流程实例、任务的执行

    【标题】"Activiti工作流之流程实例、任务的执行" 在企业级应用开发中,工作流管理系统(Workflow Management System, WfMS)扮演着重要角色,它负责自动化业务流程,确保任务按照预定义的规则有序进行。Activiti是...

    oa-activity.zip

    创建流程实例是Activiti中的关键步骤,这通常通过调用API或使用提供的工作流服务完成。在示例中,可能包含了创建请假流程的代码示例,展示如何启动一个新的流程实例。 3. **启动流程**: 启动流程涉及到激活流程...

    activiti6.0实现流程图片自定义颜色 当前任务为红色,走过的任务为绿色,自定义文字颜色连线文字显示

    1. 获取流程实例和任务信息:首先,我们需要查询数据库获取流程实例和相关任务的信息,包括任务的状态(如未完成、进行中、已完成)。 2. 遍历流程图元素:遍历流程图的各个元素,包括任务节点和连接线,然后根据...

    activiti取会签人员

    在用activiti的时候经常遇到取会签人员的问题,这个文档解决怎么获取会签人员。

    oa.rar_activiti_itcast oa activiti_审批

    5. **审批节点(Approval Nodes)**:在 BPMN 流程图中,审批节点可能是用户任务(User Task)或服务任务(Service Task),用于表示审批过程。 6. **表单(Forms)**:审批流程通常涉及填写和提交表单。Activiti ...

    activity功能代码

    在代码中,加签可能涉及对现有审批流的修改,添加新的审批节点,并更新流程实例的状态,确保所有参与者都能接收到通知并进行相应的操作。 再者,**流程变量**在BPM中用于存储流程实例运行过程中的状态信息。它们...

    简单的activiti请假流程

    在请假流程中,每个审批节点对应一个任务,审批人需要在任务列表中找到自己的任务,进行审批操作。 7. 结束流程: 当所有必要的审批环节完成,流程到达结束事件,表明请假申请已被处理完毕。Activiti会记录整个...

    activiti工作流实例

    Activiti 是一个开源的工作流引擎,它被设计用于在企业应用程序中实现业务流程自动化。这个工作流实例提供了关于如何在实际项目中应用 Activiti 的详细示例。由于网上关于 Activiti 的实例相对较少,这个实例对于...

    Activiti开发请假流程代码

    - **历史数据**:Activiti 还提供了对历史流程实例的记录,便于审计和分析。 7. **API 交互**: - **REST API** 或 **Java API**:开发者可以通过 Activiti 提供的 API 与流程引擎进行交互,启动流程实例、领取...

    activiti 5.20.0 工作流demo

    - 监控流程:使用Activiti提供的API或管理界面,可以查看流程实例的状态、历史记录等。 4. 工作流demo分析: "activitidemo"可能包含了一个完整的示例项目,展示了如何整合和使用Activiti。这个项目可能包括以下...

    activiti工作流流程跟踪图(网页布局)

    6. **实施方法**:实现这样的监控图可能涉及到以下步骤:创建流程定义,启动流程实例,使用Activiti API获取流程实例信息,根据这些信息动态生成高亮的流程图,并将其渲染到网页上。 7. **实际应用**:在企业环境中...

    java中Activiti工作流引擎关于- 提交审批和审批一些源码.rar

    当任务到达某个用户任务节点时,Activiti会创建一个`Task`对象并将其分配给指定的用户或用户组。用户可以完成任务,或者将任务指派给其他用户。完成任务通常通过调用`complete`方法实现,传入任务ID。 审批过程可能...

    Activiti项目实例

    使用 Activiti Modeler 或其他支持BPMN 2.0的建模工具,创建一个简单的流程模型,例如请假审批流程,包括申请、部门经理审批、人事审批等节点。 2. **部署流程** 将流程模型导出为`.bpmn20.xml`文件,然后通过...

    activiti节点说明

    ### Activiti节点说明 #### 一、启动事件与结束事件 **启动事件**与**结束事件**是Activiti流程定义中最基本的元素之一,用于标识流程的起点与终点。 ##### 启动事件 启动事件根据不同的特性又可以分为多种类型...

    流程跟踪监控图-节点-流程线高亮显示.rar

    4. **ActivitiUtils.java**:这通常是一个工具类,包含了一些与Activiti相关的通用方法,比如获取流程实例信息,解析BPMN模型,或者处理与流程图渲染相关的辅助任务。 通过上述文件,开发者可以了解如何在Activiti...

Global site tag (gtag.js) - Google Analytics