• jbpm4的流程监控程序[3] 流程图监控展示,基于mootools


    jbpm4的流程监控程序[3] 流程图监控展示,基于mootools 

    在<<jbpm4的流程监控程序[2]>>中,我们已经可以获得流程图和流程图相关节点信息,现在我们就可以将其展示出来. 
    对于节点的tip显示,这里是采用mootools的tip实现的. 


    // 用来处理流程图请求的,这里是采用SpringMVC的 
    Java代码 
    1. // 用来处理流程图请求的,这里是采用SpringMVC的  
    2. public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)  
    3.     throws Exception {  
    4.   String pdId = getProcessDefinitionId(request);  
    5.   InputStream image = null;  
    6.   if (pdId != null && pdId.length() != 0) {  
    7.     image = jbpmTemplate.getResourceFromProcessDefinition(pdId, JbpmTemplate.PROCESS_IMAGE);  
    8.   }  
    9.   if (image == null) {  
    10.     String piId = getProcessInstanceId(request);  
    11.     if (piId != null && piId.length() != 0) {  
    12.       image = jbpmTemplate.getResourceFromProcessInstance(piId, JbpmTemplate.PROCESS_IMAGE);  
    13.     }  
    14.   }  
    15.   if (image != null) {  
    16.     response.setContentType("image/png");  
    17.     OutputStream os = response.getOutputStream();  
    18.     byte[] b = new byte[BUFFER_SIZE];  
    19.     int len = 0;  
    20.     while ((len = image.read(b, 0, BUFFER_SIZE)) != -1) {  
    21.       os.write(b, 0, len);  
    22.     }  
    23.     os.flush();  
    24.   }  
    25.   return null;  
    26. }  


    流程监控action 
    Java代码 
    1. public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)  
    2.     throws Exception {  
    3.   String piId = request.getParameter("piId");  
    4.   ProcessInstaticeActivityInfo processInstaticeActivityInfo = jbpmTemplate.getActivityCoordinatesInfo(piId);  
    5.   request.setAttribute("activeActivityInfos", processInstaticeActivityInfo.getActiveActivityInfos());  
    6.   request.setAttribute("processedActivityInfos", processInstaticeActivityInfo.getProcessedActivityInfos());  
    7.   request.setAttribute("jbpmTemplate", jbpmTemplate);  
    8.   return new ModelAndView(page);  
    9. }  


    流程监控的jsp页面 
    Html代码 
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">  
    2. <html xmlns="http://www.w3.org/1999/xhtml">  
    3.   <head>  
    4.     <title>查看流程实例</title>  
    5.     <style>  
    6. .tip-top {  
    7.   color: #000;  
    8.    130px;  
    9.   z-index: 13000;  
    10. }  
    11. .tip{  
    12. }  
    13. .tip .tip-title {  
    14.   font-weight: bold;  
    15.   font-size: 14px;  
    16.   font-family: 宋体  ;  
    17.   margin: 0;  
    18.   color: #3E4F14;  
    19.   padding: 8px 8px 4px;  
    20.   background: #C3DF7D;  
    21.   border-bottom: 1px solid #B5CF74;  
    22. }  
    23.   
    24. .tip .tip-text {  
    25.   font-size: 12px;  
    26.   font-family: 宋体  ;  
    27.   padding: 4px 8px 8px;  
    28.   background: #CFDFA7;  
    29. }  
    30. .tip-bottom{  
    31. }  
    32. .processed{  
    33.   position:absolute;  
    34.   border:3px yellow solid;  
    35. }  
    36.   
    37. .processed:hover{  
    38.   border-color:blue;  
    39. }  
    40.   
    41. .active{  
    42.   position:absolute;  
    43.   border:3px red solid;  
    44. }  
    45. .active:hover{  
    46.   border-color: green;  
    47. }  
    48. /* ie下需加个透明的背景 s.gif见附件 */  
    49. .processed,.active{  
    50.   background-image:url(<%=request.getContextPath()%>/resources/img/s.gif);  
    51. }  
    52. </style>  
    53.     <script  
    54.       src="<%=request.getContextPath()%>/resources/script/mootools-1.2.js"></script>  
    55.   </head>  
    56.   <body>  
    57.     <div class="processContainer">  
    58.       <img style="position: absolute; left: 0px; top: 0px;"  
    59.         src="./jpdlImage.bpm?piId=<%=request.getParameter("piId")%>"/>  
    60.       <%  
    61.         JbpmTemplate jbpmTemplate = (JbpmTemplate)request.getAttribute("jbpmTemplate");  
    62.         int id = 0;  
    63.         List<ActivityInfo> processedActivityInfos = (List<ActivityInfo>)request.getAttribute("processedActivityInfos"); ;  
    64.         List<ActivityInfo> activeActivityInfos = (List<ActivityInfo>)request.getAttribute("activeActivityInfos");   
    65.         ActivityCoordinates coordinates;  
    66.         HistoryActivityInstance activityInstance;  
    67.         for(ActivityInfo info : processedActivityInfos){  
    68.           coordinates = info.getCoordinates();  
    69.           activityInstance = info.getActivityInstance();  
    70.           String elId = "_pai_" + (++id);  
    71.           String title = activityInstance==null?"":activityInstance.getActivityName();   
    72.           StringBuffer position = new StringBuffer();  
    73.           position.append("left:").append(coordinates.getX()+2).append("px;");  
    74.           position.append("top:").append(coordinates.getY()+2).append("px;");  
    75.           position.append("height:").append(coordinates.getHeight()-10).append("px;");  
    76.           position.append("").append(coordinates.getWidth()-10).append("px;");  
    77.           StringBuffer text = new StringBuffer();  
    78.           if (activityInstance instanceof HistoryDecisionInstanceImpl) {  
    79.             text.append("<b>完成时间:</b> ").append(DateTimeUtil.formatToNice(activityInstance.getEndTime(),"yyyy-MM-dd HH:mm:dd"));  
    80.             String transitionName = ((HistoryActivityInstanceImpl) activityInstance).getTransitionName();  
    81.             if("completed".equals(transitionName)){  
    82.               ProcessDefinition pd = jbpmTemplate.getProcessDefinitionByProcessInstanceId(request.getParameter("piId"));  
    83.               if(pd!=null){  
    84.                 Activity activity = ((ProcessDefinitionImpl)pd).getActivitiesMap().get(activityInstance.getActivityName());  
    85.                 if(activity!=null){  
    86.                   text.append("<br/><b>流转路径:</b> ").append(StringUtil.transToHtmlStr(activity.getDefaultOutgoingTransition().getName()));  
    87.                 }  
    88.               }  
    89.             } else {  
    90.               text.append("<br/><b>流转路径:</b> ").append(StringUtil.transToHtmlStr(transitionName));  
    91.             }  
    92.           } else if (activityInstance instanceof HistoryTaskInstanceImpl) {  
    93.             HistoryTaskInstanceImpl taskInstanceImpl = (HistoryTaskInstanceImpl) activityInstance;  
    94.             text.append("<b>执 行 人</b>: ").append(taskInstanceImpl.getHistoryTask().getAssignee());  
    95.             text.append("<br/><b>完成时间:</b> ").append(DateTimeUtil.formatToNice(activityInstance.getEndTime(),"yyyy-MM-dd HH:mm:dd"));  
    96.             String transitionName = ((HistoryActivityInstanceImpl) activityInstance).getTransitionName();  
    97.             if("completed".equals(transitionName)){  
    98.               ProcessDefinition pd = jbpmTemplate.getProcessDefinitionByProcessInstanceId(request.getParameter("piId"));  
    99.               if(pd!=null){  
    100.                 Activity activity = ((ProcessDefinitionImpl)pd).getActivitiesMap().get(activityInstance.getActivityName());  
    101.                 if(activity!=null){  
    102.                   text.append("<br/><b>流转路径:</b> ").append(StringUtil.transToHtmlStr(activity.getDefaultOutgoingTransition().getName()));  
    103.                 }  
    104.               }  
    105.             } else {  
    106.               text.append("<br/><b>流转路径:</b> ").append(StringUtil.transToHtmlStr(transitionName));  
    107.             }  
    108.               
    109.             List<HistoryComment> comments =  jbpmTemplate.getTaskComments(taskInstanceImpl.getHistoryTask().getId());  
    110.             if(comments.size()>0){ // 显示最新的comment  
    111.               text.append("<br/><br/><b>备注信息:</b> ").append(StringUtil.transToHtmlStr(comments.get(comments.size()-1).getMessage()));  
    112.             }  
    113.           }  
    114.       %>  
    115.         <div class="tip processed" id="<%=elId%>"  style="<%=position%>">  
    116.         </div>  
    117.       <script>$('<%=elId%>').store('tip:title',"<%=title%>").store('tip:text',"<%=text.toString()%>");</script>          
    118.       <%}%>  
    119.       <%  
    120.         id = 0;  
    121.         for(ActivityInfo info : activeActivityInfos){   
    122.           coordinates = info.getCoordinates();  
    123.           String elId = "_aai_" + (++id);  
    124.           StringBuffer position = new StringBuffer();  
    125.           position.append("left:").append(coordinates.getX()+2).append("px;");  
    126.           position.append("top:").append(coordinates.getY()+2).append("px;");  
    127.           position.append("height:").append(coordinates.getHeight()-10).append("px;");  
    128.           position.append("").append(coordinates.getWidth()-10).append("px;");  
    129.       %>  
    130.         <div class="tip active" id="<%=elId%>"  style="<%=position%>">  
    131.         </div>  
    132.       <%} %>  
    133.     </div>  
    134.     <script>new Tips('.tip');</script>  
    135.   </body>  
    136. </html>  
    137. 本文转自:http://yy629.iteye.com/blog?page=2&show_full=true
  • 相关阅读:
    肩部肌肉劳损zt
    大屏幕手机上网页字体显示很小的问题
    SWT的Display
    The connection to adb is down, and a severe error has occured.
    [ZT]使用tmpfs缓存文件提高性能
    Mutex
    javascript阻塞加载问题【转】
    IE参考
    2台电脑网线对接注意的事项
    重建索引
  • 原文地址:https://www.cnblogs.com/daichangya/p/12960090.html
Copyright © 2020-2023  润新知