标签:
自己学习Activiti,主要是通过拆解和重新组装咖啡兔的项目而学习的。
咖啡兔博客:http://www.kafeitu.me/
项目地址:https://github.com/henryyan/kft-activiti-demo
上面的GitHub中有maven版本和no-maven版本,我下的是no-maven版本
解压并部署项目
项目结构,报错地方是xml或者js文件,可以忽略
项目
本文就是为了将对应功能拆分出来:流程管理->模型工作区->创建功能
将咖啡兔项目中我们能用到的类拷贝过来
参考咖啡兔项目,修改对应配置文件
将Activiti5.16.4项目中activiti-explorer.war中相关文件拷贝到自己项目的指定位置中
jar包就使用官方示例中的jar包
为什么不全部使用咖啡兔项目的文件, 是因为我完全使用咖啡兔项目的文件弄不出来。没办法,只好使用官方示例对照参考。
参考咖啡兔项目,发现其模型【新建】接口调用的是下图中ModelController的create方法
拷贝到自己项目中的controller中,分析其代码
使用到HttpServletResponse,则项目需要引入tomcat的lib中的servlet-api.jar
使用到/service/editor接口,根据日志发现该接口不在spring管理中,则就有可能是在web.xml中配置的servlet
查看咖啡兔项目的web.xml果然在里面,在自己项目的web.xml中添加下面的代码
局部代码
<!-- Restlet adapter, used to expose modeler functionality through REST -->
<servlet>
<servlet-name>ExplorerRestletServlet</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
<init-param>
<!-- Application class name -->
<param-name>org.restlet.application</param-name>
<param-value>org.activiti.explorer.rest.ExplorerRestApplication</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ExplorerRestletServlet</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
使用到org.activiti.explorer.rest.ExplorerRestApplicatio这个类,开始以为是jar包中的文件,找半天没找到,后来看到居然是项目自己的包路径(⊙﹏⊙)b,果断拷贝到自己的项目中
至此,咖啡兔项目中的能用的代码就拷贝完了
create方法
@RequestMapping(value = "/create",method = RequestMethod.POST)
public void getEditor(
@RequestParam("description") String description,
@RequestParam("name") String name,
@RequestParam("key") String key,
HttpServletRequest request, HttpServletResponse response){
try {
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode editorNode = objectMapper.createObjectNode();
editorNode.put("id", "canvas");
editorNode.put("resourceId", "canvas");
ObjectNode stencilSetNode = objectMapper.createObjectNode();
stencilSetNode.put("namespace", "http://b3mn.org/stencilset/bpmn2.0#");
editorNode.put("stencilset", stencilSetNode);
Model modelData = repositoryService.newModel();
ObjectNode modelObjectNode = objectMapper.createObjectNode();
modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, name);
modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);
description = StringUtils.defaultString(description);
modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
modelData.setMetaInfo(modelObjectNode.toString());
modelData.setName(name);
modelData.setKey(StringUtils.defaultString(key));
repositoryService.saveModel(modelData);
repositoryService.addModelEditorSource(modelData.getId(), editorNode.toString().getBytes("utf-8"));
System.out.println("跳转页面");
response.sendRedirect(request.getContextPath() + "/service/editor?id=" + modelData.getId());
} catch (Exception e) {
System.out.println("创建模型失败");
}
}
在下载下来的Activiti5.16.4中找到activiti-explorer.war,解压得到部署文件夹
将下图指定文件夹拷贝到WebRoot中
将WEB-INF->classes中下图文件拷贝到自己项目的src中
为什么是上列这些文件,只能说是一点一点对照咖啡兔项目摸索出来的,(⊙﹏⊙)b人笨了就靠这样来弄了
就是要调用controller的页面,需要传递三个参数,怎么实现都可以,
我用的是bootstrap-3.3.5框架
用form表单提交的
页面
新增
保存成功并跳转到ActivitiModeler
在数据库表act_re_model中可以查看刚刚添加的数据
jar包没拷贝完,直接将官方示例中的jar包全部拷贝过来,实在不行,直接下载本示例,直接在上面改试试
后续就可以进行咖啡兔项目的分解学习了
Activiti学习——整合ActivitiModeler到项目中
标签:
原文地址:http://blog.csdn.net/flygoa/article/details/51890434