盘古BPM体验地址    盘古BPM交流群盘古BPM交流群号:963222735

flowable获取节点信息

分享牛 11481℃

flowable中已经去除了流程虚拟机中的各种对象(比如ActivityImpl或者TransitionImpl)和原子操作类,因此如果期望获取到定义的流程文档中的节点信息,那么该操作与Activiti的操作是完全不一样的。

但原理是类似的,使用flowable获取流程中的节点信息是非常简单的,但是需要大量的判断节点类型的操作。

本教程主要分以下几点内容:

一、 定义流程文档。

二、 部署流程文档

三、 节点信息的获取


1.1 定义流程文档

首先,我们定义一个流程文档,该流程文档图如下所示:

上面定义的流程非常的简单,一个开始节点、一个结束节点和2个任务节点。其中第一个任务对应的任务id为usertask1,第二个任务对应的任务id为usertask2。

1.2 部署流程

flowable部署流程文档的操作非常简单,这一点与Activiti类似,如下所示:


public void addInputStreamTest() {
// 定义的文件信息的流读取
InputStream inputStream = App.class.getClassLoader()
.getResourceAsStream("com/shareniu/flowablestudy/ch1/one.bpmn");
// 流程定义的分类
String category = "shareniu_addInputStream";
// 构造DeploymentBuilder对象
DeploymentBuilder deploymentBuilder = repositoryService
.createDeployment().category(category)
.addInputStream(resourceName, inputStream);
// 部署
Deployment deploy = deploymentBuilder.deploy();
}

1.3 获取节点信息

比如,我们现在需要获取到任务节点定义的所有信息,则可以执行如下代码:

        @Test
public void getBpmnModel() {
BpmnModel bpmnModel = repositoryService.getBpmnModel("myProcess:1:4");
Process process = bpmnModel.getProcesses().get(0);
CollectionflowElements = process.getFlowElements();
for (FlowElement flowElement : flowElements) {
if (flowElement instanceof UserTask) {
UserTask u = (UserTask) flowElement;
ListoutgoingFlows = u.getOutgoingFlows();
System.err.println("outgoingFlows:" + outgoingFlows);
}
System.err.println(flowElement.getId() + "--->>>>"
+ flowElement.getName());

}
}

上述代码中,myProcess:1:4为流程文档部署之后,产生的流程定义id值,其实现思路非常的简单,分为如下几个步骤:

(1)根据流程定义Id值获取BpmnModel。

(2)根据BpmnModel获取Process。

(3)根据Process获取所有的flowElements集合。

(4)遍历flowElements集合并根据节点的类型做一系列的判断。

上述代码中,不仅实现了获取流程定义中节点的信息,还附属完成了连线信息的获取。执行上述代码程序的输出如下:

startevent1--->>>>Start

org.flowable.bpmn.model.UserTask@5c0dc84

outgoingFlows:[usertask1 --> usertask2]

usertask1--->>>>usertask1

flow1--->>>>null

org.flowable.bpmn.model.UserTask@38cd610f

outgoingFlows:[usertask2 --> endevent1]

usertask2--->>>>usertask2

flow2--->>>>null

endevent1--->>>>End

flow3--->>>>null

转载请注明:分享牛 » flowable获取节点信息