自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在JSP頁面中顯示JBPM流程圖

開發(fā) 后端
本文向您介紹在JSP頁面中顯示JBPM流程圖,作者通過對(duì)Web.xml的配置和一些代碼實(shí)現(xiàn)了這個(gè)功能。

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

\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. <!-- jBPM FileServlet -->   
  2. <servlet>   
  3.     <servlet-name>ProcessImageServlet</servlet-name>   
  4.     <servlet-class>org.jbpm.webapp.servlet.ProcessImageServlet</servlet-class>   
  5. </servlet>   
  6. <servlet-mapping>   
  7.     <servlet-name>ProcessImageServlet</servlet-name>   
  8.     <url-pattern>/processimage</url-pattern>   
  9. </servlet-mapping>   

在頁面中使用:<jbpm:processimage task="${taskBean.taskInstanceId}"/> 就會(huì)把流程圖顯示在當(dāng)前位置。

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

問題一

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

修改:

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. }   

問題二

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

出錯(cuò)的類: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();

說明:有個(gè)地方要注意,<jbpm:processimage task="${taskBean.taskInstanceId}"/> 顯示圖片是以當(dāng)前的路徑為基礎(chǔ)的。style="background-image:url(processimage?definitionId=1) ",也就是說當(dāng)頁面為:http://localhost/jbpm/workflow/showTaskInstance.jsp時(shí),你所訪問的流程圖地址為: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流程圖。

 

【編輯推薦】

  1. jBPM 4.0配置淺析
  2. jBPM4的架構(gòu)
  3. 淺談jBPM下MySQL的配置
  4. 簡(jiǎn)單介紹jBPM與SSH的完整實(shí)例
  5. 使用JBPM工作流引擎測(cè)試的一個(gè)例子
責(zé)任編輯:佚名 來源: JavaEye
相關(guān)推薦

2009-03-05 10:10:52

餅圖數(shù)據(jù)庫JSP

2009-07-02 09:25:41

JSP實(shí)現(xiàn)頁面跳轉(zhuǎn)

2020-07-28 21:38:24

跨職能流程圖

2009-06-04 15:51:46

Struts流程圖

2023-08-23 19:21:38

流程圖時(shí)序圖UML

2009-06-29 17:09:49

JavaBeanJSP

2020-07-28 21:42:23

程序流程圖

2010-03-24 16:08:55

紅旗Linux桌面版

2009-07-07 18:20:54

JSP頁面顯示亂碼

2009-07-02 14:24:02

JSP讀取數(shù)據(jù)庫

2020-07-28 21:44:23

工藝流程圖

2010-03-24 15:36:18

2024-08-16 18:48:45

2009-11-09 13:23:35

WCF協(xié)定

2012-01-05 11:08:37

CISCO路由器啟動(dòng)流程

2019-08-16 11:16:25

Java程序員流程圖

2012-06-07 09:48:12

開發(fā)流程圖

2009-06-30 15:22:55

JSP頁面

2020-07-28 21:39:54

生產(chǎn)流程圖
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)