久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

activiti自定義流程之整合(四):整合自定義表單部署流程定義

 WindySky 2017-10-16
 綜合前幾篇博文內容,我想在整合這一部分中應該會有很多模塊會跳過不講,,就如自定義表單的表單列表那一塊,,因為這些模塊在整合的過程中都幾乎沒有什么改動,再多講也是重復無用功,。


正因為如此,,在創(chuàng)建了流程模型之后,模型列表的展示也是和之前的沒有什么區(qū)別,,而且都是很簡單的后臺查詢以及前臺展示,,這一部分也就不過多的講了。


模型列表頁面如下:


 
至于其中的修改和刪除也沒什么多講的,,刪除很簡單,,而修改也是activiti-modeler實現(xiàn)的主要功能,我們只需要跳轉過去就行,。


重要的部分在于部署,,因為點擊部署到達后臺以后,activiti就要和自定義的form表單打賞關系,。
以上頁面的html代碼如下:
[html] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. <div id="logdiv1" ng-init="init();">   
  2.     <p style="font-size:24px;margin:3px">模型列表</p>   
  3.     <center>   
  4.    <table border="1px" style="margin-top:1px;width:87%;font-size:18px;text-align:center;margin-left:2px;margin-top:auto;position:relative;float:left;" cellSpacing="0px" cellPadding="0px">  
  5.       <tr style="background-color:#ccc">  
  6.          <td>ID</td>  
  7.          <td>NAME</td>  
  8.          <td>KEY</td>  
  9.          <td>描 述</td>  
  10.          <td>版本</td>  
  11.          <td>創(chuàng)建時間</td>  
  12.          <td>修改時間</td>  
  13.          <td>操 作</td>  
  14.       </tr>  
  15.       <tr ng-repeat="model in modelList | orderBy:'id'" >  
  16.          <td>{{model.id}}</td>  
  17.          <td>{{model.name}}</td>  
  18.          <td>{{model.key}}</td>  
  19.          <td>{{model.metaInfo}}</td>  
  20.          <td>{{model.version}}</td>  
  21.          <td>{{model.createTime | date:"yyyy-MM-dd HH:mm:ss"}}</td>  
  22.          <td>{{model.lastUpdateTime | date:"yyyy-MM-dd HH:mm:ss"}}</td>  
  23.          <td><a href="script:;" ng-click="deploye(model)">部署</a>   
  24.          <a href="script:;" ng-click="delete(model)">刪除</a>   
  25.          <a href="script:;" ng-click="update(model.id)">修改</a>  
  26.          </td>  
  27.       </tr>  
  28.    </table>    
  29.    </center>   
  30. </div>    

點擊部署要走到后臺,,前臺就需要js控制,相應的js代碼如下:
[javascript] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  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.         $scope.deploye=function(model){  
  15.             console.log(model);  
  16.             $http.post("./deploye.do",model).success(function(deployResult){  
  17.                 $location.path("/processList");  
  18.             });  
  19.         }  
  20.           
  21.         $scope.update=function(modelId){  
  22.             window.open("http://localhost:8080/activitiTest1/service/editor?id="+modelId);  
  23.         }  
  24.         
  25.     
  26. }])    



而后程序到達后臺,,后臺代碼如下:
[java] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. /** 
  2.      * 根據(jù)模型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.                 // 獲取forms拿到formname  
  23.                 Model modelData = repositoryService.getModel(modelId);  
  24.                 ObjectNode modelNode = (ObjectNode) new ObjectMapper()  
  25.                         .readTree(repositoryService  
  26.                                 .getModelEditorSource(modelData.getId()));  
  27.                 byte[] bpmnBytes = null;  
  28.                 BpmnModel model = new BpmnJsonConverter()  
  29.                         .convertToBpmnModel(modelNode);  
  30.                 bpmnBytes = new BpmnXMLConverter().convertToXML(model);  
  31.                 DeploymentBuilder db = repositoryService.createDeployment()  
  32.                         .name(modelData.getName());  
  33.                  //區(qū)別在這里  
  34.                 List<JsonNode> forms = modelNode  
  35.                         .findValues("formkeydefinition");  
  36.                 for (JsonNode node : forms) {  
  37.                     // aaa.form  
  38.                     String formName = node.textValue();  
  39.                     if (!"".equals(formName)) {  
  40.                         // 就是頁面的html代碼根據(jù)formName找到  
  41.                         String formContent = myFormService  
  42.                                 .findFormByFormName(formName);  
  43.                         ByteArrayInputStream bi = new ByteArrayInputStream(  
  44.                                 formContent.getBytes());  
  45.                         db.addInputStream(formName, bi);  
  46.                         break;  
  47.                     }  
  48.                 }  
  49.                 Deployment deployment = db.addString(  
  50.                         modelData.getName() + ".bpmn20.xml",  
  51.                         new String(bpmnBytes)).deploy();  
  52.                 if (deployment != null && deployment.getId() != null) {  
  53.                     map.put("isLogin""yes");  
  54.                     map.put("userName",  
  55.                             (String) req.getSession().getAttribute("userName"));  
  56.                     map.put("result""success");  
  57.                 }  
  58.             } catch (Exception e) {  
  59.                 e.printStackTrace();  
  60.   
  61.   
  62.             }  
  63.         } else {  
  64.             map.put("isLogin""no");  
  65.         }  
  66.         return map;  
  67.     }  


拿這段代碼和之前單獨的activiti流程部署的代碼相比,,就可以看到這里多出了查詢form的操作以及部署時新的inputStream的設置。



在這段代碼中,,需要我們自己根據(jù)formKey(即自定義的表單的文件名)從數(shù)據(jù)中查詢出相應的html表單代碼,,這段代碼也是自己寫的,如下:
[java] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. public Connection getDb() {  
  2.         Connection connection = null;  
  3.         try {  
  4.             Class.forName("com.mysql.jdbc.Driver");  
  5.             connection = DriverManager.getConnection(  
  6.                     "jdbc:mysql://localhost:3306/testtu""root""123456");  
  7.         } catch (Exception e) {  
  8.             e.printStackTrace();  
  9.         }  
  10.         return connection;  
  11.     }  
  12.   
  13.   
  14. public String findFormByFormName(String formName) {  
  15.         String formString = null;  
  16.         Connection connection = this.getDb();  
  17.         Statement statement;  
  18.         try {  
  19.             statement = connection.createStatement();  
  20.             PreparedStatement ps = connection  
  21.                     .prepareStatement("select * from formtest where formType=?");  
  22.             ps.setString(1, formName);  
  23.             ResultSet resultSet = ps.executeQuery();  
  24.             while (resultSet.next()) {  
  25.                 formString = resultSet.getString(3);  
  26.             }  
  27.             ;  
  28.         } catch (Exception e) {  
  29.             e.printStackTrace();  
  30.         }  
  31.         return formString;  
  32.     }  


實現(xiàn)這個表單設置的目的實際上是為了之后啟動流程時的操作,,因為部署之后就有了流程定義列表,,在流程定義列表中就可以啟動流程,只有在這里設置了,,那么點擊啟動流程時才能調用activitiService的相關方法獲取對應節(jié)點的表單,。


有了這個操作,在我們部署成功之后,,可以看到與之前的部署相比,,在數(shù)據(jù)庫ac_ge_bytearray表中會再多出一條表單相關的數(shù)據(jù),如圖:



那么至此,,整合自定義表單部署流程結束,。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多