package com.cisco.surf.activiti.tests;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import junit.framework.TestCase;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.impl.bpmn.diagram.ProcessDiagramGenerator;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.repository.ProcessDefinition;
import org.apache.commons.io.IOUtils;
public class GenDiagTest extends TestCase{
public void testGenDiag() throws Exception{
ProcessEngine eng = ProcessEngineConfiguration
.createStandaloneInMemProcessEngineConfiguration()
.buildProcessEngine();
System.out.println("engine version: "+eng.VERSION);
RepositoryService repoSvc = eng.getRepositoryService();
RuntimeService rtSvc = eng.getRuntimeService();
String wfn = "/diagrams/GenDiag.bpmn";
String wffn = wfn+"20.xml"; // workaround for http://forums.activiti.org/en/viewtopic.php?f=8&t=3745&start=10
DeploymentBuilder db = repoSvc
.createDeployment()
.addInputStream(wffn,this.getClass().getResourceAsStream(wfn));
Deployment d = db.deploy();
ProcessDefinition pDef = repoSvc
.createProcessDefinitionQuery()
.deploymentId(d.getId())
.singleResult();
try {
InputStream ds = ProcessDiagramGenerator.generatePngDiagram((ProcessDefinitionEntity)pDef);
OutputStream os = new FileOutputStream("target/diag.png");
IOUtils.copy(ds,os);
os.close();
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
}