

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
[應(yīng)用]Activiti流程跟蹤監(jiān)控圖路徑線和節(jié)點(diǎn)高亮顯示流程圖高亮顯示繼承的方式擴(kuò)展它的畫(huà)圖類。閑話少說(shuō)我們切入正題。由于這是公司完整項(xiàng)目上的一個(gè)小模塊,而最近公司不再做進(jìn)一步的開(kāi)發(fā),只希望對(duì)大家有所協(xié)助。。。1,先曬一下,我做出來(lái)的效果。2,詳細(xì)實(shí)現(xiàn)步驟:,Action/**經(jīng)過(guò)指定的流程實(shí)例id生成流程監(jiān)控圖*@parammapping@paramform@paramrequest@paramresponse@return*/publicActionForwardinstanceDiagram(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){/**ID*/StringinstanceId=StringUtils.trimToEmpty(request.getParameter("instanceId"));//設(shè)置頁(yè)面不緩存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()取得流程走過(guò)的節(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)開(kāi)頭時(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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è)智能管理平臺(tái)開(kāi)發(fā)采購(gòu)合同
- 戶外運(yùn)動(dòng)裝備租賃使用安全免責(zé)協(xié)議書(shū)
- 硬件設(shè)備購(gòu)銷合同
- 游戲行業(yè)虛擬物品交易風(fēng)險(xiǎn)告知免責(zé)協(xié)議
- 獨(dú)家代理手房合同
- 工程總承包聯(lián)合體協(xié)議書(shū)
- 基于大數(shù)據(jù)的智能能源管理系統(tǒng)合作協(xié)議
- 專利申請(qǐng)與維護(hù)合同
- 工傷補(bǔ)償?shù)膮f(xié)議書(shū)
- 交通網(wǎng)絡(luò)運(yùn)輸承包經(jīng)營(yíng)合同
- 2025年春季學(xué)期學(xué)校團(tuán)委工作計(jì)劃(附團(tuán)委工作安排表)
- 2025公文寫(xiě)作考試題庫(kù)(含參考答案)
- 2025年湖南科技職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 2024年安徽省高校分類考試對(duì)口招生語(yǔ)文試卷真題(含答案)
- 2024年安徽省省情知識(shí)競(jìng)賽題庫(kù)及答案
- 2025年伊春職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025版林木砍伐與生態(tài)修復(fù)工程承包合同2篇
- 課題申報(bào)參考:社會(huì)網(wǎng)絡(luò)視角下村改居社區(qū)公共空間優(yōu)化與“土客關(guān)系”重構(gòu)研究
- 如何管理好一家公寓
- 2025年零售業(yè)員工職業(yè)發(fā)展規(guī)劃與培訓(xùn)
- 2025年八省聯(lián)考高考語(yǔ)文試題真題解讀及答案詳解課件
評(píng)論
0/150
提交評(píng)論