`
redxun
  • 浏览: 298393 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Activiti Eclipse Designer与Activiti Modeler的相互转换

 
阅读更多

 

 

在Activiti Modeler尚未推出之前,我们使用Activiti进行流程设计的时候,优先会使用官方提供的Eclipse插件来进行设计,然后再通过代码把流程设计文件发布至系统中,然后再调用启动流程,这会导致一个问题,当我们需要进行流程修改的时候,麻烦来了,解决这种问题方案有以下方式:

 

1.重新在eclipse设计器流程,然后再次通过代码发布至系统中,然后再次执行。

2.通过自身开发的界面,在线重新设计

 

 

Activiti Modeler提供了我们一种全新的方式,即允许用户在eclipse中进行设计,然后再上传,上传后可直接转为Modeler的格式,可在Modeler中打开,然后再修改。

 

如我们上传eclipse设计器中的流程设计文件:



 

通过上传配置,把eclipse设计的文件上传:



 

通过代码可以转化为Activiti Modeler在线设计的文件格式:

 



 

通过这种方式可以有效实现eclipse设计,在线设计的相互转换.

 

eclipse转为Modeler的格式的转化代码如下:

 

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;

import org.activiti.bpmn.converter.BpmnXMLConverter;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.editor.language.json.converter.BpmnJsonConverter;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Model;
import org.apache.commons.lang.StringUtils;

...



XMLInputFactory xif = XmlUtil.createSafeXmlInputFactory();
		Map<String, MultipartFile> files = request.getFileMap();
		Iterator<MultipartFile> it = files.values().iterator();
		while(it.hasNext()){
			MultipartFile f = it.next();
			InputStream is = f.getInputStream();
			InputStreamReader in = new InputStreamReader(is, "UTF-8");
			XMLStreamReader xtr = xif.createXMLStreamReader(in);
	        BpmnModel bpmnModel = new BpmnXMLConverter().convertToBpmnModel(xtr);
	        
	        if (bpmnModel.getMainProcess() == null 
	        		|| bpmnModel.getMainProcess().getId() == null) {
	        	msg="上传流程文件解析有问题!";
	        } else {
		      BpmnJsonConverter converter = new BpmnJsonConverter();
	          ObjectNode modelNode = converter.convertToJson(bpmnModel);
	          Model modelData = repositoryService.newModel();
	          
	          ObjectNode modelObjectNode = new ObjectMapper().createObjectNode();
	          modelObjectNode.put("name", subject);
	          modelObjectNode.put("revision", 1);
	          modelObjectNode.put("documentation", bpmDef.getDescp());
	          
	          modelData.setMetaInfo(modelObjectNode.toString());
	          modelData.setName(subject);
	          modelData.setTenantId(ContextUtil.getCurrentTenantId());
	          
	          repositoryService.saveModel(modelData);	          
	          //modelNode.put("resourceId", modelData.getId());
	          
	          logger.debug("json:"+modelNode.toString());
	          repositoryService.addModelEditorSource(modelData.getId(), modelNode.toString().getBytes("utf-8"));
	          
	          if(StringUtils.isEmpty(bpmDef.getDefId())){//创建新的流程定义
	        	  bpmDef.setMainDefId(idGenerator.getSID());
	        	  bpmDef.setModelId(modelData.getId());
		        
	        	  bpmDefManager.createEntity(bpmDef);
	          }else if("true".equals(isDeployNew)){//发布新的版本
	        	  //发布新的
	        	  bpmDefManager.doDeployNew(bpmDef, modelData.getId());
	          }else{//生成一新版本,关联该流程定义,不发布流程定义
	        	  bpmDefManager.doCopyNewVersion(bpmDef,modelData.getId());
	          }
	          
	          msg="成功上传BPMN流程文件!";
	          success=true;
	          
	        }

 

 

 

发布流程定义后,可以通过以下代码取到bpmn文件:

 

/**
	 * 取得流程定义的XML
	 * 
	 * @param deployId
	 * @return
	 */
	public String getDefXmlByDeployId(String deployId){
		String sql = "select a.* from ACT_GE_BYTEARRAY a where NAME_ LIKE '%bpmn20.xml' and DEPLOYMENT_ID_= ? ";
		final LobHandler lobHandler = new DefaultLobHandler(); // reusable
		final ByteArrayOutputStream contentOs = new ByteArrayOutputStream();
		String defXml = null;
		try{
			jdbcTemplate.query(sql, new Object[]{deployId },new AbstractLobStreamingResultSetExtractor<Object>(){
						public void streamData(ResultSet rs) throws SQLException, IOException{
							FileCopyUtils.copy(lobHandler.getBlobAsBinaryStream(rs, "BYTES_"), contentOs);
						}
				}
			);
			defXml = new String(contentOs.toByteArray(), "UTF-8");
		} catch (Exception ex){
			ex.printStackTrace();
		}
		return defXml;
	}

 

 具体访问效果如:

http://www.redxun.cn:8020/saweb/login.jsp

访问流程管理—》流程定义设计

 

 

 

  • 大小: 79.4 KB
  • 大小: 47.5 KB
  • 大小: 42.7 KB
分享到:
评论

相关推荐

    Eclipse Mars.2 Release (4.5.2) activiti-designer 5.18安装资料

    Eclipse Mars.2 Release (4.5.2) 是一个流行的集成开发环境(IDE),而activiti-designer是基于Eclipse平台的Activiti工作流引擎的可视化设计工具,版本为5.18.0。本安装资料将详细介绍如何在Eclipse Mars.2中安装和...

    activiti-designer安装资料包.zip

    6. **验证安装**:启动Eclipse后,检查"Window" -&gt; "Show View" -&gt; "Other",在打开的列表中应该能看到"Activiti"类别,其中包含"Activiti Explorer"和"Activiti Modeler"等视图。这表明Activiti Designer已经成功...

    activiti-designer-5.18.0

    《Activiti Designer 5.18.0在MyEclipse中的安装与使用详解》 Activiti Designer是一款基于Eclipse的流程定义工具,专为开发者设计,用于创建和管理Activiti工作流模型。在这个5.18.0版本中,我们可以看到它提供了...

    eclipse activiti插件离线安装包

    5. **使用Activiti Designer**:重启Eclipse后,你可以在`Window` -&gt; `Show View` -&gt; `Other`中找到并打开`Activiti Explorer`和`Activiti Modeler`视图。现在,你已经可以使用Activiti Designer来创建和编辑流程...

    activiti-designer-5.15.0

    Activiti Designer 5.15.0 是一个基于Eclipse的流程建模工具,它专为Activiti工作流引擎设计,帮助企业用户和开发者图形化地设计、开发和管理业务流程。这个版本的Designer是Activiti项目的一个重要组成部分,提供了...

    离线安装Activiti designer插件

    3. **准备Eclipse**:确保你正在使用的Eclipse版本与Activiti Designer兼容。例如,描述中提到的"Keepler"是Eclipse的一个老版本,需要确认该版本支持Activiti Designer。 4. **打开Eclipse Marketplace**:在...

    Activiti BPMN Designer

    1. **Activiti Designer Eclipse插件**:这是核心设计工具,它作为Eclipse IDE的一个插件集成,使得开发人员可以在熟悉的环境中设计流程。它提供了一个拖放界面,可以方便地添加和配置BPMN元素。 2. ** Activiti ...

    activiti-eclipse插件安装手册+对应安装包(含依赖包)

    同时,你可以在“File” -&gt; “New” -&gt; “Other”中查找“Activiti”相关的模板,如“Activiti Modeler”。 7. **导入依赖包**: 如果“eclipse安装activiti需装eclipse插件20140410”包含Activiti的依赖库,你...

    亲测有用,最有效的eclipse安装activiti

    在`Window` &gt; `Show View` &gt; `Other`中,找到并打开`Activiti Modeler`视图。在这里,你可以拖拽活动(如用户任务、服务任务)和连接线,构建流程图。 - **运行与调试**:编写Java代码来启动和控制流程实例。利用...

    myeclipse安装activiti插件

    Activiti 是一个开源的工作流程和业务自动化引擎,它在Java平台上运行,并且与Spring框架有很好的集成。在MyEclipse这种强大的Java开发环境中,安装Activiti插件可以帮助开发者更好地设计、部署和管理业务流程。本篇...

    MyEclipse10安装activiti5插件完美解决方案

    3. **安装Activiti Designer**:解压`activiti-designer-5.15.0.zip`,找到`eclipse`目录下的`features`和`plugins`文件夹,将这两个文件夹中的所有内容复制到MyEclipse10的相应目录下。同样,重启MyEclipse以完成...

    Activiti 组件介绍与 API

    - **Activiti Designer**:这是 Eclipse 插件的一部分,允许开发者在 Eclipse IDE 内部进行流程建模,其功能与 Activiti Modeler 类似。 - **Activiti Probe**:这是一个 Web 应用程序,用于监控和管理运行时的流程...

    前后端分离项目中引入activiti工作流引擎

    #### 二、ActivitiDesigner安装与使用 **1. 安装流程设计器** ##### 安装方式一:在线安装 在有网络的情况下,可以通过以下步骤安装Activiti Designer: 1. 打开Eclipse IDE,选择`Help` -&gt; `Install New ...

    Activiti 5.13 用户指南(中文版)

    Eclipse Designer是Activiti提供的一个Eclipse插件,方便用户图形化地设计和编辑流程。这部分可能会介绍Activiti Designer的特性、BPMN特性、部署特性、以及如何定制画板和校验图形。 ### 12. Activiti Explorer ...

    Activiti 5.16 用户手册.pdf

    Eclipse Designer部分则讨论了如何利用Activiti Designer编辑器来创建和编辑BPMN模型,提供了有关Activiti Designer特性、BPMN特性、部署特性以及如何扩展和定制Activiti Designer的详细信息。 ActivitiExplorer...

    Activiti5.16中文API

    目录 1. 简介 2. 开始学习 ...12. Eclipse Designer 13. Activiti Explorer 14. Activiti Modeler 15. REST API 16. 集成CDI 17. 集成LDAP 18. 高级功能 19. 使用Activiti-Crystalball进行流程仿真(实验)

    工作流activiti学习代码

    - Activiti Designer:这是一款基于Eclipse的插件,用于创建和编辑BPMN流程图。用户可以通过拖拽和配置元素来构建流程。 - Activiti Modeler:Web版的流程建模工具,适合远程协作,同样支持BPMN 2.0建模。 4. ...

    activiti的说明文档

    ### Activiti核心概念与使用详解 #### 一、简介 **Activiti** 是一款轻量级的业务流程管理(Business Process Management, BPM)框架,它提供了简单易用的方式来定义业务流程,并通过流程来驱动应用程序的执行。...

    Activiti工作流HelloWorld入门

    使用Activiti Designer(一个Eclipse插件)或在线的Activiti Modeler,你可以通过拖拽图形元素来设计工作流程。例如,一个简单的HelloWorld流程可能包括一个开始事件、一个用户任务和一个结束事件。用户任务代表了...

    Activiti 5.14 用户手册

    手册中还包含一些操作的详细指导,例如通过Activiti Designer编辑器特性进行流程模型设计、流程部署和历史数据查询的实现方法,以及如何使用Activiti Explorer和Modeler进行工作流的设计和管理。 整体而言,...

Global site tag (gtag.js) - Google Analytics