`
fengshujuan
  • 浏览: 160696 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

把jbpm流程图显示在jsp页面中

阅读更多

本文仅从应用角度出发,一步步讲解怎么把流程图显示在jsp页面中。如果有错误的地方请各位不吝赐教。

1 首先找到jbpm项目自带的 org.jbpm.webapp.servlet下的三个servlet:deployServlet,ProcessImageServlet,UploadServlet 和org.jbpm.webapp.servlet下的processImageTag。把这些东东copy到你的项目的src中

2 配置项目下的web.xml,代码如下:

java 代码

  1. <!---->  
  2. <servlet></servlet>  
  3.   <servlet-name></servlet-name>ProcessImageServlet   
  4.   class>org.jbpm.webapp.servlet.ProcessImageServletclass>   
  5.   
  6. <servlet-mapping></servlet-mapping>  
  7.   <servlet-name></servlet-name>ProcessImageServlet   
  8.   <url-pattern></url-pattern>/processimage   
  9.   
  10.   
  11. <!---->  
  12. <servlet></servlet>  
  13.   <servlet-name></servlet-name>DeployServlet   
  14.   class>org.jbpm.webapp.servlet.DeployServletclass>   
  15.   
  16. <servlet-mapping></servlet-mapping>  
  17.   <servlet-name></servlet-name>DeployServlet   
  18.   <url-pattern></url-pattern>/deploy   
  19.   
  20. <servlet></servlet>  
  21.   <servlet-name></servlet-name>UploadServlet   
  22.   class>org.jbpm.webapp.servlet.UploadServletclass>   
  23.   
  24. <servlet-mapping></servlet-mapping>  
  25.   <servlet-name></servlet-name>UploadServlet   
  26.   <url-pattern></url-pattern>/upload   
  27.   

 

3 把jbpm自带的标签定义 jbpm.tld    copy到你的项目的/web-info 目录下

4 找到jbpm自带的deploy.html(把这个html放在项目的webroot根目录下,牵涉到servlet的解析问题),这就是流程定义的部署页面。

5 流程定义文件的打包:在eclipse的process definition的设计界面下打开你设计好的流程定义图,利用designer的 “deployment”把三个文件(gpd.xml   processdefiniton.xml.   processimage.jpg)打包,点击“save process archive locally”,选定“location”,点击“save without deplying”保存流程定义文件包(当然你也可以利用desinger中的deployment server setting ,只要能把这三个文件部署到你的数据库中即可)

6 利用deploy.html部署打包好的流程定义文件包 到数据库。可以查看jbjpm_bytearray表中是否有数据,有的话则表明部署成功,否则就是没有部署成功

7一定要把显示流程图的jsp页面(假设名字为show.jsp)放在webroot根目录下(因为牵涉到servlet的解释问题),在jsp页面中调用  <jbpm:processimage task="&lt;%=taskInstanceid %&gt;"></jbpm:processimage>即可显示出流程图及当前节点的位置。

8如果有nullpointexception,修改UploadServlet,代码如下:

JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
     if(jbpmContext == null)
     {
      jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();
     }

8 运行试试吧,应该能够成功的。

分享到:
评论
4 楼 tangwenchao86 2010-02-03  
厉害,以后我得多多向你学习。呵呵。
3 楼 Bluesnails 2007-10-09  
ProcessImageServlet只是显示流程图,显示当前节点位置是自定义标签库实现的,即jbpm.tld及ProcessImageTag类实现的。
2 楼 libin2722 2007-08-27  
能再说的详细点吗
1 楼 ren_xs 2007-07-13  

JBPM,DEMO中的JBPMCONTEXT 的初始化是通过WEB.XML中的过滤类给实现的,所以NULL值的产生,是没有设置那个过滤类。


没有设置过滤类的处理方法:


JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
     if(jbpmContext == null)
     {
      jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); 
     }


设置过滤类,初始化JbpmContext 对象。


  <filter>
    <filter-name>JbpmContextFilter</filter-name>
    <filter-class>org.jbpm.web.JbpmContextFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>JbpmContextFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>


相关推荐

Global site tag (gtag.js) - Google Analytics