![應(yīng)用Activiti流程跟蹤監(jiān)控圖路徑線和節(jié)點(diǎn)高亮顯示_第1頁](http://file4.renrendoc.com/view/40bd1fdcf3a7204bae39825d302364ee/40bd1fdcf3a7204bae39825d302364ee1.gif)
![應(yīng)用Activiti流程跟蹤監(jiān)控圖路徑線和節(jié)點(diǎn)高亮顯示_第2頁](http://file4.renrendoc.com/view/40bd1fdcf3a7204bae39825d302364ee/40bd1fdcf3a7204bae39825d302364ee2.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
[應(yīng)用]Activiti流程跟蹤監(jiān)控圖路徑線和節(jié)點(diǎn)高亮顯示流程圖高亮顯示繼承的方式擴(kuò)展它的畫圖類。閑話少說我們切入正題。由于這是公司完整項(xiàng)目上的一個(gè)小模塊,而最近公司不再做進(jìn)一步的開發(fā),只希望對(duì)大家有所協(xié)助。。。1,先曬一下,我做出來的效果。2,詳細(xì)實(shí)現(xiàn)步驟:,Action/**經(jīng)過指定的流程實(shí)例id生成流程監(jiān)控圖*@parammapping@paramform@paramrequest@paramresponse@return*/publicActionForwardinstanceDiagram(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){/**ID*/StringinstanceId=StringUtils.trimToEmpty(request.getParameter("instanceId"));//設(shè)置頁面不緩存response.setHeader("Pragma","No-cache");response.setHeader("Cache-Control","no-cache");response.setDateHeader("Expires",0);try{HistoricProcessInstancehistoricProcessInstance=historyService.createHistoricProcessInstanceQuery().processInstanceId(instanceId).singleResult();if(historicProcessInstance==null){thrownewRuntimeException("取得流程圖異樣!");}else{BpmnModelbpmnModel=repositoryService.getBpmnModel(historicProcessInstance.getProcessDefinitionId());List<HistoricActivityInstance>activityInstances=historyService.createHistoricActivityInstanceQuery().processInstanceId(instanceId).orderByHistoricActivityInstanceId().asc()取得流程走過的節(jié)點(diǎn),并依據(jù)節(jié)點(diǎn)生成先后挨次排序List<String>activitiIds=newArrayList<String>();List<String>flowIds=newArrayList<String>();List<String>currentFlowIds=newArrayList<String>();ProcessDefinitionEntityprocessDefinition=(ProcessDefinitionEntity)((RepositoryServiceImpl)repositoryService).getDeployedProcessDefinition(historicProcessInstance.getProcessDefinitionId());flowIds=flowMoniService.getHighLightedFlows(processDefinition,activityInstances);currentFlowIds=flowMoniService.getCurrentHighLightedFlows(processDefinition,activityInstances);for(HistoricActivityInstancehai:activityInstances){activitiIds.add(hai.getActivityId());}List<Map<String,Boolean>>highLightedActivities=flowMoniService.getHighLightedActivities(processDefinition,activityInstances);ProcessEngineImpldefaultProcessEngine=(ProcessEngineImpl)ProcessEngines.getDefaultProcessEngine();Context.setProcessEngineConfiguration(defaultProcessEngine.getProcessEngineConfiguration());Context.setProcessEngineConfiguration(processEngineFactoryBean.getProcessEngineConfiguration());InputStreamimageStream=BlazerProcessDiagramGenerator.generateDiagram2(bpmnModel,"png",highLightedActivities,flowIds,currentFlowIds);response.setContentType("image/png");OutputStreamos=response.getOutputStream();intbytesRead=0;byte[]buffer=newbyte[8192];while((bytesRead=imageStream.read(buffer,0,8192))!=-1){os.write(buffer,0,bytesRead);}os.close();imageStream.close();}}catch(Exceptione){logger.error("e);thrownewRuntimeException("取得流程圖異樣!");}returnnull;},Serviceid繼續(xù)加強(qiáng))@OverridepublicList<String>getHighLightedFlows(ProcessDefinitionEntityprocessDefinitionEntity,List<HistoricActivityInstance>historicActivityInstances){List<String>highFlowsnewArrayList<String>();//flowIdfor(inti=0;i<historicActivityInstances.size()1;i++){//ActivityImplactivityImpl=processDefinitionEntity.findActivity(historicActivityInstances.get(i).getActivityId());//信息List<ActivityImpl>sameStartTimeNodes=newArrayList<ActivityImpl>();//ActivityImplsameActivityImpl1=processDefinitionEntity.findActivity(historicActivityInstances.get(i+1).getActivityId());//將后面第一個(gè)節(jié)點(diǎn)放在時(shí)間相同節(jié)點(diǎn)的集合里sameStartTimeNodes.add(sameActivityImpl1);for(intj=i+1;j<historicActivityInstances.size()-1;j++){HistoricActivityInstanceactivityImpl1=historicActivityInstances.get(j);//后續(xù)第一個(gè)節(jié)點(diǎn)HistoricActivityInstanceactivityImpl2=historicActivityInstances.get(j+1);//后續(xù)第二個(gè)節(jié)點(diǎn)if(activityImpl1.getStartTime().equals(activityImpl2.getStartTime())){//一個(gè)節(jié)點(diǎn)和第二個(gè)節(jié)點(diǎn)開頭時(shí)間相同保存ActivityImplsameActivityImpl2=processDefinitionEntity.findActivity(activityImpl2.getActivityId());sameStartTimeNodes.add(sameActivityImpl2);else{//break;}}List<PvmTransition>pvmTransitions=activityImpl.getOutgoingTransitions();//去的線for(PvmTransitionpvmTransitionpvmTransitions){//行遍歷ActivityImplpvmActivityImpl=(ActivityImpl)pvmTransition.getDestination();//假若取出的線的目標(biāo)節(jié)點(diǎn)進(jìn)行高亮顯示if(sameStartTimeNodes.contains(pvmActivityImpl)){highFlows.add(pvmTransition.getId());}}}returnhighFlows;}@OverridepublicList<Map<String,Boolean>>getHighLightedActivities(ProcessDefinitionEntityprocessDefinition,List<HistoricActivityInstance>historicActivityInstances){List<Map<String,Boolean>>highLightedActivities=newArrayList<Map<String,Boolean>>();intactivityCount=historicActivityInstances.size();Map<String,Boolean>activityMap=newHashMap<String,Boolean>();activityMap.put(historicActivityInstances.get(historicActivityInstances.size()-1).getActivityId(),true);highLightedActivities.add(activityMap);booleanfindCurrActivity=true;//是否查詢并發(fā)任務(wù)節(jié)點(diǎn)for(intjactivityCount2;j0;j--){//推斷前面節(jié)點(diǎn)是否與Map<String,Boolean>activityMap2=newHashMap<String,Boolean>();HistoricActivityInstanceactivityImpl1=historicActivityInstances.get(j);//if(findCurrActivity){HistoricActivityInstanceactivityImpl2=historicActivityInstances.get(j+1);//當(dāng)前節(jié)點(diǎn)if(activityImpl1.getStartTime().equals(activityImpl2.getStartTime())){Stringtype=activityImpl1.getActivityType();//排除系統(tǒng)自動(dòng)執(zhí)行節(jié)點(diǎn)if("userTask".equals(type)||"endEvent".equals(type)){activityMap2.put(activityImpl1.getActivityId(),false);}else{activityMap2.put(activityImpl1.getActivityId(),false);}}else{activityMap2.put(activityImpl1.getActivityId(),false);findCurrActivity=false;}highLightedActivities.add(activityMap2);}else{activityMap2.put(activityImpl1.getAct
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 滑雪板固定器行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報(bào)告
- 2025年中國高低壓配電柜市場深度分析及投資戰(zhàn)略咨詢報(bào)告
- 業(yè)務(wù)信息傭金合同范例
- 傳統(tǒng)師承合同范本
- 分銷白酒合同范本
- 樂器供銷合同范例
- 交工驗(yàn)收質(zhì)量檢測合同范例
- 農(nóng)村小型承包設(shè)備合同范本
- 2025年度房地產(chǎn)項(xiàng)目風(fēng)險(xiǎn)評(píng)估盡職調(diào)查合同
- 2025年度古董鑒定與買賣服務(wù)合同
- 知識(shí)庫管理規(guī)范大全
- 2024年贛州民晟城市運(yùn)營服務(wù)有限公司招聘筆試參考題庫附帶答案詳解
- 領(lǐng)導(dǎo)干部報(bào)告?zhèn)€人事項(xiàng)
- 9這點(diǎn)挫折算什么(課件)-五年級(jí)上冊(cè)生命與健康
- 價(jià)格監(jiān)督檢查知識(shí)培訓(xùn)課件
- 駐場保潔方案
- 中國心理衛(wèi)生協(xié)會(huì)家庭教育指導(dǎo)師參考試題庫及答案
- 智能廣告投放技術(shù)方案
- 知識(shí)產(chǎn)權(quán)保護(hù)執(zhí)法
- 高質(zhì)量社區(qū)建設(shè)的路徑與探索
- 數(shù)字化時(shí)代的酒店員工培訓(xùn):技能升級(jí)
評(píng)論
0/150
提交評(píng)論