Bpmn和xml文件相互转化

package com.activit;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import java.io.InputStream;

import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;

import org.activiti.bpmn.converter.BpmnXMLConverter;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.ProcessDeFinition;
import org.activiti.engine.test.Deployment;
import org.junit.Before;
import org.junit.Test;

public class BpmnTest {
ProcessEngine processEngine = null;
RepositoryService repositoryService = null;
RuntimeService runtimeService = null;
TaskService taskService = null;

/**
 * 加载配置文件
 */
@Before
public void init() {
    processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromresource("activiti.cfg.xml")
            .buildProcessEngine();
    repositoryService = processEngine.getRepositoryService();
    runtimeService = processEngine.getRuntimeService();
    taskService = processEngine.getTaskService();
}



 @Test
 @Deployment(resources="resources/diagrams/VacationRequest.bpmn")
 public void testXmltoBpmn() throws XMLStreamException{
     ProcessDeFinition processDeFinition =repositoryService.createProcessDeFinitionQuery().processDeFinitionKey("vacationRequest").singleResult();
     //获取流程资源的名称
     String sourceName = processDeFinition.getResourceName();
     //获取流程资源
     InputStream inputStream = repositoryService.getResourceAsstream(processDeFinition.getId(),sourceName);
     //创建转换对象
     BpmnXMLConverter converter = new BpmnXMLConverter();
     //读取xml文件
     XMLInputFactory factory = XMLInputFactory.newInstance();
     XMLStreamReader reader = factory.createXMLStreamReader(inputStream);
     //将xml文件转换成BpmnModel
     BpmnModel bpmnModel = converter.convertToBpmnModel((XMLStreamReader) reader);
     //验证bpmnModel是否为空
     assertNotNull(bpmnModel);
     org.activiti.bpmn.model.Process process = bpmnModel.getMainProcess();
     //验证转换的流程id
     assertEquals("leave",process.getId());                  
 }

}

还有一种更加简便的方法

xml 格式直接自动生成bpmn文件。 新建文件: bpmn20.xml文件结尾的 activiti模型。然后copy得到的xml文件,最后open with 用activiti专用的视图打开就可以了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇