A-A+

Flowable6.4 – BpmnModel

2020年02月16日 技术, 默认 暂无评论 阅读 6,396 次

​在Flowable的官方文档中,有一段这样的描述:

在V6中,所有流程定义的信息都可以通过BpmnModel_获取。这是一个BPMN 2.0 XML流程定义的Java表现形式(并对特定操作及搜索进行了增强)。

这一次就看一看BpmnModel到底能够干什么。

如何在一个已知的流程定义中获得BpmnModel呢?

已有模型标识,获得BpmnModel:

byte[] modelEditorSource = repositoryService.getModelEditorSource(modelId);
JsonNode editorNode = new ObjectMapper().readTree(modelEditorSource);
BpmnJsonConverter jsonConverter = new BpmnJsonConverter();
BpmnModel bpmnModel = jsonConverter.convertToBpmnModel(editorNode);

最快的办法,通过流程定义ID获得BpmnModel:

BpmnModel bpmnModel = repositoryService.getBpmnModel(myProcessDefinitionId);

获得BpmnModel后,可以做什么呢?

发布流程:

BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);
repositoryService.createDeployment().name("test").addBpmnModel("test.bpmn20.xml", model).deploy();

导出流程定义:

BpmnXMLConverter xmlConverter = new BpmnXMLConverter();
byte[] exportBytes = xmlConverter.convertToXML(bpmnModel);

获得流程节点信息:

Process process = bpmnModel.getMainProcess();
Collection<FlowElement> flowElements = process.getFlowElements();
List<UserTask> userTasks = new ArrayList<>();
for (FlowElement flowElement : flowElements) {
    if (flowElement instanceof UserTask) {
        UserTask userTask = (UserTask)flowElement;
        System.out.println(userTask.getId() + ":" + userTask.getName());
    }
}

获得流程图坐标信息:

//获得流程节点信息
Map<String, GraphicInfo> locationMap = bpmnModel.getLocationMap();
//获得流程节点之间连线信息
Map<String, List<GraphicInfo>> flowLocationMap = bpmnModel.getFlowLocationMap();

以上就是BpmnModel的相关介绍,如有问题欢迎指正。

觉的不错?可以关注我的公众号↑↑↑

给我留言

Copyright © 字痕随行 保留所有权利.   Theme  Ality

用户登录

分享到: