码迷,mamicode.com
首页 > 编程语言 > 详细

activiti自定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义

时间:2016-04-13 11:17:25      阅读:5441      评论:0      收藏:0      [点我收藏+]

标签:

注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建
        (2)创建流程模型:activiti自定义流程之Spring整合activiti-modeler5.16实例(二):创建流程模型 
        (3)流程模型列表展示:activiti自定义流程之Spring整合activiti-modeler5.16实例(三):流程模型列表展示


1.maven导包及spring的一些基本配置与之前的没有什么变化,依旧沿用就好。


2.与流程定义相关的有3张表,分别是act_ge_bytearray、act_re_procdef和act_re_deployment。当然了,如果更准确的说,在我的自定义流程中,流程定义需要用到流程模型相关的数据,也可以说流程定义相关的就有四张表,也包括model表。


3.后台业务代码,根据前端传入的deploymentId部署流程定义,这里还是使用repositoryService进行操作,大致上的过程就是根据deploymentId查询出创建模型时生成的相关文件,然后进行一定的转换后进行部署:
       

[java] view plain copy
 
 技术分享技术分享
  1. /** 
  2.  * 根据模型id部署流程定义 
  3.  *  
  4.  * @author:tuzongxun 
  5.  * @Title: deploye 
  6.  * @param @param activitiModel 
  7.  * @param @param redirectAttributes 
  8.  * @param @return 
  9.  * @return Object 
  10.  * @date Mar 17, 2016 12:30:05 PM 
  11.  * @throws 
  12.  */  
  13. @RequestMapping(value = "/deploye.do", method = RequestMethod.POST, produces = "application/json;charset=utf-8")  
  14. @ResponseBody  
  15. public Object deploye(@RequestBody ActivitiModel activitiModel,  
  16.         HttpServletRequest req) {  
  17.     Map<String, Object> map = new HashMap<String, Object>();  
  18.     boolean isLogin = this.isLogin(req);  
  19.     if (isLogin) {  
  20.         String modelId = activitiModel.getId();  
  21.         try {  
  22.             Model modelData = repositoryService.getModel(modelId);  
  23.             ObjectNode modelNode = (ObjectNode) new ObjectMapper()  
  24.                     .readTree(repositoryService  
  25.                             .getModelEditorSource(modelData.getId()));  
  26.             byte[] bpmnBytes = null;  
  27.             BpmnModel model = new BpmnJsonConverter()  
  28.                     .convertToBpmnModel(modelNode);  
  29.             bpmnBytes = new BpmnXMLConverter().convertToXML(model);  
  30.             String processName = modelData.getName() + ".bpmn20.xml";  
  31.             Deployment deployment = repositoryService.createDeployment()  
  32.                     .name(modelData.getName())  
  33.                     .addString(processName, new String(bpmnBytes)).deploy();  
  34.             if (deployment != null && deployment.getId() != null) {  
  35.                 map.put("isLogin", "yes");  
  36.                 map.put("userName",  
  37.                         (String) req.getSession().getAttribute("userName"));  
  38.                 map.put("result", "success");  
  39.             }  
  40.         } catch (Exception e) {  
  41.             e.printStackTrace();  
  42.   
  43.   
  44.         }  
  45.     } else {  
  46.         map.put("isLogin", "no");  
  47.     }  
  48.     return map;  
  49. }  





4.angular js前台代码,这里实际上只是在之前的模型列表页面调用了一个方法,因此前端代码依旧是上篇中的代码,只是其中的方法这里调用罢了:

[javascript] view plain copy
 
 技术分享技术分享
  1.    angular.module(‘activitiApp‘)    
  2.  .controller(‘modelCtr‘, [‘$rootScope‘,‘$scope‘,‘$http‘,‘$location‘, function($rootScope,$scope,$http,$location){    
  3.  $scope.init=function(){  
  4.       $http.post("./modelList.do").success(function(result) {  
  5.         if(result.isLogin==="yes"){  
  6.             $rootScope.userName=result.userName;  
  7.             console.log(result.data);   
  8.             $scope.modelList=result.data;  
  9.         }else{  
  10.             $location.path("/login");  
  11.         }  
  12.       });  
  13. }    
  14.       //部署流程定义,这里主要就是用这个方法  
  15.       $scope.deploye=function(model){  
  16.         console.log(model);  
  17.         $http.post("./deploye.do",model).success(function(deployResult){  
  18.             $location.path("/processList");  
  19.         });  
  20.       }  
  21.         
  22.       $scope.update=function(modelId){  
  23.         window.open("http://localhost:8080/activitiTest2/service/editor?id="+modelId);  
  24.       }  
  25.   }])    

 

5.部署之前,我们可以看到原本创建一个模型的时候,数据库中只会在model表和bytearray两张表分别出现一条和两条数据。而当成功部署以后,bytearray表中会再次增加两条数据,同时act_re_procdef和act_re_deployment这两张表也都会各自出现一条对应的数据。bytearray表此时数据如下图:

技术分享

 

act_re_procdef表中数据如下:

技术分享

 

act_re_deployment中数据如下:

技术分享

 

需要说明的是,这些数据在后续的操作中都需要用到,假如有缺少的,必定会影响后续的操作。

activiti自定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义

标签:

原文地址:http://www.cnblogs.com/tuzongxun/p/5386163.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!