You are on page 1of 20

3/8/2015 整合Activiti 

Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

咖啡兔
首页
博客
Activiti
Activiti实战
分类
标签
关于我
GitHub
微博(我才是咖啡兔)
Activiti论坛

10 Mar 2013
Comments

整合Activiti Modeler到业务系统(或BPM平台)
1. 为什么要整合 《实战》

Activiti 5.10版本把原本独立的Activiti Modeler模块整合到了Activiti Explorer中,两者相结合使用起来很方便,通过Modeler设计的流程模型可以
直接部署到引擎,也可以把已经部署的流程转换为Model从而在Modeler中编辑。

在实际应用中也有这样的需求,把Modeler整合到业务系统中可以供管理员使用,或者作为BPM平台的一部分存在,很遗憾官方没有给出如何整
合Modeler的文档。

2. 整合工作
2.1 下载源码

首先需要从Github下载源码:https://github.com/Activiti/Activiti;可以直接用Git克隆,也可以下载zip格式的压缩包。

http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 1/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

2.2 复制文件

复制的所有文件均在activiti­webapp­explorer2目录中。

1.  src/main/resources中的editor.html、stencilset.json、plugins.xml到项目源码的源码根目录,保证编译之后在classes根目录
2.  src/main/webapp中的api、editor、explorer、libs到项目的webapp目录(与WEB­INF目录同级)

2.3 添加依赖

1 <dependency> ?

2     <groupid>org.activiti</groupid>
3     <artifactid>activiti‐explorer</artifactid>
4     <version>5.14</version>
5     <exclusions>
6         <exclusion>
http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 2/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

7             <artifactid>vaadin</artifactid>
8             <groupid>com.vaadin</groupid>
9         </exclusion>
10         <exclusion>
11             <artifactid>dcharts‐widget</artifactid>
12             <groupid>org.vaadin.addons</groupid>
13         </exclusion>
14         <exclusion>
15             <artifactid>activiti‐simple‐workflow</artifactid>
16             <groupid>org.activiti</groupid>
17         </exclusion>
18     </exclusions>
19 </dependency>
20 <dependency>
21     <groupid>org.activiti</groupid>
22     <artifactid>activiti‐modeler</artifactid>
23     <version>5.14</version>
24 </dependency>

2.4 添加Java类

添加一个ExplorerRestApplication.java类保存到项目中,注册了一些REST路由。

1 package org.activiti.explorer.rest.application; ?

2  
3 import org.activiti.editor.rest.application.ModelerServicesInit;
4 import org.activiti.rest.api.DefaultResource;
5 import org.activiti.rest.application.ActivitiRestApplication;
6 import org.activiti.rest.filter.JsonpFilter;
7 import org.restlet.Restlet;
8 import org.restlet.routing.Router;
9  
10 public class ExplorerRestApplication extends ActivitiRestApplication {
11  
12   public ExplorerRestApplication() {
13     super();
14   }
15   /**
16    * Creates a root Restlet that will receive all incoming calls.
17    */
http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 3/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

18   @Override
19   public synchronized Restlet createInboundRoot() {
20     Router router = new Router(getContext());
21     router.attachDefault(DefaultResource.class);
22     ModelerServicesInit.attachResources(router);
23     DiagramServicesInit.attachResources(router);
24     JsonpFilter jsonpFilter = new JsonpFilter(getContext());
25     jsonpFilter.setNext(router);
26     return jsonpFilter;
27   }
28  
29 }

2.5 配置web.xml

在web.xml文件中添加如下配置:

1 <!‐‐ Restlet adapter, used to expose modeler functionality through REST ‐‐> ?

2 <servlet>
3     <servlet‐name>RestletServlet</servlet‐name>
4     <servlet‐class>org.restlet.ext.servlet.ServerServlet</servlet‐class>
5     <init‐param>
6         <!‐‐ Application class name ‐‐>
7         <param‐name>org.restlet.application</param‐name>
8         <param‐value>org.activiti.explorer.rest.application.ExplorerRestApplication</param‐value>
9     </init‐param>
10 </servlet>
11  
12 <!‐‐ Catch all service requests ‐‐>
13 <servlet‐mapping>
14     <servlet‐name>RestletServlet</servlet‐name>
15     <url‐pattern>/service/*</url‐pattern>
16 </servlet‐mapping>

2.6 控制器

使用Spring MVC做了一个简单的封装,也可以使用其他的MVC实现。

1 package me.kafeitu.demo.activiti.web.workflow; ?

2  
http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 4/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

3 import java.io.ByteArrayInputStream;
4 import java.util.List;
5  
6 import javax.servlet.http.HttpServletRequest;
7 import javax.servlet.http.HttpServletResponse;
8  
9 import org.activiti.bpmn.converter.BpmnXMLConverter;
10 import org.activiti.bpmn.model.BpmnModel;
11 import org.activiti.editor.constants.ModelDataJsonConstants;
12 import org.activiti.editor.language.json.converter.BpmnJsonConverter;
13 import org.activiti.engine.RepositoryService;
14 import org.activiti.engine.repository.Deployment;
15 import org.activiti.engine.repository.Model;
16 import org.apache.commons.io.IOUtils;
17 import org.apache.commons.lang3.StringUtils;
18 import org.codehaus.jackson.JsonNode;
19 import org.codehaus.jackson.map.ObjectMapper;
20 import org.codehaus.jackson.node.ObjectNode;
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
23 import org.springframework.beans.factory.annotation.Autowired;
24 import org.springframework.stereotype.Controller;
25 import org.springframework.web.bind.annotation.PathVariable;
26 import org.springframework.web.bind.annotation.RequestMapping;
27 import org.springframework.web.bind.annotation.RequestParam;
28 import org.springframework.web.servlet.ModelAndView;
29 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
30  
31 /**
32  * 流程模型控制器
33  * 
34  * @author henryyan
35  */
36 @Controller
37 @RequestMapping(value = "/workflow/model")
38 public class ModelController {
39  
40   protected Logger logger = LoggerFactory.getLogger(getClass());
41  
42   @Autowired
43   RepositoryService repositoryService;
http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 5/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

44  
45   /**
46    * 模型列表
47    */
48   @RequestMapping(value = "list")
49   public ModelAndView modelList() {
50     ModelAndView mav = new ModelAndView("workflow/model‐list");
51     List<model> list = repositoryService.createModelQuery().list();
52     mav.addObject("list", list);
53     return mav;
54   }
55  
56   /**
57    * 创建模型
58    */
59   @RequestMapping(value = "create")
60   public void create(@RequestParam("name") String name, @RequestParam("key") String key, @RequestParam("descript
61           HttpServletRequest request, HttpServletResponse response) {
62     try {
63       ObjectMapper objectMapper = new ObjectMapper();
64       ObjectNode editorNode = objectMapper.createObjectNode();
65       editorNode.put("id", "canvas");
66       editorNode.put("resourceId", "canvas");
67       ObjectNode stencilSetNode = objectMapper.createObjectNode();
68       stencilSetNode.put("namespace", "http://b3mn.org/stencilset/bpmn2.0#");
69       editorNode.put("stencilset", stencilSetNode);
70       Model modelData = repositoryService.newModel();
71  
72       ObjectNode modelObjectNode = objectMapper.createObjectNode();
73       modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, name);
74       modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);
75       description = StringUtils.defaultString(description);
76       modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
77       modelData.setMetaInfo(modelObjectNode.toString());
78       modelData.setName(name);
79       modelData.setKey(StringUtils.defaultString(key));
80  
81       repositoryService.saveModel(modelData);
82       repositoryService.addModelEditorSource(modelData.getId(), editorNode.toString().getBytes("utf‐8"));
83  
84       response.sendRedirect(request.getContextPath() + "/service/editor?id=" + modelData.getId());
http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 6/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

85     } catch (Exception e) {
86       logger.error("创建模型失败:", e);
87     }
88   }
89  
90   /**
91    * 根据Model部署流程
92    */
93   @RequestMapping(value = "deploy/{modelId}")
94   public String deploy(@PathVariable("modelId") String modelId, RedirectAttributes redirectAttributes) {
95     try {
96       Model modelData = repositoryService.getModel(modelId);
97       ObjectNode modelNode = (ObjectNode) new ObjectMapper().readTree(repositoryService.getModelEditorSource(mod
98       byte[] bpmnBytes = null;
99  
100       BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);
101       bpmnBytes = new BpmnXMLConverter().convertToXML(model);
102  
103       String processName = modelData.getName() + ".bpmn20.xml";
104       Deployment deployment = repositoryService.createDeployment().name(modelData.getName()).addString(processNa
105       redirectAttributes.addFlashAttribute("message", "部署成功,部署ID=" + deployment.getId());
106     } catch (Exception e) {
107       logger.error("根据模型部署流程失败:modelId={}", modelId, e);
108     }
109     return "redirect:/workflow/model/list";
110   }
111  
112   /**
113    * 导出model的xml文件
114    */
115   @RequestMapping(value = "export/{modelId}")
116   public void export(@PathVariable("modelId") String modelId, HttpServletResponse response) {
117     try {
118       Model modelData = repositoryService.getModel(modelId);
119       BpmnJsonConverter jsonConverter = new BpmnJsonConverter();
120       JsonNode editorNode = new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId()
121       BpmnModel bpmnModel = jsonConverter.convertToBpmnModel(editorNode);
122       BpmnXMLConverter xmlConverter = new BpmnXMLConverter();
123       byte[] bpmnBytes = xmlConverter.convertToXML(bpmnModel);
124  
125       ByteArrayInputStream in = new ByteArrayInputStream(bpmnBytes);
http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 7/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

126       IOUtils.copy(in, response.getOutputStream());
127       String filename = bpmnModel.getMainProcess().getId() + ".bpmn20.xml";
128       response.setHeader("Content‐Disposition", "attachment; filename=" + filename);
129       response.flushBuffer();
130     } catch (Exception e) {
131       logger.error("导出model的xml文件失败:modelId={}", modelId, e);
132     }
133   }
134  
135 }
136 </model>

2.7 注意事项

如果使用Spring代理引擎,并且在项目中同时有activiti.cfg.xml文件(不管在main/resources还是test/resources目录),在activiti.cfg.xml里面的引擎
中添加下面的配置参数,否则会导致打开Modeler的编辑页面时读取数据返回204状态码。

1 <property name="processEngineName" value="test"></property> ?

引擎默认名称为default,ProcessEngines.getDefaultProcessEngine()查询时会先检索main/resources,然后再检索test/resources的activiti.cfg.xml和
activiti­context.xml文件,所以当main/resources监测不到指定文件时就会导致该引擎被当做web应用的引擎对象,这样会导致有两个引擎,所以把
引擎的名称改为非默认的“default”。

3. 中文乱码问题解决办法
在JVM参数中添加参数:

­Dsun.jnu.encoding=UTF­8 ­Dfile.encoding=UTF­8

参考:在Activiti Modeler中设计的流程包含奇数个中文时不能部署问题

4. 效果截图
在最新的kft­activiti­demo版本(1.7.0)中已经集成了Activiti Modeler,可以在线访问,也可以下载源码学习如何配置。

登录http://demo.kafeitu.me/kft­activiti­demo后选择流程管理­>模型工作区菜单项即可。
http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 8/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 9/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

原创文章,转载请注明:转载自:整合Activiti Modeler到业务系统(或BPM平台)
12

您可能也喜欢:

整合Activiti 新版Activiti 新版Activiti 咖啡兔 ­ 如何使用 Activiti 5.12发布 Activiti快速入门项 咖啡兔 ­ Activiti快 Activiti Explorer中


Modeler到业务系 Modeler发布以及 Modeler发布以及 Signavio打包 目­kft­activiti­demo 速入门项目­kft­ 文汉化 ­ 咖啡兔 ­

http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 10/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan
统(或BPM平台) 教程 教程 ­ 咖啡兔 ­ Activiti Modeler ­ ­ 咖啡兔 ­ activiti­demo ­ HenryYan
­ 咖啡兔 ­ HenryYan HenryYan HenryYan HenryYan
无觅关联推荐[?]

43 条评论   3 条新浪微博   4 条腾讯微博 最新 最早 最热

XP_PAN
用这个modeler导出来的xml里面定义的execution listener全都没有了是怎么回事?这个版本的bug还是只支持bpmn标准属性而不支持activiti的扩展属性?
2月3日 回复 顶 转发 举报

王凯
能不能请问下,,最后保存怎么弄..
1月5日 回复 顶 转发 举报

java小忙人
兔哥,为什么在5.16.4版本之后,ActivitiRestApplication、Restlet、Router这些文件都没有了呢?新增ExplorerRestApplication.java不成功,怎么回事?
2014年11月12日 回复 顶 转发 举报

倾听者
添加依赖那块请问怎么弄
2014年10月27日 回复 顶 转发 举报

鲍睿
[org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping]Mapped URL path [/reportTest/] onto handler 'reportTest'
[org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping]Mapped URL path [/tbDruginfoController] onto handler 'tbDruginfoController'
[org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping]Mapped URL path [/tbDruginfoController.*] onto handler 'tbDruginfoController'
[org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping]Mapped URL path [/tbDruginfoController/] onto handler 'tbDruginfoController'
[org.springframework.web.servlet.DispatcherServlet]FrameworkServlet 'springMvc': initialization completed in 2893 ms
2014­9­2 1:36:45 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http­8080
2014­9­2 1:36:45 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009

http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 11/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

2014­9­2 1:36:45 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/64 config=null
2014­9­2 1:36:45 org.apache.catalina.startup.Catalina start
信息: Server startup in 41477 ms
[org.springframework.web.servlet.PageNotFound]No mapping found for HTTP request with URI [/ui/loginController.do] in DispatcherServlet with name 'springMvc'

集成后再次访问项目,URL前面多了 /ui/ 这是什么情况?
2014年9月2日 回复 顶 转发 举报

jackjia
LZ ,报错,请指教:
严重: An exception occured writing the response entity
org.codehaus.jackson.JsonParseException: Unexpected end­of­String when base64 content
at [Source: N/A; line: ­1, column: ­1]
at org.codehaus.jackson.node.TextNode._reportBase64EOF(TextNode.java:297)
at org.codehaus.jackson.node.TextNode.getBinaryValue(TextNode.java:105)
at org.codehaus.jackson.node.TextNode.getBinaryValue(TextNode.java:160)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.get(BeanPropertyWriter.java:679)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:534)
at com.fasterxml.jackson.dataformat.xml.ser.XmlBeanSerializer.serializeFields(XmlBeanSerializer.java:158)

2014年6月3日 回复 顶 转发 举报

流逝的青春
感谢楼主的分享,成功了

2014年5月23日 回复 顶 转发 举报

dlc
咖啡兔,你好,创建模型repositoryService.saveModel(modelData);
repositoryService.addModelEditorSource(modelData.getId(), editorNode.toString().getBytes("utf­8"));
response.sendRedirect(request.getContextPath() + "/service/editor?id=" + modelData.getId());
http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 12/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

这几句代码中
1,repositoryService.saveModel(modelData);savemodel() 为什么数据库中没记录,我查了所有activiti表,都没数据,数据保存到哪儿去了?
2,如果要保存到act_re_model表中,我查网上资料说先保存进表,再编辑保存至act_re_model中,这到底是个怎样的流程呢?
我的activiti是5.14版本,谢谢

2014年5月20日 回复 顶 转发 举报

ICE
nice 成功了!!!谢谢兔哥!!!

2014年5月11日 回复 顶 转发 举报

zhouleyu.com
楼主,ModelController类,new ObjectMapper()

2014年4月26日 回复 顶 转发 举报

zhouleyu
楼主,ModelController类,new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId()))
2014年4月25日 回复 顶 转发 举报

zhouleyu
肯定要改源码,但是这样做的目的是什么呢?
2014年4月25日 回复 顶 转发 举报

咖啡兔

泡沫。 2014年4月10日 1楼
楼主,保存的时候让它启动流程,需要改源码?        顶 转发 回复

肯定要改源码,但是这样做的目的是什么呢?一个设计阶段,一个运行阶段为什么要绑定在一起呢?
2014年4月18日 回复 顶 转发 举报

泡沫。
楼主,保存的时候让它启动流程,需要改源码?
2014年4月10日 回复 顶 转发 举报

http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 13/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

稻草人
楼主,ModelController类,new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId()))。老报“The method readTree(JsonParser) in
the type ObjectMapper is not applicable for the arguments (byte[])”。可是我看kft­activiti­demo­no­maven项目中,也是这样的写的,jar包也导入了,不知道什么问
题。
2014年3月14日 回复 顶 转发 举报

Jawf
兔哥,我整合modeler到我的application里面后,5.14的版本,进入modeler后,save报错,弹对话框报“You do not have the required rights to store that model....”, 有碰
到过吗, 求帮助
2013年12月18日 回复 顶 转发 举报

姚万朋
兔哥你好,之前就拜托你的cas搭建,试过了,很强大,也做好了,我工作流这一块使用的是:jbpm4.4,也处理的差不多了,目前有个问题是:我流程自定义的
WEB设计器有什么好的思路吗? 貌似这个Modeler也不支持中文啊,给用户使用起来也是特别好吧???
2013年10月9日 回复 顶 转发 举报

渺渺

心无涯 2013年9月29日 1楼
我按照demo和上面说的整合,但是卡在进入编辑页面的引导图,一直转圈,无法进入编辑页
面        顶 转发 回复

估计是不支持IE吧 ,试试chrome内核的

2013年10月9日 回复 顶 转发 举报

心无涯
我按照demo和上面说的整合,但是卡在进入编辑页面的引导图,一直转圈,无法进入编辑页面

2013年9月29日 回复 顶 转发 举报

咖啡兔

刘轩 2013年8月20日 1楼
项目的common­lang包升级到版本3了,activiti还是2.4的,怎么办? common­lang3后包的路径有所变
化,org.apache.commons.lang3.StringUtils        顶 转发 回复
http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 14/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

同时包含lang和lang3

2013年8月20日 回复 顶 转发 举报

刘轩
项目的common­lang包升级到版本3了,activiti还是2.4的,怎么办? common­lang3后包的路径有所变化,org.apache.commons.lang3.StringUtils

2013年8月20日 回复 顶 转发 举报

夏日里的鱼
楼主,我在本地已经部署好了kft­activiti­demo,把已经部署好的流程转换成model,然后点进编辑改下坐标什么无关紧要的东西然后保存,再点击部署时,后台报错
org.activiti.engine.ActivitiException: Error parsing XML .....
java.lang.RuntimeException: Could not validate XML with BPMN 2.0 XSD....
我新建模型也是,稍复杂一点点,就报着种错。
想问下 为啥demo自动部署的转成model后点部署也报错。另有没有验证model的API?
恳请楼主解答,感谢!

2013年8月8日 回复 顶 转发 举报

huitailang
你好楼主,我整合activiti modeler以后,抛出异常:activiti library和activiti数据库schema版本不同步,自动更新。更新后,下次重启项目,又抛出此异常,请指点

2013年8月3日 回复 顶 转发 举报

sleeper_
很好用,按照上面说的,一步一步,没问题
2013年6月6日 回复 顶 转发 举报

123

哪天哪年 2013年5月30日 1楼
咖啡兔,你好,我按照你的方法,将modeler 整合到自己的项目之后,访问:
http://localhost:7777/modeler/service/editor,后台总是报:org.activiti.engine.ActivitiException: No
router defined。请问该如何解决?        顶 转发 回复

这个不是能随便访问的

http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 15/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

http://localhost:7777/modeler/service/editor
后面是要追加?id=xxx的。
repositoryService.saveModel(modelData);
response.sendRedirect(request.getContextPath() + "/service/editor?id=" + modelData.getId());

2013年6月4日 回复 顶 转发 举报

哪天哪年
咖啡兔,你好,我按照你的方法,将modeler 整合到自己的项目之后,访问:http://localhost:7777/modeler/service/editor,后台总是报:
org.activiti.engine.ActivitiException: No router defined。请问该如何解决?

2013年5月30日 回复 顶 转发 举报

杨发强
兔哥,为啥我的根据Model部署流程报错呢,是我的环境配置出错了吗?
Caused by: java.lang.RuntimeException: Could not validate XML with BPMN 2.0 XSD
at org.activiti.bpmn.converter.BpmnXMLConverter.convertToBpmnModel(BpmnXMLConverter.java:225)
at org.activiti.engine.impl.bpmn.parser.BpmnParse.execute(BpmnParse.java:179)
... 49 more
Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2­byte UTF­8 sequence.

2013年5月27日 回复 顶 转发 举报

serv
忘了说访问地址了. 
其实你知道的
/mymodeler/service/editor?id=2050

2013年5月18日 回复 顶 转发 举报

serv

奇点 2013年4月9日 1楼
这个整合有点重量级,尤其是将一些文件夹目录复制到项目的webapp目录(与WEB­INF目录同级),这
个破坏了原来项目的结构,有点乱        顶 转发 回复

问题解决. 
把 api editor explorer libs 这四个目录(activiti­modeler仅用到这四个目录,)剪切到 mymodeler(也可以是别的名字) 目录中.
WebContent
http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 16/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

­­WEB­INF
­­mymodeler
­­api
­­editor
­­explorer
­­libs

然后修改web.xml文件
修改RestletServlet 的 servlet­mapping 节点
修改为 /mymodeler/service/*

补充:
diagram­viewer ­ 是图标资源目录
VAADIN 是explorer前台缓存目录

modeler没有用上这两个目录. 占地方还不小呢.

还有那个包含build.xml的editor目录. 也没用.
2013年5月18日 回复 顶 转发 举报

咖啡兔

狄根振 2013年5月10日 1楼
楼主,Modeler已经整合到我的项目中了,如何把已经部署的流程转换为Model从而在Modeler中编辑
呢?        顶 转发 回复

kft­activiti­demo中有演示
2013年5月11日 回复 顶 转发 举报

狄根振
楼主,Modeler已经整合到我的项目中了,如何把已经部署的流程转换为Model从而在Modeler中编辑呢?
2013年5月10日 回复 顶 转发 举报

bzhy0122

http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 17/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

grails 工程中如何整合?

2013年5月5日 回复 顶 转发 举报

咖啡兔

狄根振 2013年4月28日 1楼
楼主,我整合完成后,自定义的流程文件中包含中文的时候,一部署就有错误,去掉中文就没事,我是
用的是你的activiti jar文件,xml中也增加了         顶 转发 回复

这个是Bug,目前还没有解决,可以绕过去这个bug:先导出xml文件再部署。
2013年5月3日 回复 顶 转发 举报

狄根振

废纸菩提 2013年4月12日 1楼
找到了您的例子运行了一下,当时自定义流程部署的时候老是报错:Error parsing XML       
顶 转发 回复

我也遇到了和你一样的问题,你的问题解决了吗?

2013年4月28日 回复 顶 转发 举报

狄根振
楼主,我整合完成后,自定义的流程文件中包含中文的时候,一部署就有错误,去掉中文就没事,我是用的是你的activiti jar文件,xml中也增加了
2013年4月28日 回复 顶 转发 举报

小古墓
ModelController类,new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId()))。老报“The method readTree(JsonParser) in the type
ObjectMapper is not applicable for the arguments (byte[])”。可是我看kft­activiti­demo­no­maven项目中,也是这样的写的,是我少了哪个jar吗?
2013年4月24日 回复 顶 转发 举报

废纸菩提
找到了您的例子运行了一下,当时自定义流程部署的时候老是报错:Error parsing XML

2013年4月12日 回复 顶 转发 举报

奇点

http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 18/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

这个整合有点重量级,尤其是将一些文件夹目录复制到项目的webapp目录(与WEB­INF目录同级),这个破坏了原来项目的结构,有点乱

2013年4月9日 回复 顶 转发 举报

nicolas围脖

yinlimin 2013年3月28日 1楼
按照上面说的,老是报 No router defined错误,不知怎么回事        顶 转发 回复

是不是没有加入org.restlet.routing.Router;

2013年4月3日 回复 顶 转发 举报

冬天里的一块木头

冬天里的一块木头 2013年4月2日 1楼
Spring MVC也支持RESTful,为什么要还要再使用restlet呢?        顶 转发 回复

咖啡兔 2013年4月3日 2楼
restlet是activiti­rest模块使用的,与spring mvc无关,源码里面集成是因为要注册资源(Resource)提供
rest服务        顶 转发 回复

恩恩,还有一个问题要请教下:每个userTask都要指定activiti:candidateGroups或activiti:candidateUsers,我能不能不指定呢?只单纯作为多个系统间的任务调度

2013年4月3日 回复 顶 转发 举报

咖啡兔

冬天里的一块木头 2013年4月2日 1楼
Spring MVC也支持RESTful,为什么要还要再使用restlet呢?        顶 转发 回复

restlet是activiti­rest模块使用的,与spring mvc无关,源码里面集成是因为要注册资源(Resource)提供rest服务

2013年4月3日 回复 顶 转发 举报

冬天里的一块木头
Spring MVC也支持RESTful,为什么要还要再使用restlet呢?

2013年4月2日 回复 顶 转发 举报

yinlimin

http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 19/20
3/8/2015 整合Activiti Modeler到业务系统(或BPM平台) ­ 咖啡兔 ­ HenryYan

按照上面说的,老是报 No router defined错误,不知怎么回事

2013年3月28日 回复 顶 转发 举报

社交帐号登录: 微博 QQ 人人 豆瓣 更多»

说点什么吧…

发布

多说强力驱动

Copyright © 2012~2013 咖啡兔|Henry Yan. Hosted by GitHub and powered by Jekyll. Templates from Michael Bleigh.

http://www.kafeitu.me/activiti/2013/03/10/integrate­activiti­modeler.html 20/20

You might also like