Java源码示例:org.activiti.image.impl.DefaultProcessDiagramGenerator

示例1
/**
   * Look up the process definition by key. For example,
   * this is <A href="http://localhost:8080/activiti/processes/fulfillmentProcess">process-diagram for</A>
   * a process definition named {@code fulfillmentProcess}.
   */
  @RequestMapping(value = "/processes/{processDefinitionKey:.*}", method = RequestMethod.GET, produces = MediaType.IMAGE_JPEG_VALUE)
  @ResponseBody
  public ResponseEntity processDefinitionDiagram(@PathVariable String processDefinitionKey) {
    ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
            .processDefinitionKey(processDefinitionKey)
            .latestVersion()
            .singleResult();
    if (processDefinition == null) {
        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
    }

    ProcessDiagramGenerator processDiagramGenerator = new DefaultProcessDiagramGenerator();
    BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());

    if (bpmnModel.getLocationMap().size() == 0) {
        BpmnAutoLayout autoLayout = new BpmnAutoLayout(bpmnModel);
        autoLayout.execute();
    }

    InputStream is = processDiagramGenerator.generateJpgDiagram(bpmnModel);
    return ResponseEntity.ok(new InputStreamResource(is));
}
 
示例2
/**
 * {@inheritDoc}
 */
public InputStream getWorkflowImage(String workflowInstanceId)
{
    String processInstanceId = createLocalId(workflowInstanceId);
    ExecutionEntity pi = (ExecutionEntity) runtimeService.createProcessInstanceQuery()
                .processInstanceId(processInstanceId).singleResult();

    // If the process is finished, there is no diagram available
    if (pi != null)
    {
        // Fetch the bpmn model
        BpmnModel model = repoService.getBpmnModel(pi.getProcessDefinitionId());

        if (model != null && model.getLocationMap().size() > 0) 
        {              
            ProcessDiagramGenerator generator = new DefaultProcessDiagramGenerator();
            return generator.generateDiagram(model,
                  ActivitiConstants.PROCESS_INSTANCE_IMAGE_FORMAT,
                  runtimeService.getActiveActivityIds(processInstanceId)); 
        }
    }
    return null;
}
 
示例3
protected void generateImage(BpmnModel bpmnModel, double scaleFactor) throws Exception {
    ProcessDiagramGenerator diagramGenerator = new DefaultProcessDiagramGenerator(scaleFactor);
    InputStream diagramStream = diagramGenerator.generatePngDiagram(bpmnModel, scaleFactor);
    FileOutputStream fileStream = new FileOutputStream("test.png");
    IOUtils.copy(diagramStream, fileStream);
    fileStream.flush();
    fileStream.close();
    assertNotNull(ImageIO.read(new File("test.png")));
}
 
示例4
private static byte[] getDiagramByte(ProcessInstance pi) throws Exception {
	byte[] data = null;
	ProcessDiagramGenerator processDiagramGenerator = new DefaultProcessDiagramGenerator();
	BpmnModel model = repositoryService.getBpmnModel(pi.getProcessDefinitionId());
	InputStream is = processDiagramGenerator.generateDiagram(
			model, 
			"png", 
			runtimeService.getActiveActivityIds(pi.getId()));
	data = IOUtils.toByteArray(is);
	is.close();
	is = null;	
	return data;
}
 
示例5
public InputStream execute(CommandContext commandContext) {
    ProcessDefinitionEntity processDefinition = new GetDeploymentProcessDefinitionCmd(
            processDefinitionId).execute(commandContext);
    String diagramResourceName = processDefinition.getDiagramResourceName();
    String deploymentId = processDefinition.getDeploymentId();

    if (deploymentId != null) {
        byte[] bytes = commandContext
                .getResourceEntityManager()
                .findResourceByDeploymentIdAndResourceName(deploymentId,
                        diagramResourceName).getBytes();
        InputStream inputStream = new ByteArrayInputStream(bytes);

        return inputStream;
    }

    GetBpmnModelCmd getBpmnModelCmd = new GetBpmnModelCmd(
            processDefinitionId);
    BpmnModel bpmnModel = getBpmnModelCmd.execute(commandContext);
    ProcessEngineConfiguration processEngineConfiguration = Context
            .getProcessEngineConfiguration();
    InputStream is = new DefaultProcessDiagramGenerator().generateDiagram(
            bpmnModel, "png",
            processEngineConfiguration.getActivityFontName(),
            processEngineConfiguration.getLabelFontName(), null);

    return is;
}
 
示例6
public static BufferedImage createImage(BpmnModel bpmnModel) {
       ProcessDiagramGenerator diagramGenerator = new DefaultProcessDiagramGenerator();
       BufferedImage diagramImage = diagramGenerator.generatePngImage(bpmnModel, 1.0);
       return diagramImage;
}
 
示例7
public static BufferedImage createImage(BpmnModel bpmnModel, double scaleFactor) {
       ProcessDiagramGenerator diagramGenerator = new DefaultProcessDiagramGenerator(scaleFactor);
       BufferedImage diagramImage = diagramGenerator.generatePngImage(bpmnModel, scaleFactor);
       return diagramImage;
}
 
示例8
@Override
public BinaryResource getProcessImage(String processId)
{
    validateIfUserAllowedToWorkWithProcess(processId);
    
    ProcessInstance processInstance = activitiProcessEngine.getRuntimeService()
            .createProcessInstanceQuery()
            .processInstanceId(processId)
            .singleResult();
    
    if (processInstance == null)
    {
        throw new EntityNotFoundException(processId);
    }
    
    try
    {
    	BpmnModel model = activitiProcessEngine.getRepositoryService().getBpmnModel(processInstance.getProcessDefinitionId());
        
        if(model != null && model.getLocationMap().size() > 0)
        {
            List<String> activeActivities = activitiProcessEngine.getRuntimeService().getActiveActivityIds(processId);
            ProcessDiagramGenerator generator = new DefaultProcessDiagramGenerator();
            InputStream generateDiagram = generator.generateDiagram(model, "png", activeActivities);
            
            File file = TempFileProvider.createTempFile(processId + UUID.randomUUID(), ".png");
            FileOutputStream fos = new FileOutputStream(file);
            IOUtils.copy(generateDiagram, fos);
            fos.close();
            
            return new FileBinaryResource(file);
        }
        else
        {
            throw new EntityNotFoundException(processId + "/image");
        }
    }
    catch (IOException error)
    {
        throw new ApiException("Error while getting process image.");
    }
}