activiti自己定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义
注:(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查询出创建模型时生成的相关文件,然后进行一定的转换后进行部署:
/**
* 依据模型id部署流程定义
*
* @author:tuzongxun
* @Title: deploye
* @param @param activitiModel
* @param @param redirectAttributes
* @param @return
* @return Object
* @date Mar 17, 2016 12:30:05 PM
* @throws
*/
@RequestMapping(value = "/deploye.do", method = RequestMethod.POST, produces = "application/json;charset=utf-8")
@ResponseBody
public Object deploye(@RequestBody ActivitiModel activitiModel,
HttpServletRequest req) {
Map<String, Object> map = new HashMap<String, Object>();
boolean isLogin = this.isLogin(req);
if (isLogin) {
String modelId = activitiModel.getId();
try {
Model modelData = repositoryService.getModel(modelId);
ObjectNode modelNode = (ObjectNode) new ObjectMapper()
.readTree(repositoryService
.getModelEditorSource(modelData.getId()));
byte[] bpmnBytes = null;
BpmnModel model = new BpmnJsonConverter()
.convertToBpmnModel(modelNode);
bpmnBytes = new BpmnXMLConverter().convertToXML(model);
String processName = modelData.getName() + ".bpmn20.xml";
Deployment deployment = repositoryService.createDeployment()
.name(modelData.getName())
.addString(processName, new String(bpmnBytes)).deploy();
if (deployment != null && deployment.getId() != null) {
map.put("isLogin", "yes");
map.put("userName",
(String) req.getSession().getAttribute("userName"));
map.put("result", "success");
}
} catch (Exception e) {
e.printStackTrace(); }
} else {
map.put("isLogin", "no");
}
return map;
}
4.angular js前台代码。这里实际上仅仅是在之前的模型列表页面调用了一个方法,因此前端代码依然是上篇中的代码,仅仅是当中的方法这里调用罢了:
angular.module('activitiApp')
.controller('modelCtr', ['$rootScope','$scope','$http','$location', function($rootScope,$scope,$http,$location){
$scope.init=function(){
$http.post("./modelList.do").success(function(result) {
if(result.isLogin==="yes"){
$rootScope.userName=result.userName;
console.log(result.data);
$scope.modelList=result.data;
}else{
$location.path("/login");
}
});
}
//部署流程定义,这里主要就是用这种方法
$scope.deploye=function(model){
console.log(model);
$http.post("./deploye.do",model).success(function(deployResult){
$location.path("/processList");
});
} $scope.update=function(modelId){
window.open("http://localhost:8080/activitiTest2/service/editor? id="+modelId);
}
}])
5.部署之前。我们能够看到原本创建一个模型的时候,数据库中仅仅会在model表和bytearray两张表分别出现一条和两条数据。
而当成功部署以后。bytearray表中会再次添加两条数据,同一时候act_re_procdef和act_re_deployment这两张表也都会各自出现一条相应的数据。bytearray表此时数据例如以下图:
act_re_procdef表中数据例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
act_re_deployment中数据例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
须要说明的是,这些数据在兴许的操作中都须要用到,假如有缺少的。必然会影响兴许的操作。
activiti自己定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义的更多相关文章
- activiti自己定义流程之Spring整合activiti-modeler实例(六):启动流程
1.启动流程并分配任务是单个流程的正式開始,因此要使用到runtimeService接口.以及相关的启动流程的方法.我习惯于用流程定义的key启动,由于有多个版本号的流程定义时,用key启动默认会使用 ...
- activiti自己定义流程之Spring整合activiti-modeler实例(一):环境搭建
项目中须要整合activiti-modeler自己定义流程,找了非常多资料后,最终成功的跳转到activiti-modeler流程设计界面.下面是记录: 一.整合基础:eclipse4.4.1.tom ...
- activiti自己定义流程之Spring整合activiti-modeler实例(七):任务列表展示
1.通过上一节的操作,能够知道流程启动以后会同一时候生成一个流程实例和用户任务.这个用户任务保存在act_ru_task和act_hi_task表中,从表明能够看出ru是runtime,hi是hist ...
- activiti自定义流程之Spring整合activiti-modeler5.16实例(五):流程定义列表
注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建 (2)创建流程模型:activiti自定义流程之Spring ...
- activiti自定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义
注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建 (2)创建流程模型:activiti自定义流程之Spring ...
- activiti自定义流程之Spring整合activiti-modeler5.16实例(九):历史任务查询
注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建 (2)创建流程模型:activiti自定义流程之Spring ...
- activiti自定义流程之Spring整合activiti-modeler5.16实例(八):完成个人任务
注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建 (2)创建流程模型:activiti自定义流程之Spring ...
- activiti自定义流程之Spring整合activiti-modeler5.16实例(七):任务列表展示
注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建 (2)创建流程模型:activiti自定义流程之Spring ...
- activiti自定义流程之Spring整合activiti-modeler5.16实例(六):启动流程
注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建 (2)创建流程模型:activiti自定义流程之Spring ...
随机推荐
- 计算器Pro应用项目源码
本计算器实现了一些简单的功能,可能本身还存在一些缺陷,希望大家提建议,能够改进一下. 源码项目我已经上传到源码天堂那里了:http://code.662p.com/list/11_1.html < ...
- [Windows Server 2008] 404错误设置方法
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:如何设置4 ...
- html 零散问题
1.iconfont的使用 https://www.cnblogs.com/yujihang/p/6706056.html 2.阴影效果比较 box-shadow:0 0 6px #000 inset ...
- 用 vue cli 脚手架搭建单页面 Vue 应用(进阶2)
1.配置 Node 环境. 自行百度吧. 安装好了之后,打开 cmd .运行 node -v .显示版本号,就是安装成功了. 注:不要安装8.0.0以上的版本,和 vue-cli 不兼容. 我使用的 ...
- g20学习笔记
BALProblem.h---------定义BALProblem类. BALProblem类保存我们的BA所需要的所有数据,包括相机与路标之间的联系,相机变量+路标变量的初始值.这些数据的原始信息都 ...
- php基础查找算法
1.顺序查找 function line_search($array,$tar) { if(!is_array($array) || count($array) < 1) return fals ...
- Windows下如何使用CMD命令进入MySQL数据库
1.打开[开始]>[运行]输入[cmd]单击[确定]后出现CMD命令黑色窗口,这就是我们说的CMD命令行,或者使用快捷键Windows键(在键盘上有个Windows标志的按键)+R输入cmd后回 ...
- 笔试算法题(57):基于堆的优先级队列实现和性能分析(Priority Queue based on Heap)
议题:基于堆的优先级队列(最大堆实现) 分析: 堆有序(Heap-Ordered):每个节点的键值大于等于该节点的所有孩子节点中的键值(如果有的话),而堆数据结构的所有节点都按照完全有序二叉树 排.当 ...
- laydate组件选择时间段的判断
前言: 在使用laydate组件的时候,难免会遇到选择时间段,官网给的文档中有选择时间段的组件,但是并不好用,首先只能选择一个月的时间段,有局限性,其次精确到时间的话要先选日期范围再选时间范围,很变态 ...
- elementui 后台管理系统遇到的问题(二) 树形控件 el-tree
elementui中树形控件的使用 一.将后台返回的数据填充到前端控件中,需要注意的几点问题 (1).el-tree中需要绑定node-key='自定义的id名称' (2).在配置data中defau ...