use of org.activiti.bpmn.model.Pool in project Activiti by Activiti.
the class DefaultProcessDiagramGenerator method initProcessDiagramCanvas.
protected static DefaultProcessDiagramCanvas initProcessDiagramCanvas(BpmnModel bpmnModel, String imageType, String activityFontName, String labelFontName, String annotationFontName, ClassLoader customClassLoader) {
// We need to calculate maximum values to know how big the image will be in its entirety
double minX = Double.MAX_VALUE;
double maxX = 0;
double minY = Double.MAX_VALUE;
double maxY = 0;
for (Pool pool : bpmnModel.getPools()) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(pool.getId());
minX = graphicInfo.getX();
maxX = graphicInfo.getX() + graphicInfo.getWidth();
minY = graphicInfo.getY();
maxY = graphicInfo.getY() + graphicInfo.getHeight();
}
List<FlowNode> flowNodes = gatherAllFlowNodes(bpmnModel);
for (FlowNode flowNode : flowNodes) {
GraphicInfo flowNodeGraphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
// width
if (flowNodeGraphicInfo.getX() + flowNodeGraphicInfo.getWidth() > maxX) {
maxX = flowNodeGraphicInfo.getX() + flowNodeGraphicInfo.getWidth();
}
if (flowNodeGraphicInfo.getX() < minX) {
minX = flowNodeGraphicInfo.getX();
}
// height
if (flowNodeGraphicInfo.getY() + flowNodeGraphicInfo.getHeight() > maxY) {
maxY = flowNodeGraphicInfo.getY() + flowNodeGraphicInfo.getHeight();
}
if (flowNodeGraphicInfo.getY() < minY) {
minY = flowNodeGraphicInfo.getY();
}
for (SequenceFlow sequenceFlow : flowNode.getOutgoingFlows()) {
List<GraphicInfo> graphicInfoList = bpmnModel.getFlowLocationGraphicInfo(sequenceFlow.getId());
if (graphicInfoList != null) {
for (GraphicInfo graphicInfo : graphicInfoList) {
// width
if (graphicInfo.getX() > maxX) {
maxX = graphicInfo.getX();
}
if (graphicInfo.getX() < minX) {
minX = graphicInfo.getX();
}
// height
if (graphicInfo.getY() > maxY) {
maxY = graphicInfo.getY();
}
if (graphicInfo.getY() < minY) {
minY = graphicInfo.getY();
}
}
}
}
}
List<Artifact> artifacts = gatherAllArtifacts(bpmnModel);
for (Artifact artifact : artifacts) {
GraphicInfo artifactGraphicInfo = bpmnModel.getGraphicInfo(artifact.getId());
if (artifactGraphicInfo != null) {
// width
if (artifactGraphicInfo.getX() + artifactGraphicInfo.getWidth() > maxX) {
maxX = artifactGraphicInfo.getX() + artifactGraphicInfo.getWidth();
}
if (artifactGraphicInfo.getX() < minX) {
minX = artifactGraphicInfo.getX();
}
// height
if (artifactGraphicInfo.getY() + artifactGraphicInfo.getHeight() > maxY) {
maxY = artifactGraphicInfo.getY() + artifactGraphicInfo.getHeight();
}
if (artifactGraphicInfo.getY() < minY) {
minY = artifactGraphicInfo.getY();
}
}
List<GraphicInfo> graphicInfoList = bpmnModel.getFlowLocationGraphicInfo(artifact.getId());
if (graphicInfoList != null) {
for (GraphicInfo graphicInfo : graphicInfoList) {
// width
if (graphicInfo.getX() > maxX) {
maxX = graphicInfo.getX();
}
if (graphicInfo.getX() < minX) {
minX = graphicInfo.getX();
}
// height
if (graphicInfo.getY() > maxY) {
maxY = graphicInfo.getY();
}
if (graphicInfo.getY() < minY) {
minY = graphicInfo.getY();
}
}
}
}
int nrOfLanes = 0;
for (Process process : bpmnModel.getProcesses()) {
for (Lane l : process.getLanes()) {
nrOfLanes++;
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(l.getId());
// // width
if (graphicInfo.getX() + graphicInfo.getWidth() > maxX) {
maxX = graphicInfo.getX() + graphicInfo.getWidth();
}
if (graphicInfo.getX() < minX) {
minX = graphicInfo.getX();
}
// height
if (graphicInfo.getY() + graphicInfo.getHeight() > maxY) {
maxY = graphicInfo.getY() + graphicInfo.getHeight();
}
if (graphicInfo.getY() < minY) {
minY = graphicInfo.getY();
}
}
}
// Special case, see https://activiti.atlassian.net/browse/ACT-1431
if (flowNodes.isEmpty() && bpmnModel.getPools().isEmpty() && nrOfLanes == 0) {
// Nothing to show
minX = 0;
minY = 0;
}
return new DefaultProcessDiagramCanvas((int) maxX + 10, (int) maxY + 10, (int) minX, (int) minY, imageType, activityFontName, labelFontName, annotationFontName, customClassLoader);
}
use of org.activiti.bpmn.model.Pool in project Activiti by Activiti.
the class PoolConverterTest method validateModel.
private void validateModel(BpmnModel model) {
String idPool = "idPool";
String idProcess = "poolProcess";
assertEquals(1, model.getPools().size());
Pool pool = model.getPool(idPool);
assertEquals(idPool, pool.getId());
assertEquals(idProcess, pool.getProcessRef());
assertTrue(pool.isExecutable());
Process process = model.getProcess(idPool);
assertEquals(idProcess, process.getId());
assertTrue(process.isExecutable());
assertEquals(3, process.getLanes().size());
Lane lane = process.getLanes().get(0);
assertEquals("idLane1", lane.getId());
assertEquals("Lane 1", lane.getName());
assertEquals(7, lane.getFlowReferences().size());
assertTrue(lane.getFlowReferences().contains("startevent"));
assertTrue(lane.getFlowReferences().contains("usertask1"));
assertTrue(lane.getFlowReferences().contains("usertask6"));
assertTrue(lane.getFlowReferences().contains("endevent"));
lane = process.getLanes().get(1);
assertEquals("idLane2", lane.getId());
assertEquals("Lane 2", lane.getName());
assertEquals(4, lane.getFlowReferences().size());
assertTrue(lane.getFlowReferences().contains("usertask2"));
assertTrue(lane.getFlowReferences().contains("usertask5"));
lane = process.getLanes().get(2);
assertEquals("idLane3", lane.getId());
assertEquals("Lane 3", lane.getName());
assertEquals(4, lane.getFlowReferences().size());
assertTrue(lane.getFlowReferences().contains("usertask3"));
assertTrue(lane.getFlowReferences().contains("usertask4"));
assertNotNull(process.getFlowElement("startevent"));
assertNotNull(process.getFlowElement("usertask1"));
assertNotNull(process.getFlowElement("usertask2"));
assertNotNull(process.getFlowElement("usertask3"));
assertNotNull(process.getFlowElement("usertask4"));
assertNotNull(process.getFlowElement("usertask5"));
assertNotNull(process.getFlowElement("usertask6"));
assertNotNull(process.getFlowElement("endevent"));
assertNotNull(process.getFlowElement("flow1"));
assertNotNull(process.getFlowElement("flow2"));
assertNotNull(process.getFlowElement("flow3"));
assertNotNull(process.getFlowElement("flow4"));
assertNotNull(process.getFlowElement("flow5"));
assertNotNull(process.getFlowElement("flow6"));
assertNotNull(process.getFlowElement("flow7"));
}
Aggregations