posts - 59, comments - 244, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

JBPM4.4发布zip流程包和流程图显示

Posted on 2010-10-02 11:15 penngo 阅读(8032) 评论(5)  编辑  收藏 所属分类: JBPM
上一篇在spring mvc下发布jbpm流程只介绍了发布jpdl的流程定义文件,并没有把流程图也一起发布,本篇将把流程定义文件和流程图一起打包为zip格式发布。

先介绍jbpm流程设计器开发(3)的代码修改
com.workflow.designer.view.Menu.java代码,主要是增加生成图片和把jpdl和图片打包为zip文件。
 1saveItem.addActionListener(new ActionListener(){
 2            public void actionPerformed(ActionEvent e)
 3            {
 4                JFileChooser fileChooser = new JFileChooser();
 5                fileChooser.setFileFilter(new FileNameExtensionFilter("zip""zip"));
 6                int result = fileChooser.showSaveDialog(Menu.this);
 7                if(result == fileChooser.APPROVE_OPTION){
 8                    String path = fileChooser.getSelectedFile().getAbsolutePath();
 9                    Map<String, InputStream> map = new Hashtable<String, InputStream>();
10                    SaveJpdl saveJpdl = new SaveJpdl();
11                    saveJpdl.save(map, gv.getGraph());    
12                    try{
13                        Color bg = null;
14                        bg = gv.getBackground();
15                        BufferedImage image = mxCellRenderer
16                        .createBufferedImage(gv.getGraph(), null1, bg,
17                                gv.isAntiAlias(), gv.getLayoutAreaSize(),
18                                gv.getCanvas());
19                        ByteArrayOutputStream bs = new ByteArrayOutputStream(); 
20                        ImageOutputStream imOut = ImageIO.createImageOutputStream(bs); 
21                        ImageIO.write(image, "png", imOut);
22                        InputStream is = new ByteArrayInputStream(bs.toByteArray());
23                        map.put("process.png", is);
24                        ZipUtil.saveZip(path + ".zip", map);
25                    }

26                    catch(Exception ex){
27                        ex.printStackTrace();
28                    }

29                }

30            }

31        }
);

ZipUtil生成zip文件。
 1public class ZipUtil {
 2    //调用该方法生成zip文件
 3    public static void saveZip(String fileName, Map<String, InputStream> dataMap) {
 4        try {
 5            FileOutputStream fos = new FileOutputStream(fileName);
 6            JarOutputStream jos = new JarOutputStream(fos);
 7            byte buf[] = new byte[256];
 8            if (dataMap != null{
 9                Set<Entry<String, InputStream>> entrySet = dataMap.entrySet();
10                int len = -1;
11                for (Entry<String, InputStream> entry : entrySet) {
12                    String name = entry.getKey();
13                    InputStream inputStream = entry.getValue();
14                    if (name != null && inputStream != null{
15                        BufferedInputStream bis = new BufferedInputStream(
16                                inputStream);
17                        JarEntry jarEntry = new JarEntry(name);
18                        jos.putNextEntry(jarEntry);
19
20                        while ((len = bis.read(buf)) >= 0{
21                            jos.write(buf, 0, len);
22                        }

23
24                        bis.close();
25                        jos.closeEntry();
26                    }

27                }

28            }

29            jos.flush();
30            jos.close();
31            fos.flush();
32            fos.close();
33        }
 catch (Exception ex) {
34            throw new RuntimeException(ex);
35        }

36    }

37}

继续使用上一篇在spring mvc下发布jbpm流程代码发布流程
类com.mvc.rest.RestController修改
 1@Controller
 2public class RestController {
 3
 4    public RestController() {
 5
 6    }

 7
 8    @RequestMapping(value = "/welcome", method = RequestMethod.GET)
 9    public String registPost() {
10        return "/welcome";
11    }

12
13    @RequestMapping(value = "/deploy", method = RequestMethod.GET)
14    public String deployRest() {
15        return "/deploy";
16    }

17
18
19    @RequestMapping(value = "/end/{processId}", method = RequestMethod.GET)
20    public void deployend(HttpServletRequest request,
21            HttpServletResponse response, @PathVariable("processId") String processId) {    
22        ProcessEngine processEngine = (ProcessEngine) SpringContextTool
23        .getBean("processEngine");
24        ProcessInstance processInstance = processEngine.getExecutionService().startProcessInstanceByKey("myprocess");
25        ProcessDefinition processDefinition = processEngine.getRepositoryService().createProcessDefinitionQuery()
26      .processDefinitionId(processInstance.getProcessDefinitionId())
27      .uniqueResult();
28        //获取流程图
29        InputStream inputStream = processEngine.getRepositoryService().getResourceAsStream(processDefinition.getDeploymentId(), processDefinition.getImageResourceName());
30        byte[] b = new byte[256];
31        int len = -1;
32        try{
33             while((len = inputStream.read(b)) > 0{
34                 response.getOutputStream().write(b, 0, len);
35             }

36             
37             inputStream.close();
38             response.getOutputStream().flush();
39             response.getOutputStream().close();
40        }

41       catch(Exception e){
42           e.printStackTrace();
43       }

44    }

45    
46    @RequestMapping(value = "/deployAction", method = RequestMethod.POST)
47    public ModelAndView deployAction(HttpServletRequest request,
48            HttpServletResponse response, ModelMap modelMap) {
49        String realPath = request.getSession().getServletContext().getRealPath(
50                "")
51                + "/WEB-INF/deploy/"
52        try {
53            if (ServletFileUpload.isMultipartContent(request)) {
54                MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
55                for (Iterator it = multipartRequest.getFileNames(); it
56                        .hasNext();) {
57                    String key = (String) it.next();
58                    MultipartFile file = multipartRequest.getFile(key);
59                    if (file.getOriginalFilename().length() > 0{
60                        String filename = file.getOriginalFilename();
61                        
62                        File saveFile = new File(realPath + filename);
63                        FileOutputStream fos = new FileOutputStream(saveFile);
64                        fos.write(file.getBytes());
65                        fos.flush();
66                        fos.close();
67                        ProcessEngine processEngine = (ProcessEngine) SpringContextTool
68                                .getBean("processEngine");
69                        RepositoryService rs = processEngine.getRepositoryService();
70                        File deployFile = new File(saveFile.getAbsolutePath());
71                        if (deployFile.exists()) {
72                            // 发布流程 
73                            FileInputStream in = new FileInputStream(deployFile.getAbsolutePath());
74                            ZipInputStream zin = new ZipInputStream(in);
75                            String deploymentId = processEngine
76                            .getRepositoryService().createDeployment().addResourcesFromZipInputStream(zin).deploy();
77
78                            modelMap.put("deploy""发布成功,版本号为:" + deploymentId);
79                            in.close();
80                            zin.close();
81                        }

82                    }

83                }

84            }

85        }
 catch (Exception e) {
86            modelMap.put("deploy""发布失败!" );
87            e.printStackTrace();
88        }

89
90        return new ModelAndView("/end", modelMap);
91    }

92}

WEB-INF/view增加文件end.jsp,主要用来显示流程图
 1<html>
 2<head>
 3<meta http-equiv="Content-Type" content="text/html; charset=GBK">
 4<title>流程发布</title>
 5</head>
 6<body>
 7<label><%=request.getAttribute("deploy")%></label>
 8<img src="end/myprocess" />
 9</body>
10</html>

运行效果:
设计器生成带jpdl和图片的zip流程包。
http://www.blogjava.net/pengo/
把该流程保存为Test.zip。

http://www.blogjava.net/pengo/

http://www.blogjava.net/pengo/

终于在国庆有空,把这一篇也写了。正好在国庆把做过的东西,整理下。

设计器:设计器程序
源码:jbpmspring









评论

# re: JBPM4.4发布zip流程包和流程图显示  回复  更多评论   

2013-05-06 20:05 by 郭贝
=====================================
东西不错 求源码啊!下载不了 hanyijun85@163.com

# re: JBPM4.4发布zip流程包和流程图显示[未登录]  回复  更多评论   

2013-10-22 14:44 by 小徐
东西不错 谢谢分享,求代码+设计器 xujinbiao007@163.com

# re: JBPM4.4发布zip流程包和流程图显示  回复  更多评论   

2013-11-05 10:58 by zzz
东西不错 谢谢分享,求代码+设计器 zhaozongzhan@163.com

# re: JBPM4.4发布zip流程包和流程图显示  回复  更多评论   

2014-02-19 10:40 by chenhua0725
代码下载不了,能不能发给我的呢?谢谢了 243857699@qq.com

# re: JBPM4.4发布zip流程包和流程图显示  回复  更多评论   

2016-02-18 14:49 by 班伟
楼主。SpringContextTool这是个什么意思?

只有注册用户登录后才能发表评论。


网站导航: