Activiti获取某个流程实例的FormKey
2017-04-11 10:59
411 查看
通过任务id获得formkey
用处是用户点击办理任务时可以跳出业务信息的页面,而页面的位置则存放在对应节点的form key中。
当前任务是同时存在 ACT_RU_TASK 和 ACT_HI_TASKINST
ProcessDefinitionEntity -->TaskDefinition -->DefaultFormHandler -->Expression.getExpressionText()
用处是用户点击办理任务时可以跳出业务信息的页面,而页面的位置则存放在对应节点的form key中。
HistoricTaskInstance -->ProcessDefinitionEntity -->TaskDefinition-->DefaultFormHandler -->Expression -->Expression.getExpressionText() ;
当前任务是同时存在 ACT_RU_TASK 和 ACT_HI_TASKINST
/** * * @CreateUser:xxxx * @ReturnType:String * @param taskId * @param businessEventId * @return * @CreateDate:2014-6-10下午7:49:32 * @UseFor :根据任务id获得form key值 */ public String getBusinessInfoUrl(String taskId, String businessEventId) { String url = ""; String businessKey = ""; // 获得任务对象 HistoricTaskInstance taskInstance = (HistoricTaskInstance) historyService .createHistoricTaskInstanceQuery().taskId(taskId) .singleResult(); // 判断当前任务Task是否为空 if (taskInstance != null) { url = getTaskFormData(taskId); if (url == null || "".equals(url)) { String processDefinitionId = taskInstance.getProcessDefinitionId(); url = getProcessDefinitionFormData(processDefinitionId); } // 业务id 即eventid businessKey = ((HistoricProcessInstance) historyService .createHistoricProcessInstanceQuery() .processInstanceId(task.getProcessInstanceId()) .singleResult()).getBusinessKey(); } else { HistoricProcessInstance historicProcessInstance = (HistoricProcessInstance) historyService .createHistoricProcessInstanceQuery() .processInstanceBusinessKey(businessEventId).singleResult(); if (historicProcessInstance != null) { url = getProcessDefinitionFormData(historicProcessInstance .getProcessDefinitionId()); businessKey = businessEventId; } } // 拼接URL 把eventid接到url上面 url的格式是 xx.htm?eventid= return (new StringBuilder(String.valueOf(url))).append(businessKey) .toString(); } /** * * @CreateUser:xxxx * @ReturnType:String * @param taskId * @return * @CreateDate:2014-6-10下午5:21:27 * @UseFor :根据任务iD获得form Key 值 */ private String getTaskFormData(String taskId) { //表单key值 String formkey = ""; //获取需查询的任务实例 HistoricTaskInstance task = (HistoricTaskInstance) historyService .createHistoricTaskInstanceQuery().taskId(taskId) .singleResult(); //获取流程定义对象 ProcessDefinitionEntity processDefinition = getProcessDefinitionEntityByProcessDefinitionId(task .getProcessDefinitionId()); TaskDefinition taskDefinition = (TaskDefinition) processDefinition .getTaskDefinitions().get(task.getTaskDefinitionKey()); DefaultFormHandler defaultFormHandler = (DefaultFormHandler) taskDefinition .getTaskFormHandler(); Expression expression = defaultFormHandler.getFormKey(); if (expression != null) formkey = expression.getExpressionText(); return formkey; } /** * * @CreateUser:xxxx * @ReturnType:ProcessDefinitionEntity * @param processDefinitionId * @return * @CreateDate:2014-12-10下午7:39:01 * @UseFor :获得 ProcessDefinitionEntity */ private ProcessDefinitionEntity getProcessDefinitionEntityByProcessDefinitionId( String processDefinitionId) { ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService) .getDeployedProcessDefinition(processDefinitionId); return processDefinitionEntity; } /** * * @CreateUser:xxxx * @ReturnType:String * @param processDefinitionId * @return * @CreateDate:2014-12-10下午7:38:46 * @UseFor :获得第一个节点的Form key */ private String getProcessDefinitionFormData(String processDefinitionId) { StartFormData startFormData = formService .getStartFormData(processDefinitionId); return startFormData.getFormKey(); }
相关文章推荐
- Activiti获取某个流程实例已经审批的节点记录
- activiti学习笔记(二) 获取流程实例
- jbpm4.4+mysql流程实例不能删除,报告a foreign key constraint fails
- BPMN2,activiti,jbpm5学习资料1(规范,流程实例)
- JS实现从连接中获取youtube的key实例
- Activiti进阶(四)——流程变量的设置和获取
- JBPM4.4:执行流程实例(启动、向后一步、查询任务、拾取任务、完成任务、设置获取流程变量)
- jbpm4.4+mysql流程实例不能删除,报告a foreign key constraint fails
- activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建
- 工作流学习——Activiti流程实例、任务管理四步曲
- activiti获取用户任务同时查询流程变量 null pointer问题解决。
- 【Activiti 基础篇四】流程变量设置与获取方式
- BPMN2,activiti,jbpm5学习资料1(规范,流程实例)
- php array 根据value获取key,in_array()判断是否在数组内实例
- 工作流activiti-03数据查询(流程定义 流程实例 代办任务) 以及个人小练习
- JS实现从连接中获取youtube的key实例
- Android Google Map实例 - MD5 、Google Map API Key获取(Android mapview)
- Javascript和Java获取各种form表单信息的简单实例
- [学习小结]Activiti5 流程实例管理
- Activiti流程实例任务的执行(四)