注:
本人近期在学习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整合s2sh 请假流程例子
jbpm4.4请假例子,eclipse工程 数据库为自动创建hslsql数据库,每次启动会自动清除
JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子。带有文档教程和所有源码+JAR包。在网上找了半天jbpm6\jbpm7的资料,都很少。所以 环境:Myeclipse2015 JDK1.7 mysql 5.0 Struts2+Spring3.1 1...
采用jbpm4.4实现了简单的请假流程。
jbpm4.4写的流程引擎例子,互相学习交流,直接导入eclipse中就可以了。这个是个web工程,需要web容器,我用的是tomcat6.
jbpm4.4 jar 包下载jbpm4.4 jar 包下载jbpm4.4 jar 包下载jbpm4.4 jar 包下载
JBPM4.4 工作流 入门 例子 HelloWorld
jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd
利用JBPM4.4编写的完整请假流程,涉及申请人填写,经理审批以及决策节点后的老板审批,加入SSH2与JBPM4.4的jar包过后部署好就可以用,只用修改applicationContext.xml中的数据库相关信息即可!
JBPM4.4入门例子(jsp+servlet)纯粹了解接口和基本操作。 jar包请到官网下载 另外项目部署之后可能会有问题,见里面的《部署说明》 希望对刚接触的朋友有用
jBPM4.4开发指南 开发手册 JBPM4.4 开发
jBPM4.4入门开发实例
jbpm4.4下载地址
JBPM4.4与SSH2之整合(附完整源码) 这些天,想着把jbpm4.4与ssh2整合一下,由于之前从来没用过jbpm,也不知道各版本之间会有什么差异(经过网上的收集对比,还真有些差异),整合起来,还真是有些步履艰难。收集了...
资源名称:JBPM4.4视频教程(22集附源码)资源目录:【】(01)jbpm4.4简介【】(02)JBPM4.4开发环境搭建【】(03)jbpm4.4环境搭建续【】(04)jbpm4.4配置文件和开发前准备【】(05)jbpm4.4部署流程发起流程实例【】(06)...
jbpm4.4整合s2sh 请假流程例子,项目很好,是学习JBPM的很好的例子,已经测试过,很好用,可以下载后好好研究一下
jbpm4.4开发指南,jbpm4.4用户指南
jBPM4.4数据库表简单介绍
自从前些日子发布了如何整合JBPM4.4+ssh2后,有些朋友问我有没有一个完整一点的实例,我看过贩卖你的jbpm的教程,我就参考那个请假的实例把它改装成ssh2版的吧。顺便也加入了模拟不同的角色登陆后能接到不同的待办...
NULL 博文链接:https://zhangzhaoaaa.iteye.com/blog/1684622