jbpm4.4学习笔记(1)

在学习了jbpm流程的基本流程定义部署,流程实例发起,管理等基本操作后,我们以一个请假流程为例来进一步学习jbpm。

我们首先设计一个流程定义,然后将所设计的流程定义集成到web工程中,然后实现请假流程定义的发布,查看和删除操作。

闲话少叙,具体的操作如下:

1、新建web工程

在eclipse中file->new->other然后选择Dynamic web project新建web工程。工程取名为jbpm4webchuang。创建工程后其文件结构如图4-1。

图4-1 新建web工程

2、创建请假流程定义leave.jpdl.xml

在我们所创建的项目中新建jpdl文件,保存在Java Resources/src目录下,同时拷贝jbpm4.4目录中examples中的相应注册文件到 Java Resources/src目录。此时工程文件结构如下图4-2。

图4-2 创建请假流程定义文件

此时我们设计待发布的请假流程,具体leave.jpdl.xml文件的代码如下:

[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <process name="leave" xmlns="http://jbpm.org/4.4/jpdl">  
  4.    <start name="start1" g="136,49,48,48">  
  5.       <transition name="to 申请" to="申请" g="-45,-22"/>  
  6.    </start>  
  7.    <task name="申请" g="112,146,92,52" assignee="lingo">  
  8.       <transition name="to 经理审批" to="经理审批" g="-69,-22"/>  
  9.    </task>  
  10.    <task name="经理审批" g="107,250,92,52" assignee="manager">  
  11.       <transition name="to exclusive1" to="exclusive1" g="-79,-22"/>  
  12.    </task>  
  13.    <decision name="exclusive1" g="125,322,48,48" expr="#{day > 3 ? 'to老板审批 ' : 'to end1'}">  
  14.       <transition name="to 老板审批" to="老板审批" g="265,344:-69,-22"/>  
  15.       <transition name="to end1" to="end1" g="-50,-22"/>  
  16.    </decision>  
  17.    <task name="老板审批" g="216,394,92,52" assignee="boss">  
  18.       <transition name="to end1" to="end1" g="261,473:-50,-22"/>  
  19.    </task>  
  20.    <end name="end1" g="127,449,48,48"/>  
  21. </process>  

其设计后的图形界面如图4-3(注意:我们可以通过图形界面直接设计流程定义):

图4-3 流程定义的图形显示

3、添加java依赖库

在eclipse中右键点击工程Build path->Configure Build Path出现如图4-4对话框。

图4-4 添加java依赖库

如上图所示,我添加的依赖库文件是之前将jbpm4的所有第三方类库放到一个文件夹中然后通过Add Library的方式添加jbpm依赖库(另一种方法也可以通过直接添加即Add External JARs来实现)。此处需要说明的是,此时添加的依赖库只是在eclipse编译时使用,即eclipse编译是可以通过,但是运行的时候,我们还需要将所需要的所有第三方jar文件添加到工程的WebContent/WEB-INF/lib目录下,即运行时依赖库。

4、将流程定义集成到web应用中

在工程的WebContent目录下创建Index.jsp文件,其代码如下:

[html]  view plain copy
  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=UTF-8">  
  8. <title>Insert title here</title>  
  9. </head>  
  10. <body>  
  11.     <!-- 部署流程定义对应连接 -->  
  12.     <a href="index.jsp?action=deploy">deploy</a><br>  
  13.     <%  
  14.         //获得processEngine流程引擎  
  15.         ProcessEngine processEngine=Configuration.getProcessEngine();  
  16.       
  17.         //获得RepositoryService对象  
  18.         //三个作用:1、流程发布定义 2、管理流程定义 3、删除流程定义  
  19.         RepositoryService repositoryService=processEngine.getRepositoryService();  
  20.           
  21.         //获得触发连接并处理  
  22.         String action=request.getParameter("action");  
  23.         if("deploy".equals(action))  
  24.         {  
  25.             //部署流程定义  
  26.             repositoryService.createDeployment().addResourceFromClasspath("leave.jpdl.xml").deploy();  
  27.         }else if("remove".equals(action))  
  28.         {  
  29.             //删除已部署的流程定义  
  30.             repositoryService.deleteDeploymentCascade(request.getParameter("id"));  
  31.         }  
  32.           
  33.         //获得流程定义  
  34.         List<ProcessDefinition> list =repositoryService.createProcessDefinitionQuery().list();  
  35.         for (ProcessDefinition pd: list)  
  36.         {  
  37.     %>  
  38.     <%=pd.getId() %><%=pd.getName() %><%=pd.getVersion() %><a href="index.jsp?action=remove&id=<%=pd.getDeploymentId()%>">remove</a><br>  
  39.     <%   
  40.         }  
  41.     %>  
  42. </body>  
  43. </html>  
具体代码比较简单,此处不再多加说明。

5、编辑web.xml文件

编辑web.xml文件主要是为了实现web服务的文件映射和服务注册,为了使用户能够通过web服务访问到index.jsp我们编写如下web.xml文件(否则会出现HTTP Status 404 报错):

[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"  
  3.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
  5.                       http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
  6.   version="3.0">  
  7.   
  8.     <welcome-file-list>  
  9.         <welcome-file>index.html</welcome-file>  
  10.         <welcome-file>index.htm</welcome-file>  
  11.         <welcome-file>index.jsp</welcome-file>  
  12.         <welcome-file>default.html</welcome-file>  
  13.         <welcome-file>default.htm</welcome-file>  
  14.         <welcome-file>default.jsp</welcome-file>  
  15.     </welcome-file-list>  
  16. </web-app>  

此时别忘了添加运行时依赖库。

6、程序运行效果

到此为止,整个web程序已经可以运行了,我们的运行环境是java JDK1.6+Apache Tomcat 7.0+jbpm 4.4。右键工程,点击Run As-> Run on Server即可弹出浏览器如图4-6:

图4-6 程序运行效果

如上图所示,点击deploy连接程序将会在后台部署一个新的流程定义同时显示出流程定义的id,名称和版本。点击remove,将会删除掉相应的流程定义。

7、总结语

这一节没有太多的新东西,只是在原来的操作上将流程定义的部署集成到web工程上,但是这是我们后面程序的基础,呵呵继续努力中,come on!。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值