activiti自定义流程之Spring整合activiti-modeler实例(四):部署流程定义
2016-05-17 00:00
633 查看
1.maven导包及spring的一些基本配置与之前的没有什么变化,依旧沿用就好。
2.与流程定义相关的有3张表,分别是act_ge_bytearray、act_re_procdef和act_re_deployment。当然了,如果更准确的说,在我的自定义流程中,流程定义需要用到流程模型相关的数据,也可以说流程定义相关的就有四张表,也包括model表。
3.后台业务代码,根据前端传入的deploymentId部署流程定义,这里还是使用repositoryService进行操作,大致上的过程就是根据deploymentId查询出创建模型时生成的相关文件,然后进行一定的转换后进行部署:
[java]
view plain
copy
/**
* 根据模型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前台代码,这里实际上只是在之前的模型列表页面调用了一个方法,因此前端代码依旧是上篇中的代码,只是其中的方法这里调用罢了:
[javascript]
view plain
copy
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表中数据如下:
act_re_deployment中数据如下:
需要说明的是,这些数据在后续的操作中都需要用到,假如有缺少的,必定会影响后续的操作。
2.与流程定义相关的有3张表,分别是act_ge_bytearray、act_re_procdef和act_re_deployment。当然了,如果更准确的说,在我的自定义流程中,流程定义需要用到流程模型相关的数据,也可以说流程定义相关的就有四张表,也包括model表。
3.后台业务代码,根据前端传入的deploymentId部署流程定义,这里还是使用repositoryService进行操作,大致上的过程就是根据deploymentId查询出创建模型时生成的相关文件,然后进行一定的转换后进行部署:
[java]
view plain
copy
/**
* 根据模型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前台代码,这里实际上只是在之前的模型列表页面调用了一个方法,因此前端代码依旧是上篇中的代码,只是其中的方法这里调用罢了:
[javascript]
view plain
copy
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表中数据如下:
act_re_deployment中数据如下:
需要说明的是,这些数据在后续的操作中都需要用到,假如有缺少的,必定会影响后续的操作。
相关文章推荐
- spring 注解模式
- activiti自定义流程之Spring整合activiti-modeler实例(七):任务列表展示
- Spring实现动态数据源,支持动态添加、删除和设置权重及读写分离
- Spring JdbcTemplate实现通用的超级dao,比泛型dao更加强大
- Spring与RMI集成实现远程访问
- SpringMVC整合Shiro
- Java 8 新特性 – 终极手册整理
- Spring4新特性:Groovy Bean定义DSL
- java中final和static
- java二维码工具类,中间带LOGO的,很强大
- javamail接收邮件(较全)工具类
- java jsp实现不能通过后退访问缓存,每次都访问最新的
- Spring Task定时任务
- Eclipse控制台中的中文输出乱码问题
- java垃圾回收和收尾
- 基于Java NIO的Socket通信
- java:如何用代码控制H2 Database启动
- java如何生成二维码图片
- Java SpringMVC实现国际化整合案例分析(i18n)
- java中equals和==以及toString