91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Springboot怎么整合Flowable6.x導出bpmn20

發布時間:2023-05-08 14:25:57 來源:億速云 閱讀:156 作者:zzz 欄目:開發技術

本篇內容主要講解“Springboot怎么整合Flowable6.x導出bpmn20”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Springboot怎么整合Flowable6.x導出bpmn20”吧!

BPMN2.0(Business Process Model and Notation)是一套業務流程模型與符號建模標準,以XML為載體,以符號可視化業務,支持精準的執行語義來描述元素的操作。
Flowable誕生于Activiti,是一個使用Java編寫的輕量級業務流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定義,可以十分靈活地加入你的應用/服務/構架。

導入Maven依賴

        <dependency>
            <groupId>org.flowable</groupId>
            <artifactId>flowable-spring-boot-starter-basic</artifactId>
            <version>6.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.flowable</groupId>
            <artifactId>flowable-json-converter</artifactId>
            <version>6.4.1</version>
        </dependency>

從流程模型導出流程定義bpmn20.xml

通過流程編輯器制作的流程模型(如下圖所示), 可以通過模型ID(Model.id),調用flowable 的 RepositoryService 來生成bpmn20.xml。

@Service
public class MyModelServiceImpl implements MyModelService {
    @Autowired
    private RepositoryService repositoryService;

    /**
     * 通過模型ID,生成模型BPMN20.xml
     * @param guid 模型id,即model.id
     * @return
     * @throws Exception
     */
    @Override
    public ResultDTO genXml(String guid) throws Exception {
        /**通過ID獲取模型 **/
        Model modelData = repositoryService.getModel(guid);
        byte[] bytes = repositoryService.getModelEditorSource(modelData.getId());
        if (bytes == null) {
            return ResultDTO.failureCustom("模型數據為空,請先設計流程并成功保存,再進行發布。");
        }
        JsonNode modelNode = new ObjectMapper().readTree(bytes);
        BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);
        if (model.getProcesses().size() == 0) {
            return ResultDTO.failureCustom("數據模型不符要求,請至少設計一條主線流程。");
        }
        /** 設置名稱 **/
        model.getMainProcess().setName(modelData.getName());
        /** 設置 targetNamespace **/
        if(StringUtils.isNotBlank(modelData.getCategory())) {
            model.setTargetNamespace(modelData.getCategory());
        }
        byte[] bpmnBytes = new BpmnXMLConverter().convertToXML(model);
        String xml = new String(bpmnBytes, "UTF-8");
        return ResultDTO.success(xml);
    }
}

運行效果如下:

{% asset_img res1.gif 導出效果 %}

Springboot怎么整合Flowable6.x導出bpmn20

從流程定義導出流程定義bpmn20.xml

對于flowable已經部署的流程,可根據流程定義(ProcessDefinition.id),調用flowable 的RepositoryService來導出其bpmn20.xml。

@RestController
@Slf4j
public class ProcessController {
    @Autowired
    private MyProcessService processService;
    
    /**
     * 通過processDefinition.id和resType導出流程XML或圖片資源
     * @param id processDefinition.id
     * @param resType 取值 “image/png”或“text/xml”
     * @param response
     * @throws Exception
     */
    @GetMapping(value = "/res/exp")
    @ApiOperation("通過processDefinition.id和resType導出流程XML或圖片資源")
    public void resourceRead(@RequestParam("id") String id,@RequestParam("resType") String resType, HttpServletResponse response) throws Exception {
        /** resType取值 “image/png”或“text/xml” **/
        InputStream resourceAsStream = processService.resourceRead(id,resType);
        byte[] b = new byte[1024];
        int len = -1;
        while ((len = resourceAsStream.read(b, 0, 1024)) != -1) {
            response.getOutputStream().write(b, 0, len);
        }
    }
}
@Service
public class MyProcessServiceImpl implements MyProcessService {
    @Autowired
    private RepositoryService repositoryService;
    
    @Override
    public InputStream resourceRead(String id, String resType) throws Exception {
        ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(id).singleResult();
        String resourceName = "";
        if (resType.equals("image/png")) {
            resourceName = processDefinition.getDiagramResourceName();
        } else if (resType.equals("text/xml")) {
            resourceName = processDefinition.getResourceName();
        }
        InputStream resourceAsStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), resourceName);
        return resourceAsStream;
    }
}

運行效果如下:

Springboot怎么整合Flowable6.x導出bpmn20

到此,相信大家對“Springboot怎么整合Flowable6.x導出bpmn20”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昭苏县| 玉门市| 腾冲县| 安多县| 化隆| 丽江市| 大理市| 连云港市| 偃师市| 盐池县| 和林格尔县| 新巴尔虎右旗| 通州市| 荆州市| 铜梁县| 辉县市| 崇州市| 大方县| 云阳县| 兴安县| 锡林郭勒盟| 嵊州市| 岱山县| 嘉义县| 嘉黎县| 长子县| 康马县| 佳木斯市| 武安市| 越西县| 新沂市| 乃东县| 神池县| 文登市| 稻城县| 上饶县| 桃江县| 三原县| 威信县| 个旧市| 开江县|