日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
在JSP頁(yè)面中顯示JBPM流程圖

要在JSP頁(yè)面中顯示JBPM流程圖需要先下載jbpm-starters-kit-3.1.x工具包。在包中有.java文件,

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、重慶小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了河南免費(fèi)建站歡迎大家使用!

\jbpm.3\src\java.webapp\org\jbpm\webapp\tag\ProcessImageTag.java與他的\WEB-INF\jbpm.tld,還有文件

\jbpm.3\src\java.webapp\org\jbpm\webapp\servlet\ ProcessImageServlet.java,在JBPM的例子里,這三個(gè)文件共同完成JBPM流程圖的顯示。

要使兩個(gè)文件發(fā)生作用,必須得在web.xml里配置,配置方法:

 
 
 
  1.    
  2.    
  3.     ProcessImageServlet   
  4.     org.jbpm.webapp.servlet.ProcessImageServlet   
  5.    
  6.    
  7.     ProcessImageServlet   
  8.     /processimage   
  9.    

在頁(yè)面中使用: 就會(huì)把流程圖顯示在當(dāng)前位置。

在實(shí)際環(huán)境中可能會(huì)出現(xiàn)的問(wèn)題與必要的修改

問(wèn)題一

如果你是用spring整合的jbpm,那么在兩個(gè)類(lèi)里的取JbpmContext方法會(huì)出錯(cuò)。
 
JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext(); //這個(gè)是會(huì)出問(wèn)題的。

修改:

1.ProcessImageTag.java的private void initialize()方法里。

 
 
 
  1. WebApplicationContext wac = WebApplicationContextUtils.
    getRequiredWebApplicationContext(pageContext.getServletContext());   
  2.       JbpmTemplate jbpmTemplate = (JbpmTemplate) wac.getBean("jbpmTemplate");   
  3.       jbpmTemplate.execute(new JbpmCallback() {   
  4.           public Object doInJbpm(JbpmContext context) {   
  5.               if (taskInstanceId > 0) {   
  6.                   TaskInstance taskInstance = context.getTaskMgmtSession().loadTaskInstance(taskInstanceId);   
  7.                   currentToken = taskInstance.getToken();   
  8.               }   
  9.               else   
  10.               {   
  11.                   if (tokenInstanceId > 0)   
  12.                       currentToken = context.getGraphSession().loadToken(tokenInstanceId);   
  13.               }   
  14.               return null;   
  15.           }   
  16.       });   
 
 
 

  1. public class ProcessImageServlet extends HttpServlet {   
  2.     private static final long serialVersionUID = 1L;   
  3.     private ProcessDefinition processDefinition;   
  4.     private byte[] bytes;   
  5.  
  6.     protected void doGet(HttpServletRequest request, 
    HttpServletResponse response) throws ServletException, IOException {   
  7.         final long processDefinitionId = Long.parseLong( request.getParameter( "definitionId" ) );   
  8.  
  9.         WebApplicationContext wac = WebApplicationContextUtils.
    getRequiredWebApplicationContext(request.getSession().getServletContext());   
  10.         JbpmTemplate jbpmTemplate = (JbpmTemplate) wac.getBean("jbpmTemplate");   
  11.         jbpmTemplate.execute(new JbpmCallback() {   
  12.             public Object doInJbpm(JbpmContext context) {   
  13.                 processDefinition = context.getGraphSession().loadProcessDefinition(processDefinitionId);   
  14.                 bytes = processDefinition.getFileDefinition().getBytes("processimage.jpg");   
  15.                 return null;   
  16.             }   
  17.         });   
  18.  
  19.         OutputStream out = response.getOutputStream();   
  20.         out.write(bytes);   
  21.         out.flush();   
  22.     }   
  23. }   

問(wèn)題二

如果你的流程是用中文字符,且數(shù)據(jù)庫(kù)字符集為utf-8,再數(shù)據(jù)庫(kù)中為正確的utf-8內(nèi)容,也可能會(huì)亂碼錯(cuò)誤。 如:我的數(shù)據(jù)庫(kù)里的gpd.xml

出錯(cuò)的類(lèi):ProcessImageTag.java

出錯(cuò)行:result[0] = Integer.valueOf(node.attribute("x").getValue());

如果此地為nullpoint錯(cuò)誤,是因?yàn)樯舷挛牡腅lement root中的字符為亂碼。

修改:

原代碼:Element rootDiagramElement = DocumentHelper.parseText(new String(gpdBytes)).getRootElement();

修改后:Element rootDiagramElement = DocumentHelper.parseText(new String(gpdBytes, "utf-8")).getRootElement();

說(shuō)明:有個(gè)地方要注意, 顯示圖片是以當(dāng)前的路徑為基礎(chǔ)的。style="background-image:url(processimage?definitionId=1) ",也就是說(shuō)當(dāng)頁(yè)面為:http://localhost/jbpm/workflow/showTaskInstance.jsp時(shí),你所訪(fǎng)問(wèn)的流程圖地址為:http://localhost/jbpm/workflow/processimage?definitionId=1,這個(gè)地址是錯(cuò)誤的,實(shí)際地址為:http://localhost/jbpm/processimage?definitionId=1,要正確顯示需修改ProcessImageTag.java

原代碼:background-image:url(" + imageLink + ");

修改后:background-image:url(" + ((HttpServletRequest) pageContext.getRequest()).getContextPath() + "/" + imageLink + ");

至此成功顯示JBPM流程圖。


本文標(biāo)題:在JSP頁(yè)面中顯示JBPM流程圖
URL網(wǎng)址:http://www.5511xx.com/article/djchijp.html