JBPM4基础篇04-设计请假流程,JBPM集成到Web Project



这次我们需要在Web项目中集成jbpm。在JSP页面上实现流程的发布和删除。

  1. 使用Eclipse创建一个Web项目,使用Tomcat6.0作为服务器。
  2. 添加依赖库(Jar包)。这里我仅将本次测试需要的必须的Jar包加进来。没有多余的。(经过严格的测试

    此外,start一个流程的时候还要用到juel-impl.jar
    也可以直接把/jbpm-4.3/下的jbpm.jar和/jbpm4.3/lib/下的jar包全部复制进去,juel.jar中javax/el中的类与tomcat中的有冲突,把juel.jar中的javax/el删除即可。
  3. 将项目需要的一些XML和Properties文件加进来,放到工程的src目录下。(/jbpm-4.13/examples/src/)
  4. 创建一个请假流程文件leave.jpdl.xml

    XML文件的内容为:
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2.   
    3. <process name="leave" xmlns="http://jbpm.org/4.3/jpdl">  
    4.    <start g="199,100,48,48" name="start1">  
    5.       <transition g="-47,-17" name="to 申请" to="申请"/>  
    6.    </start>  
    7.    <task assignee="wxp" g="178,190,92,52" name="申请">  
    8.       <transition g="-71,-17" name="to 经理审批" to="经理审批"/>  
    9.    </task>  
    10.    <task assignee="manager" g="182,322,92,52" name="经理审批">  
    11.       <transition g="-83,-17" name="to exclusive1" to="exclusive1"/>  
    12.    </task>  
    13.    <task assignee="boss" g="358,471,92,52" name="老板审批">  
    14.       <transition g="406,571:-47,-17" name="to end1" to="end1"/>  
    15.    </task>  
    16.    <decision expr="#{day > 3 ? 'to 老板审批' : 'to end1'}" g="208,425,48,48" name="exclusive1">  
    17.       <transition g="-47,-17" name="to end1" to="end1"/>  
    18.       <transition g="405,448:-71,-17" name="to 老板审批" to="老板审批"/>  
    19.    </decision>  
    20.    <end g="211,549,48,48" name="end1"/>  
    21. </process>  
    <?xml version="1.0" encoding="UTF-8"?>
    
    <process name="leave" xmlns="http://jbpm.org/4.3/jpdl">
       <start g="199,100,48,48" name="start1">
          <transition g="-47,-17" name="to 申请" to="申请"/>
       </start>
       <task assignee="wxp" g="178,190,92,52" name="申请">
          <transition g="-71,-17" name="to 经理审批" to="经理审批"/>
       </task>
       <task assignee="manager" g="182,322,92,52" name="经理审批">
          <transition g="-83,-17" name="to exclusive1" to="exclusive1"/>
       </task>
       <task assignee="boss" g="358,471,92,52" name="老板审批">
          <transition g="406,571:-47,-17" name="to end1" to="end1"/>
       </task>
       <decision expr="#{day > 3 ? 'to 老板审批' : 'to end1'}" g="208,425,48,48" name="exclusive1">
          <transition g="-47,-17" name="to end1" to="end1"/>
          <transition g="405,448:-71,-17" name="to 老板审批" to="老板审批"/>
       </decision>
       <end g="211,549,48,48" name="end1"/>
    </process>

    注意:这些配置可以使用插件在Eclipse中可视化操作。
  5. 新建一个index.jsp,创建流程引擎,创建流程服务,发布流程和删除流程。
    1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
    2.     pageEncoding="UTF-8"%>  
    3. <%@ page import="java.util.*,org.jbpm.api.*" %>  
    4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    5. <html>  
    6. <head>  
    7. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
    8. <title>Insert title here</title>  
    9. </head>  
    10. <body>  
    11.     <a href="index.jsp">refresh</a>|  
    12.     <a href="index.jsp?action=deploy">deploy</a><br />  
    13.     <%    
    14.         ProcessEngine processEngine = Configuration.getProcessEngine(); // 创建一个流程引擎  
    15.         RepositoryService repositoryService = processEngine.getRepositoryService(); // 创建一个流程服务  
    16.           
    17.         String action = request.getParameter("action"); // 接收指令  
    18.         if ("deploy".equals(action)) { // 创建流程  
    19.             repositoryService.createDeployment().addResourceFromClasspath("leave.jpdl.xml").deploy();  
    20.         } else if ("remove".equals(action)) { // 删除流程  
    21.             String deploymentId = request.getParameter("deploymentId");  
    22.             repositoryService.deleteDeploymentCascade(deploymentId);  
    23.         }  
    24.         List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery().list(); // 获取流程列表  
    25.         for(ProcessDefinition pd : list) {  
    26.     %>  
    27.         <%=pd.getId() %>,<%=pd.getName() %>,<%=pd.getVersion() %><a href="index.jsp?action=remove&deploymentId=<%=pd.getDeploymentId() %>">delete</a><br />  
    28.     <%  
    29.         }  
    30.     %>  
    31.   
    32. </body>  
    33. </html>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值