- 浏览: 3430797 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
整合Activiti Modeler到业务系统(或BPM平台)
http://www.kafeitu.me/activiti/2013/03/10/integrate-activiti-modeler.html
activit 5.12.1集成activiti-modeler 到 自己的业务系统(集成流程跟踪-完美支持IE) http://jhaij.iteye.com/blog/1871635
根据第二篇文章,整合成功;
FAQ:
1. 无法进入editor.
http://localhost:8080/YouPRJ/modeler/service/editor?id=2050,前提是这个id必需存在与act_re_model表里面,
那么,在调用这个之前,如何插入一条记录到这个表么?
待解决........
-------------
看到咖啡兔的例子,是先使用java保存到数据库,然后再打开editor, 保存的代码:
javascript: 一边保存,一边打开,同时保存后的页面又做reload, 很特别很有趣的做法,值得学习....
2. web editor保存的bpmn20文件到哪里去了?
会更新ACT_RE_MODEL和ACT_GE_BYTEARRAY表,ACT_GE_BYTEARRAY表保存了图片和xml文件信息(其实是json格式的字符串),并关联到ACT_RE_MODEL表。
ACT_RE_MODEL
说明:流程设计器设计流程后,保存数据到该表。
EDITOR_SOURCE_VALUE_ID(流程文件放在ACT_GE_BYTEARRAY中的ID);
EDITOR_SOURCE_EXTRA_VALUE_ID(流程文件图像放在ACT_GE_BYTEARRAY中的ID)。
3. 如何去部署保存在数据库里面的ACT_RE_MODEL表里面的工作流?
咖啡兔的源码: 创建,部署,删除,导出,遍历
问题:
1. java.lang.NoSuchMethodError: org.activiti.engine.impl.bpmn.diagram.ProcessDiagramCanvas.drawSequenceflowWithoutArrow(IIIIZZ)V
应为本地有两个工程的pom.xml都使用了
临时关闭或者删除一个工程,就不会提示这个错误了,至于为什么?我也搞不清楚。。。网上几乎没有人碰到这个错误,莫非是我太幸运???
http://www.kafeitu.me/activiti/2013/03/10/integrate-activiti-modeler.html
activit 5.12.1集成activiti-modeler 到 自己的业务系统(集成流程跟踪-完美支持IE) http://jhaij.iteye.com/blog/1871635
根据第二篇文章,整合成功;
FAQ:
1. 无法进入editor.
http://localhost:8080/YouPRJ/modeler/service/editor?id=2050,前提是这个id必需存在与act_re_model表里面,
那么,在调用这个之前,如何插入一条记录到这个表么?
待解决........
-------------
看到咖啡兔的例子,是先使用java保存到数据库,然后再打开editor, 保存的代码:
javascript: 一边保存,一边打开,同时保存后的页面又做reload, 很特别很有趣的做法,值得学习....
$(function() { $('#create').button({ icons: { primary: 'ui-icon-plus' } }).click(function() { $('#createModelTemplate').dialog({ modal: true, width: 500, buttons: [{ text: '创建', click: function() { if (!$('#name').val()) { alert('请填写名称!'); $('#name').focus(); return; } setTimeout(function() { location.reload(); }, 1000); $('#modelForm').submit(); } }] }); }); });
@RequestMapping(value = "create", method = RequestMethod.POST) public void create(@RequestParam("name") String name, @RequestParam("key") String key, @RequestParam("description") String description, 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")); response.sendRedirect(request.getContextPath() + "/service/editor?id=" + modelData.getId()); } catch (Exception e) { logger.error("创建模型失败:", e); } }
2. web editor保存的bpmn20文件到哪里去了?
会更新ACT_RE_MODEL和ACT_GE_BYTEARRAY表,ACT_GE_BYTEARRAY表保存了图片和xml文件信息(其实是json格式的字符串),并关联到ACT_RE_MODEL表。
ACT_RE_MODEL
说明:流程设计器设计流程后,保存数据到该表。
EDITOR_SOURCE_VALUE_ID(流程文件放在ACT_GE_BYTEARRAY中的ID);
EDITOR_SOURCE_EXTRA_VALUE_ID(流程文件图像放在ACT_GE_BYTEARRAY中的ID)。
3. 如何去部署保存在数据库里面的ACT_RE_MODEL表里面的工作流?
咖啡兔的源码: 创建,部署,删除,导出,遍历
package me.kafeitu.demo.activiti.web.workflow; import java.io.ByteArrayInputStream; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.activiti.bpmn.converter.BpmnXMLConverter; import org.activiti.bpmn.model.BpmnModel; import org.activiti.editor.constants.ModelDataJsonConstants; import org.activiti.editor.language.json.converter.BpmnJsonConverter; import org.activiti.engine.RepositoryService; import org.activiti.engine.repository.Deployment; import org.activiti.engine.repository.Model; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.node.ObjectNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; /** * 流程模型控制器 * * @author henryyan */ @Controller @RequestMapping(value = "/workflow/model") public class ModelController { protected Logger logger = LoggerFactory.getLogger(getClass()); @Autowired RepositoryService repositoryService; /** * 模型列表 */ @RequestMapping(value = "list") public ModelAndView modelList() { ModelAndView mav = new ModelAndView("workflow/model-list"); List<Model> list = repositoryService.createModelQuery().list(); mav.addObject("list", list); return mav; } /** * 创建模型 */ @RequestMapping(value = "create", method = RequestMethod.POST) public void create(@RequestParam("name") String name, @RequestParam("key") String key, @RequestParam("description") String description, 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")); response.sendRedirect(request.getContextPath() + "/service/editor?id=" + modelData.getId()); } catch (Exception e) { logger.error("创建模型失败:", e); } } /** * 根据Model部署流程 */ @RequestMapping(value = "deploy/{modelId}") public String deploy(@PathVariable("modelId") String modelId, RedirectAttributes redirectAttributes) { 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(); redirectAttributes.addFlashAttribute("message", "部署成功,部署ID=" + deployment.getId()); } catch (Exception e) { logger.error("根据模型部署流程失败:modelId={}", modelId, e); } return "redirect:/workflow/model/list"; } /** * 导出model的xml文件 */ @RequestMapping(value = "export/{modelId}") public void export(@PathVariable("modelId") String modelId, HttpServletResponse response) { try { Model modelData = repositoryService.getModel(modelId); BpmnJsonConverter jsonConverter = new BpmnJsonConverter(); JsonNode editorNode = new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId())); BpmnModel bpmnModel = jsonConverter.convertToBpmnModel(editorNode); BpmnXMLConverter xmlConverter = new BpmnXMLConverter(); byte[] bpmnBytes = xmlConverter.convertToXML(bpmnModel); ByteArrayInputStream in = new ByteArrayInputStream(bpmnBytes); IOUtils.copy(in, response.getOutputStream()); String filename = bpmnModel.getMainProcess().getId() + ".bpmn20.xml"; response.setHeader("Content-Disposition", "attachment; filename=" + filename); response.flushBuffer(); } catch (Exception e) { logger.error("导出model的xml文件失败:modelId={}", modelId, e); } } @RequestMapping(value = "delete/{modelId}") public String delete(@PathVariable("modelId") String modelId) { repositoryService.deleteModel(modelId); return "redirect:/workflow/model/list"; } }
问题:
1. java.lang.NoSuchMethodError: org.activiti.engine.impl.bpmn.diagram.ProcessDiagramCanvas.drawSequenceflowWithoutArrow(IIIIZZ)V
应为本地有两个工程的pom.xml都使用了
<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>${activiti.version}</version> </dependency>
临时关闭或者删除一个工程,就不会提示这个错误了,至于为什么?我也搞不清楚。。。网上几乎没有人碰到这个错误,莫非是我太幸运???
评论
2 楼
pyzheng
2015-08-20
哈哈 其实那时候我也只是玩一下而已 并没有做过多的研究 你问题解决了就好 共勉...........
1 楼
疯狂的君子胤
2015-08-18
我的页面一直错误,我就是找不到错误,后来看到你的这个指导也没注意,直到现在我找到我错误的原因了才看到你的指导,想哭,我这是自作孽呀!!!!!!!!!!!
发表评论
-
drools 规则文件 —— 语法
2014-06-09 21:53 3430原文:http://liureying.blog.163.co ... -
使用eclipse创建bpmn2文件的一些问题
2014-06-07 15:18 1756使用bpmn2 diagram Editor编辑器的问题 1 ... -
JBPM6入门资料: Spring4 + Hibernate4 + JBPM6整合
2014-05-21 19:39 18782参考资料: =============== ... -
我的Activiti例子
2013-09-21 15:01 6904Spring 与Activiti的入门整合 http://ww ... -
各种状态的任务查询以及和业务对象关联
2013-09-21 14:26 1963http://www.kafeitu.me/activiti/ ... -
Activiti: 三种部署方式和几种启动方式
2013-09-20 00:24 4731三种部署: 1.自动部署: <property name ... -
Activiti modeler 国际化要点
2013-09-18 15:33 25581. 界面文本:src/main/resources/sten ... -
Activiti5.12共22张表
2013-09-17 14:10 1969(1)用户管理表 ACT_ID_GROUP; ... -
Activiti: 关于表单的一些接口
2013-09-17 09:31 2485获得流程启动的时候的表单信息 ProcessInstance ... -
Activiti5: TaskQuery查询API
2013-09-16 13:34 3471http://blog.csdn.net/iflow/arti ... -
第一个Activiti5.13 + Spring3.x例子
2013-09-16 13:24 2365参考: http://www.iteye.com/topic/ ... -
kft-activiti-demo: 部署记录
2013-09-13 17:36 20132.SpringMvc + Activiti + Hibern ... -
SSH 整合 Activiti
2013-09-09 14:45 2024原文:http://blog.chinaunix.net/ui ... -
Activiti BPM Platform工作流的一些资料
2013-09-03 16:07 2936Activiti官方: http://www.activiti ... -
JBPM5.4发送email
2013-05-29 15:57 2083JBPM5.4配置参考: http://panyongzhen ... -
Spring3.1 + Hibernate4.2.1 + JBPM5.4 + Ehache整合例子
2013-05-29 11:17 9483pom.xml ----------------------- ... -
JBPM5 Designer 2.3源码问题
2013-05-24 09:50 2344最新本2.4发布,但是里面是使用Maven的module方式来 ... -
Spring 3 & jBPM 5 & LocalTaskService
2013-05-24 09:52 1829帖子地址:https://community.jboss.or ... -
JBPM Designer 部署
2013-05-24 09:53 1653版本:2.4 把war放到tomcat下面之后,进入的url是 ... -
Dynamic Process Creation Using API [JBPM 5.1]
2013-05-23 08:53 1734http://atulkotwale.blogspot.com ...
相关推荐
在本实例中,我们将探讨如何将这两个优秀框架整合起来,利用 Activiti Modeler 在 Spring Boot 应用中实现业务流程的可视化设计和执行。 首先,我们需要理解 Spring Boot 如何配置 Activiti。在 Spring Boot 项目中...
通过学习这个实例,你不仅可以掌握 Spring Boot 整合 Activiti Modeler 的基本操作,还能了解到如何在实际项目中应用工作流引擎来实现流程自动化,提高工作效率。在实际开发中,你可以根据需求扩展 Activiti 功能,...
Activiti-Modeler是一款强大的工作流网页版设计器,专为简化和优化业务流程管理而设计。它基于流行的Activiti工作流引擎,提供了一个直观、易用的界面,使得开发者和业务分析师无需深入代码就能设计、修改和部署工作...
10. **自定义扩展**: 除了内置的功能,Activiti Modeler 还允许通过插件系统进行自定义扩展,例如添加新的图形元素、行为或验证规则,以满足特定的业务需求。 综上所述,Activiti Modeler 5.18 是一个功能全面的...
7. 网页设计器整合:Activiti Modeler与SpringBoot应用无缝集成,用户在Web端即可进行全流程设计,降低了系统部署和使用的复杂度。 这个项目不仅提供了完整的流程管理功能,而且具有良好的扩展性和可定制性,对于...
Activiti Modeler 集成是企业流程管理(BPM)领域中的一个重要概念,它涉及到将Activiti Modeler工具与其他系统或平台进行整合,以便更有效地设计、部署和执行业务流程。Activiti Modeler是一款基于BPMN 2.0标准的...
《SpringBoot整合Activiti与Modeler实践详解》 在企业级应用开发中,流程管理扮演着至关重要的角色,SpringBoot以其轻量级、快速启动和易于集成的特点,成为了开发首选框架之一。而Activiti作为一款强大的工作流...
在本场景中,我们关注的是如何将 Activiti 5.21 版本的 Modeler 集成到非 Maven 项目中,以及如何进行流程创建、发布和资源下载。以下是关于这一主题的详细知识讲解。 首先,让我们了解 Activiti Modeler。Activiti...
这篇教程将详细介绍如何将 Activiti 5.17.0 集成到您的项目中,以实现高效的企业级工作流管理。 首先,理解 Activiti 的核心概念至关重要。Activiti 是基于 BPMN 2.0 标准的,BPMN(Business Process Model and ...
整合`activiti5.22.0`与`springmvc`的`modeler设计器`是一项复杂的工作,涉及到多个层面的集成。理解上述知识点,并根据实际项目需求进行调整,才能构建出高效、稳定的业务流程管理系统。在实践中,你还需要考虑安全...
3. **任务管理**:Activiti 提供了任务列表,用户可以看到待处理的任务,完成任务后系统会自动根据流程定义推进到下一环节。 4. **表单支持**:Activiti 可以集成自定义的表单,用于收集或展示流程中的数据。汉化后...
SpringBoot 2.x 集成 Activiti 5.22 和 Modeler 可视化界面是一项常见的企业级应用开发任务,它涉及到流程自动化、微服务架构以及UI设计等多个技术领域。下面将详细介绍这个集成过程中的关键知识点。 首先,**...
在实际项目中,整合Activiti工作流和Web流程设计器可以显著提高业务流程的管理效率,降低维护成本。通过对上述步骤的深入理解和实践,你可以构建出符合业务需求的高效工作流管理系统。而提供的"Activiti整合流程设计...
为了提高流程设计的便捷性和效率,本篇文章将介绍如何整合activiti-modeler 5.21.0版,并对其进行二次封装,从而降低开发难度。下面将详细介绍整个过程中的关键步骤。 **1. 复制activiti-explorer相关文件** 首先...
**SpringBoot整合Activiti完整DEMO详解** SpringBoot作为一个轻量级的Java开发框架,以其简洁的配置和快速的应用启动而受到广泛欢迎。而Activiti则是一个强大的工作流引擎,常用于实现业务流程自动化。本DEMO展示了...
Activiti是一个流行的开源工作流引擎,它提供了强大的业务流程自动化能力,而Spring Boot则简化了Java应用的开发过程。 ### 一、创建Spring Boot 2 Maven工程 首先,我们需要创建一个基于Spring Boot 2的新Maven...
本文将基于提供的"activiti-modeler-springboot-master"项目,深入探讨如何将 Activiti Modeler 集成到 SpringBoot 应用中,以便高效地设计和执行业务流程。 首先,我们需要了解 Activiti 的核心概念。Activiti 是...
在JEE(Java Enterprise Edition)环境下整合Activiti5.8是一项关键的任务,它涉及将流行的开源工作流引擎Activiti与企业级Java应用相结合,以实现更高效、灵活的业务流程管理。这篇博客()虽然没有提供具体的描述...