JBPM4.4 实现简单请假的例子的点滴

原创 2011年01月11日 10:01:00

注:

    本人近期在学习JBPM工作流开发,属于起步阶段。学习了family168 的jbpm 4 教程视频后,将该教程中的jsp请假例子整合到S2SH 框架中。在此,对family168 表示感谢!

 

 

   JBPM4.4   插件只能安装在Myeclipse 8.0 及以上版本上,我之前用Myeclipse 7.0 试了半天都没有成功,发现7.0 的eclipse 版本不够,下载了Myeclipse 8.5 后一次安装成功,很方便。访客可以参考网上的资料

 

 

 

关于JBPM4.4 整合 S2SH 过程中,需要注意到3点:

   1. JBPM el jar 包和 struts2 中jar 包的冲突

   2. java JVM 内存设置不够大,导致出现JVM 报错,可以在Myeclipse 中调高JVM 的内存设置大小

   3. hibernate   的dialect 设置问题: 将原来的  MysqlDialect 改成 MySQLInnoDBDialect

 

   <prop key="hibernate.dialect">
                      org.hibernate.dialect.MySQLInnoDBDialect
                  </prop>

 

 

 以上问题都可以在网上搜索得到解决,就不重复制造轮子了。

 

 

 

 

 

贴出  leave.jpdl.xml 的代码:

 

<?xml version="1.0" encoding="UTF-8"?>
<process name="leave" xmlns="http://jbpm.org/4.4/jpdl">
   <start g="196,25,48,48" name="start1">
      <transition to="applay"/>
   </start>
   <task assignee="#{owner}" form="/SSH/LeaveJSP/leave_add.jsp" g="172,118,92,52" name="applay">
      <transition to="managerAprove"/>
   </task>
   <task assignee="#{manager}" form="leaveAction!toManager.action" g="175,217,92,52" name="managerAprove">
      <transition g="-32,-8" name="aprove" to="exclusive1"/>
      <transition g="128,221;124,165:-42,-18" name="notAprove" to="applay"/>
   </task>
   <decision expr="#{dayNum > 3 ? 'bossAprove' : 'end'}" g="200,308,48,48" name="exclusive1">
      <transition g="-39,-10" name="end" to="end1"/>
      <transition g="339,342:-71,-17" name="bossAprove" to="bossAprove"/>
   </decision>
   <task assignee="#{boss}" form="leaveAction!toBoss.action" g="294,375,92,52" name="bossAprove">
  
      <transition g="339,457:" to="end1"/>
   </task>
   <end g="199,445,48,48" name="end1"/>
</process>

 

 

 

改xml 文件和 原版的xml 文件的区别就在于   <task assignee="#{manager}"      <task assignee="#{boss}"。

原版本 是    <task assignee=“manager”      <task assignee=“boss”。指定了具体用户名的用户来接受任务,而在现实中,不能将部门经理的用户名以及老板的用户名写入到xml 文件中。

 

我的设想是:   某个用户启动了请假流程定义后,需要该用户的直接部门经理和上级部门经理来批准,请假天数《=3时,只需直接部门经理批准就可,》3天时,需要上级部门经理批准。

这是和原版本中最重要的区别:

当用户启动流程定义时:

 Map session=ActionContext.getContext().getSession();
         Map map = new HashMap();
         User user=(User)session.get("user");
            map.put("owner",user.getUsername());
            map.put("manager", user.getDepartment().getManagerUser().getUsername());
            map.put("boss", user.getDepartment().getParent().getManagerUser().getUsername());
           
            executionService.startProcessInstanceById(defId, map);

 

 

这段代码将该用户的直接部门经理用户名和上级部门经理用户名添加到流程实例中

这样,只有该用户的两级部门经理才能看到待办任务!

 

 

 

 

 

 

在实现这个例子的过程中,显示 leave.png图片时,还遇到一个问题,

java.lang.IllegalStateException: getOutputStream() has already been called for this response
    at org.apache.catalina.connector.Response.getWriter(Response.java:604)

 

问题的原因:

 web容器生成的servlet代码中有out.write(””),这个和JSP中调用的response.getOutputStream()产生冲突.

 

解决方法:

 

byte[] b = new byte[1024];
    int len = -1;
    while ((len = inputStream.read(b, 0, 1024)) != -1) {
        response.getOutputStream().write(b, 0, len);
    }
    out.clear();
  out = pageContext.pushBody();

 

 

 

 

 

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【代码篇】JBPM4.4结合业务实现简单工作流

继博客【思想篇】工作流技术JBPM开发入门(三)的实现完成!应对业务的变化。   其实这次对于工作流的学习大概分了3主要个阶段:   1,结合业务开发一个简单的工作流,应对业务的变更 2,结合业务开发...

SpringMVC入门学习(二)应用注解方式+注解优化

前篇已经介绍使用SpringMVC的方式进行环境搭建,以及一个简单的demo测试,下面我们再来介绍一下使用注解的方式,如何实现。   添加配置文件   springAnnotation-servlet...

JBPM4.4总结(一)——基础知识

JBPM(Java Business Process Management),业务流程管理,是Jboss(现已被Redhat收购)旗下的开源工作流引擎,是覆盖了业务流程管理,工作流,服务协议等领域的一...

jbpm4.4_ssh_请假完整例子

Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8 整合例子(附完整的请假流程例子)。 1.       jbpm4.4 测试环境搭建 2. &#...

jbpm4.4 简单请假流程

Jbpm4.4  简单请假流程 这里是用jbpm4.4+Hibernate做的简单的请假流程(采用MyEclipse  8.6+ MySql)。 一.画流程图        名称:leave...
  • NCITS
  • NCITS
  • 2012-04-11 13:02
  • 3689

Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8 整合例子(附完整的请假流程例子)。

Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8 整合例子(附完整的请假流程例子)。 1.       jbpm4.4 测试环境搭建 2. &#...

Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合例子(附完整的请假流程例子,jbpm基础,常见问题解决)

Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8 整合例子(附完整的请假流程例子)。 1.       jbpm4.4 测试环境搭建 2. &#...

Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合例子(附完整的请假流程例子,jbpm基础,常见问题解决)

Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合例子(附完整的请假流程例子)。1.       jbpm4.4测试环境搭建2.     &#...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)