Skip to content

Instantly share code, notes, and snippets.

@henryyan
Created April 4, 2013 11:57
Show Gist options
  • Save henryyan/5309794 to your computer and use it in GitHub Desktop.
Save henryyan/5309794 to your computer and use it in GitHub Desktop.
package org.activiti.designer.test.bugs;
import java.io.File;
import java.io.InputStream;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.impl.bpmn.diagram.ProcessDiagramGenerator;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.test.ActivitiRule;
import org.activiti.engine.test.Deployment;
import org.apache.commons.io.FileUtils;
import org.junit.Rule;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class FixFlowTextInDiagram {
private static Logger logger = LoggerFactory.getLogger(FixFlowTextInDiagram.class);
@Rule
public ActivitiRule activitiRule = new ActivitiRule();
@Test
@Deployment(resources = { "diagrams/bugs/leave.bpmn" })
public void startProcess() throws Exception {
RepositoryService repositoryService = activitiRule.getRepositoryService();
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().singleResult();
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
InputStream resourceAsStream = ProcessDiagramGenerator.generatePngDiagram(bpmnModel);
byte[] b = new byte[resourceAsStream.available()];
@SuppressWarnings("unused")
int len = -1;
resourceAsStream.read(b, 0, b.length);
// create file if not exist
String diagramDir = "/Users/henryyan";
File diagramDirFile = new File(diagramDir);
if (!diagramDirFile.exists()) {
diagramDirFile.mkdirs();
}
String diagramPath = diagramDir + "/leave.png";
File file = new File(diagramPath);
// 文件存在退出
if (file.exists()) {
// 文件大小相同时直接返回否则重新创建文件(可能损坏)
logger.debug("diagram exist, ignore... : {}", diagramPath);
} else {
file.createNewFile();
}
logger.debug("export diagram to : {}", diagramPath);
// wirte bytes to file
FileUtils.writeByteArrayToFile(file, b);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment