注:(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查询出创建模型时生成的相关文件,然后进行一定的转换后进行部署:

  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. } else {
  44. map.put("isLogin", "no");
  45. }
  46. return map;
  47. }

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

  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. $scope.update=function(modelId){
  22. window.open("http://localhost:8080/activitiTest2/service/editor?id="+modelId);
  23. }
  24. }])

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

act_re_procdef表中数据如下:

act_re_deployment中数据如下:

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

activiti自定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义的更多相关文章

  1. activiti自定义流程之Spring整合activiti-modeler5.16实例(九):历史任务查询

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

  2. activiti自定义流程之Spring整合activiti-modeler5.16实例(八):完成个人任务

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

  3. activiti自定义流程之Spring整合activiti-modeler5.16实例(七):任务列表展示

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

  4. activiti自定义流程之Spring整合activiti-modeler5.16实例(六):启动流程

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

  5. activiti自定义流程之Spring整合activiti-modeler5.16实例(五):流程定义列表

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

  6. activiti自定义流程之Spring整合activiti-modeler5.16实例(三):流程模型列表展示

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

  7. activiti自定义流程之Spring整合activiti-modeler5.16实例(二):创建流程模型

    注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建 1.maven导包,这里就没有什么多的好说了,直接代码: <depe ...

  8. activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建

    项目中需要整合activiti-modeler自定义流程,找了很多资料后,终于成功的跳转到activiti-modeler流程设计界面,以下是记录: 一.整合基础:eclipse4.4.1.tomca ...

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

    注:(1)环境搭建:activiti自己定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建         (2)创建流程模型:activiti自己定义流程之Spr ...

随机推荐

  1. 350. Intersection of Two Arrays II

    Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...

  2. HDU 5748 最长上升子序列的长度nlogn(固定尾部)

    Bellovin Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  3. 原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y【转】

    关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种 event.clientX/Y event.pageX/Y event.offsetX/Y event.layerX/Y event.sc ...

  4. JS初学之-代码精简思路

    1.差不多的代码,观察其不一样的地方,使用变量存起来,方便替代. 2.将其存入函数之中方便调用.

  5. Codeforces Round #149 (Div. 2)

    A. Heads or Tails 枚举. B. Big Segment \(L=min(l_i),\ R=max(R_i)\) 判断是否存在区间\([L,R]\). C. King's Path 单 ...

  6. URAL Mosaic(并查集)(欧拉回路)

    Mosaic Time limit: 0.25 secondMemory limit: 64 MB There's no doubt that one of the most important an ...

  7. Java——多线程安全问题

     静态代码块中没有this /* * 线程安全问题产生的原因: * 1.多个线程操作共享的数据 * 2.操作共享数据的线程代码有多条 * * 当一个线程在执行操作共享数据的多条代码过程中,其他线程 ...

  8. 磁盘检验[转自vbird]

    磁盘检验 由于系统在运行时谁也说不准啥时硬件或者是电源会有问题,所以『死机』可能是难免的情况(不管是硬件还是软件). 现在我们知道文件系统运行时会有硬盘与内存数据异步的状况发生,因此莫名其妙的死机非常 ...

  9. Intel指令集专有词解释

    SSE 概述 SSE(Streaming SIMD Extensions)是英特尔在AMD的3D Now!发布一年之后,在其计算机芯片Pentium III中引入的指令集,是MMX的超集.AMD后来在 ...

  10. Linux中的15个‘echo’ 命令实例

    echo是一种最常用的与广泛使用的内置于Linux的bash和C shell的命令,通常用在脚本语言和批处理文件中来在标准输出或者文件中显示一行文本或者字符串. echo命令的语法是: echo [选 ...