[jbpm]在JSP页面中显示JBPM流程图2008-07-10 14:20下载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的例子里,这三个文件共同完成JBPM流程图的显示。
要使两个文件发生作用,必须得在web.xml里配置,配置方法:
<!-- jBPM FileServlet -->
<servlet>
<servlet-name>ProcessImageServlet</servlet-name>
<servlet-class>org.jbpm.webapp.servlet.ProcessImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ProcessImageServlet</servlet-name>
<url-pattern>/processimage</url-pattern>
</servlet-mapping>
在页面中使用:<jbpm:processimage task="${taskBean.taskInstanceId}"/> 就会把流程图显示在当前位置。
在实际环境中可能会出现的问题与必要的修改
问题一
如果你是用spring整合的jbpm,那么在两个类里的取JbpmContext方法会出错。
JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext(); //这个是会出问题的。
修改:
1).ProcessImageTag.java的private void initialize()方法里。
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(pageContext.getServletContext());
JbpmTemplate jbpmTemplate = (JbpmTemplate) wac.getBean("jbpmTemplate");
jbpmTemplate.execute(new JbpmCallback() {
public Object doInJbpm(JbpmContext context) {
if (taskInstanceId > 0) {
TaskInstance taskInstance = context.getTaskMgmtSession().loadTaskInstance(taskInstanceId);
currentToken = taskInstance.getToken();
}
else
{
if (tokenInstanceId > 0)
currentToken = context.getGraphSession().loadToken(tokenInstanceId);
}
return null;
}
});
2).
public class ProcessImageServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private ProcessDefinition processDefinition;
private byte[] bytes;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
final long processDefinitionId = Long.parseLong( request.getParameter( "definitionId" ) );
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
JbpmTemplate jbpmTemplate = (JbpmTemplate) wac.getBean("jbpmTemplate");
jbpmTemplate.execute(new JbpmCallback() {
public Object doInJbpm(JbpmContext context) {
processDefinition = context.getGraphSession().loadProcessDefinition(processDefinitionId);
bytes = processDefinition.getFileDefinition().getBytes("processimage.jpg");
return null;
}
});
OutputStream out = response.getOutputStream();
out.write(bytes);
out.flush();
}
}
问题二
如果你的流程是用中文字符,且数据库字符集为utf-8,再数据库中为正确的utf-8内容,也可能会乱码错误。
如:我的数据库里的gpd.xml
出错的类:ProcessImageTag.java
出错行:result[0] = Integer.valueOf(node.attribute("x").getValue());
如果此地为nullpoint错误,是因为上下文的Element root中的字符为乱码。
修改:
原代码:Element rootDiagramElement = DocumentHelper.parseText(new String(gpdBytes)).getRootElement();
修改后:Element rootDiagramElement = DocumentHelper.parseText(new String(gpdBytes, "utf-8")).getRootElement();
说明:有个地方要注意,<jbpm:processimage task="${taskBean.taskInstanceId}"/> 显示图片是以当前的路径为基础的。style="background-image:url(processimage?definitionId=1) ",也就是说当页面为:http://localhost/jbpm/workflow/showTaskInstance.jsp时,你所访问的流程图地址为:http://localhost/jbpm/workflow/processimage?definitionId=1,这个地址是错误的,实际地址为:http://localhost/jbpm/processimage?definitionId=1,要正确显示需修改ProcessImageTag.java
原代码:background-image:url(" + imageLink + ");
修改后:background-image:url(" + ((HttpServletRequest) pageContext.getRequest()).getContextPath() + "/" + imageLink + ");
OK,恭喜你成功显示JBPM流程图。
注:此文原创,转载请注明原文出处!http://hi.baidu.com/xiaolangs/blog/item/ea0625fb1d3ff061034f5685.html
分享到:
相关推荐
jbpm image tag lib and web.xml 博文链接:https://fengshujuan.iteye.com/blog/97291
jbpm4.4流程图
jBPM2-流程图与JBPM API.ppt jBPM2-流程图与JBPM API.ppt
需要加载jbpm的包,数据库驱动,jaxen.jar
1、JBPM5流程图设计规则。 2、bpmn2.0。 3、节点使用规则 4、下载后重命名为名称.doc即可打开
JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM...
jbpm4生成流程图,根据每个不同的流程轨迹把连线变成红色。
JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子。带有文档教程和所有源码+JAR包。在网上找了半天jbpm6\jbpm7的资料,都很少。所以 环境:Myeclipse2015 JDK1.7 mysql 5.0 Struts2+Spring3.1 1...
jbpm工作流程jbpm工作流程jbpm工作流程jbpm工作流程jbpm工作流程
jBPM教学视频(09流程图跟踪.zip)jBPM教学视频(09流程图跟踪.zip)
业务流程定制,领导审批。工作流开发,含有lib
jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍
JBPM流程引擎设计 工作流资料JBPM流程引擎设计 工作流资料JBPM流程引擎设计 工作流资料JBPM流程引擎设计 工作流资料JBPM流程引擎设计 工作流资料
这是我自己在这里几天学习jbpm做的一个小实例,完全用JSP+JBPM,接下来我会和spring结合在一起,希望在学习的你有帮助
关于jbpm 的详细介绍,有关jbpm的功能、流程图、以及特殊功能。少有的资源
jbpm流程
JBPM流程监控的实现过程
文档详细介绍了如何利用JBPM开发流程应用,从框架构造到节点处理。