Posted on 2010-09-07 00:55
penngo 阅读(5499)
评论(3) 编辑 收藏 所属分类:
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>
14
alert('<%=deploy%>');
15
</script>
16
<form name="upform" action="deployAction" method="POST" enctype="multipart/form-data">
17
18
<input type ="file" name="file1" id="file1"/> <br/>
19
<!-- <input type ="file" name="file2" id="file2"/> -->
20
<input type="submit" value="上传" /><br/>
21
</form>
22
</body>
23
</html>
运行效果:
本人测试环境:jdk6 + tomcat6.0.20
源码:
jbpm4.4_spring3