首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Activiti 獲取流程圖片與當前節點座標:部署資源、Key 查詢、禁用自動生成

     編輯:Java 程式設計入門

場景一:根據部署 ID 獲取圖片

public InputStream getProcessImage(String deploymentId) {
    List names = repositoryService.getDeploymentResourceNames(deploymentId);
    String pngName = names.stream().filter(n -> n.endsWith(".png")).findFirst().orElse(null);
    if (pngName == null) return null;
    return repositoryService.getResourceAsStream(deploymentId, pngName);
}

場景二:根據流程定義 Key 獲取圖片 (最新版本)

public InputStream getLatestProcessImage(String processDefinitionKey) {
    ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
            .processDefinitionKey(processDefinitionKey)
            .latestVersion()
            .singleResult();
    if (pd == null) return null;
    return repositoryService.getResourceAsStream(pd.getDeploymentId(), pd.getDiagramResourceName());
}

場景三:禁用部署時自動生成流程圖

在 `ProcessEngineConfiguration` 中設定:

或 Java Config:

ProcessEngineConfiguration cfg = ...;
cfg.setCreateDiagramOnDeploy(false);

適用場景:BPMN XML 極複雜導致生成圖片超時/失敗、自行使用外部工具 (如 bpmn.io) 生成高質量圖片並手動部署。

場景四:獲取當前活動節點座標 (用於前端高亮)

public Map getCurrentActivityCoordinates(String taskId) {
    // 1. 任務 -> 流程實例 -> 當前活動 ID
    Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
    ProcessInstance pi = runtimeService.createProcessInstanceQuery()
            .processInstanceId(task.getProcessInstanceId()).singleResult();
    String activityId = pi.getActivityId();

    // 2. 解析流程定義模型取得座標
    ProcessDefinitionEntity pde = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(task.getProcessDefinitionId());
    ActivityImpl activity = pde.findActivity(activityId);

    Map coords = new HashMap<>();
    coords.put("x", activity.getX());
    coords.put("y", activity.getY());
    coords.put("width", activity.getWidth());
    coords.put("height", activity.getHeight());
    return coords;
}

前端高亮實現提示

// 後端返回 {deploymentId, imageName, x, y, width, height}
// 前端

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved