在spring mvc下发布jbpm流程

本篇使用到的相关技术内容:
spring 3.0
jbpm4.4
hsqldb
hibernate
其中hsqldb和hibernate都是从jbpm4.4的lib文件夹里面拷过去的。
本篇不再介绍jbpm与spring集成和spring mvc两方面的内容,有需要,请看之前的文章
jbpm4.3与spring集成请看 http://www.blogjava.net/pengo/archive/2010/01/04/308219.html
spring3.0 mvc和rest小例子请看 http://www.blogjava.net/pengo/archive/2010/07/03/325164.html

本篇只实现两个功能,上传流程定义文件和发布该上传的流程定义文件。
使用的流程定义文件是使用上一篇jbpm流程设计器生成的定义文件,
有关jbpm流程设计器介绍,请看 http://www.blogjava.net/pengo/archive/2010/08/31/330346.html

流程图:


把流程图保存为test.jpdl.xml
 1 <? xml version = " 1.0 "  encoding = " GBK " ?>
 2 < process name = " process "  xmlns = " http://jbpm.org/4.4/jpdl " >
 3 < start name = " 开始 "  g = " 83,34,40,40 " >
 4      < transition name = " to 任务 "  g = " 0,0 "  to = " 任务 "   />
 5 </ start >
 6 < task name = " 任务 "  g = " 231,78,80,40 " >
 7      < transition name = " to 结束 "  g = " 0,0 "  to = " 结束 "   />
 8 </ task >
 9 < end name = " 结束 "  g = " 173,188,40,40 "   />
10 </ process >


RestController.java的发布处理代码:

 1 @RequestMapping(value  =   " /deployAction " , method  =  RequestMethod.POST)
 2   public  ModelAndView deployAction(HttpServletRequest request,
 3    HttpServletResponse response, ModelMap modelMap)  {
 4  String realPath = request.getSession().getServletContext().getRealPath(
 5    "")
 6    + "/WEB-INF/deploy/"
 7  try {
 8   if (ServletFileUpload.isMultipartContent(request)) {
 9    MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
10    for (Iterator it = multipartRequest.getFileNames(); it
11      .hasNext();) {
12     String key = (String) it.next();
13     MultipartFile file = multipartRequest.getFile(key);
14     if (file.getOriginalFilename().length() > 0{
15      String filename = file.getOriginalFilename();
16      File saveFile = new File(realPath + filename);
17      FileOutputStream fos = new FileOutputStream(saveFile);
18     //保存上传的流程定义文件
19      fos.write(file.getBytes());
20      fos.flush();
21      fos.close();
22
23      ApplicationContext ctx = new ClassPathXmlApplicationContext(
24        "applicationContext.xml");
25        //调用已定义的Bean
26      ProcessEngine processEngine = (ProcessEngine) ctx
27        .getBean("processEngine");
28      File deployFile = new File(saveFile.getAbsolutePath());
29      if (deployFile.exists()) {
30       // 发布流程
31       String deploymentId = processEngine
32         .getRepositoryService().createDeployment()
33         .addResourceFromFile(deployFile).deploy();
34       System.out.println("========================ID:"
35         + deploymentId);
36       modelMap.put("deploy""发布成功,版本号为:" + deploymentId);
37      }

38
39     }

40    }

41   }

42  }
 catch (Exception e) {
43   modelMap.put("deploy""发布失败!" );
44   e.printStackTrace();
45  }

46
47  return new ModelAndView("/deploy", modelMap);
48 }

49

deploy.jsp代码:
 1 <% @ page language="java" contentType="text/html; charset=GBK"
 2    pageEncoding="GBK"
%>
 3 <! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
 4 < html >
 5 < head >
 6 < meta  http-equiv ="Content-Type"  content ="text/html; charset=GBK" >
 7 < title > 上传 </ title >
 8 </ head >
 9 < body >
10 <%  
11    String deploy = request.getAttribute("deploy").toString();
12
%>
13 < script >
14alert('<%=deploy%>');
15
</ script >
16 < form  name ="upform"  action ="deployAction"  method ="POST"  enctype ="multipart/form-data" >   
17      &nbsp;&nbsp;&nbsp;&nbsp;
18      < input  type  ="file"  name ="file1"  id ="file1" /> &nbsp;&nbsp; < br />
19      <!--   <input type ="file" name="file2" id="file2"/>&nbsp;&nbsp;  -->
20      < input  type ="submit"  value ="上传"   />< br />   
21    </ form >   
22 </ body >
23 </ html >

运行效果:




本人测试环境:jdk6 + tomcat6.0.20
源码: jbpm4.4_spring3

你可能感兴趣的:(在spring mvc下发布jbpm流程)