注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

程序员小站

J2EE丨Spring | JVM | Scala

 
 
 

日志

 
 

JBPM入门实例(请假流程)  

2012-03-11 11:03:20|  分类: JBPM |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.首先新建一个java web项目,添加jbpm.jar 和jbpm安装目录/lib 中的所有jar到环境变量。
新建一个流程图如下:经理和老板均可批准或驳回申请,如果请假超过三天需要经老板审批。
JBPM4.3入门实例(请假流程) - 湘雅之梦 - nbsp爱的天空
因为图形化流程设计器并不完善,有些参数需要自己在XML文件中配置:test.jpdl.xml

<?xml version="1.0" encoding="UTF-8"?>
<process name="leave" xmlns="http://jbpm.org/4.3/jpdl">
<start g="211,41,64,49" name="start1">
<transition to="申请"/>
</start>
<task assignee="${owner}" form="apply.jsp" g="186,132,92,52" name="申请">
<transition to="经理审批"/>
</task>
<task assignee="manager" form="manager.jsp" g="185,208,92,52" name="经理审批">
<transition g="-38,-13" name="批准" to="exclusive1"/>
<transition g="409,248;410,218;415,162:23,-12" name="驳回" to="申请"/>
</task>
<decision expr="#{day > 3 ? '老板审批' : '结束'}" g="201,287,48,48" name="exclusive1">
<transition g="-50,-22" name="结束" to="end1"/>
<transition g="-23,-29" name="老板审批" to="老板审批"/>
</decision>
<task assignee="boss" form="boss.jsp" g="333,351,92,52" name="老板审批">
<transition g="-50,-22" name="批准" to="end1"/>
<transition name="驳回" to="申请" g="485,374;448,302:-45,-22"/>
</task>
<end g="197,395,48,48" name="end1"/>
</process>


 2.关键点解析。
得到流程定义、流程实例、代办任务集合:

ProcessEngine processEngine = Configuration.getProcessEngine();  RepositoryService repositoryService = processEngine.getRepositoryService();  ExecutionService executionService = processEngine.getExecutionService(); TaskService taskService = processEngine.getTaskService();


//流程定义
List<ProcessDefinition> pdList = repositoryService.createProcessDefinitionQuery().list();
//流程实例
List<ProcessInstance> piList = executionService.createProcessInstanceQuery().list();
//我的任务
List<Task> taskList = taskService.findPersonalTasks(user);


新建流程定义:

repositoryService.createDeployment()
.addResourceFromClasspath("process/test.jpdl.xml")
.deploy();

删除流程定义:

repositoryService.deleteDeployment(request.getParameter("id"));

开始流程、新建流程实例:

Map map = new HashMap();
map.put("owner",session.getAttribute("user"));
executionService.startProcessInstanceById(request.getParameter("id"),map);

删除流程实例:

//终止流程
executionService.endProcessInstance(pi.getId(), "cancle");
//或:从列表中删除
executionService.deleteProcessInstanceCascade(pi.getId());

申请,并流转到经理审批

Map map = new HashMap();
//map.put("owner",session.getAttribute("user"));
map.put("day",day);
map.put("reason",reason);

ProcessEngine processEngine = Configuration.getProcessEngine();
TaskService taskService = processEngine.getTaskService();

taskService.completeTask(request.getParameter("id"),map);

经理审批:
显示申请信息:
姓名:<%=taskService.getVariable(processId,"owner") %><br>
天数:<%=taskService.getVariable(processId,"day") %><br>
原因:<%=taskService.getVariable(processId,"reason") %><br>
批准或驳回:
String result = request.getParameter("result");

taskService.completeTask(id,result);
response.sendRedirect("index.jsp");

<form action="manager.jsp" method="post">
<input type="hidden" name="id" value="${param.id }">
<input name="result" type="submit" value="批准">
<input name="result" type="submit" value="驳回">
</form>

老板审批和经理审批流程一样。

源码下载地址:http://115.com/file/c255kdc8#

  评论这张
 
阅读(4678)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018