Search in sources :

Example 6 with Task

use of org.openstack4j.model.image.v2.Task in project kie-wb-common by kiegroup.

the class Bpmn2JsonUnmarshaller method unmarshallItem.

public BaseElement unmarshallItem(JsonParser parser, String preProcessingData) throws JsonParseException, IOException {
    String resourceId = null;
    Map<String, String> properties = null;
    String stencil = null;
    List<BaseElement> childElements = new ArrayList<BaseElement>();
    List<String> outgoing = new ArrayList<String>();
    while (parser.nextToken() != JsonToken.END_OBJECT) {
        String fieldname = parser.getCurrentName();
        parser.nextToken();
        if ("resourceId".equals(fieldname)) {
            resourceId = parser.getText();
        } else if ("properties".equals(fieldname)) {
            properties = unmarshallProperties(parser);
        } else if ("stencil".equals(fieldname)) {
            // "stencil":{"id":"Task"},
            parser.nextToken();
            parser.nextToken();
            stencil = parser.getText();
            parser.nextToken();
        } else if ("childShapes".equals(fieldname)) {
            while (parser.nextToken() != JsonToken.END_ARRAY) {
                // open the
                // object
                // the childShapes element is a json array. We opened the
                // array.
                childElements.add(unmarshallItem(parser, preProcessingData));
            }
        } else if ("bounds".equals(fieldname)) {
            // bounds: {"lowerRight":{"x":484.0,"y":198.0},"upperLeft":{"x":454.0,"y":168.0}}
            parser.nextToken();
            parser.nextToken();
            parser.nextToken();
            parser.nextToken();
            Integer x2 = parser.getIntValue();
            parser.nextToken();
            parser.nextToken();
            Integer y2 = parser.getIntValue();
            parser.nextToken();
            parser.nextToken();
            parser.nextToken();
            parser.nextToken();
            parser.nextToken();
            Integer x1 = parser.getIntValue();
            parser.nextToken();
            parser.nextToken();
            Integer y1 = parser.getIntValue();
            parser.nextToken();
            parser.nextToken();
            Bounds b = DcFactory.eINSTANCE.createBounds();
            b.setX(x1);
            b.setY(y1);
            b.setWidth(x2 - x1);
            b.setHeight(y2 - y1);
            this._bounds.put(resourceId, b);
        } else if ("dockers".equals(fieldname)) {
            // "dockers":[{"x":50,"y":40},{"x":353.5,"y":115},{"x":353.5,"y":152},{"x":50,"y":40}],
            List<Point> dockers = new ArrayList<Point>();
            JsonToken nextToken = parser.nextToken();
            boolean end = JsonToken.END_ARRAY.equals(nextToken);
            while (!end) {
                nextToken = parser.nextToken();
                nextToken = parser.nextToken();
                Integer x = parser.getIntValue();
                parser.nextToken();
                parser.nextToken();
                Integer y = parser.getIntValue();
                Point point = DcFactory.eINSTANCE.createPoint();
                point.setX(x);
                point.setY(y);
                dockers.add(point);
                parser.nextToken();
                nextToken = parser.nextToken();
                end = JsonToken.END_ARRAY.equals(nextToken);
            }
            this._dockers.put(resourceId, dockers);
        } else if ("outgoing".equals(fieldname)) {
            while (parser.nextToken() != JsonToken.END_ARRAY) {
                // {resourceId: oryx_1AAA8C9A-39A5-42FC-8ED1-507A7F3728EA}
                parser.nextToken();
                parser.nextToken();
                outgoing.add(parser.getText());
                parser.nextToken();
            }
            // pass on the array
            parser.skipChildren();
        } else if ("target".equals(fieldname)) {
            // we already collected that info with the outgoing field.
            parser.skipChildren();
        // "target": {
        // "resourceId": "oryx_A75E7546-DF71-48EA-84D3-2A8FD4A47568"
        // }
        // add to the map:
        // parser.nextToken(); // resourceId:
        // parser.nextToken(); // the value we want to save
        // targetId = parser.getText();
        // parser.nextToken(); // }, closing the object
        }
    }
    properties.put("resourceId", resourceId);
    boolean customElement = isCustomElement(properties.get("tasktype"), preProcessingData);
    BaseElement baseElt = this.createBaseElement(stencil, properties.get("tasktype"), customElement);
    // register the sequence flow targets.
    if (baseElt instanceof SequenceFlow) {
        _sequenceFlowTargets.addAll(outgoing);
    }
    _outgoingFlows.put(baseElt, outgoing);
    _objMap.put(baseElt, // keep the object around to do connections
    resourceId);
    _idMap.put(resourceId, baseElt);
    // baseElt.setId(resourceId); commented out as bpmn2 seems to create
    // duplicate ids right now.
    applyProperties(baseElt, properties, preProcessingData);
    if (baseElt instanceof Definitions) {
        Process rootLevelProcess = null;
        if (childElements == null || childElements.size() < 1) {
            if (rootLevelProcess == null) {
                rootLevelProcess = Bpmn2Factory.eINSTANCE.createProcess();
                // set the properties and item definitions first
                if (properties.get("vardefs") != null && properties.get("vardefs").length() > 0) {
                    String[] vardefs = properties.get("vardefs").split(",\\s*");
                    for (String vardef : vardefs) {
                        Property prop = Bpmn2Factory.eINSTANCE.createProperty();
                        ItemDefinition itemdef = Bpmn2Factory.eINSTANCE.createItemDefinition();
                        // check if we define a structure ref in the definition
                        if (vardef.contains(":")) {
                            String[] vardefParts = vardef.split(":\\s*");
                            prop.setId(vardefParts[0]);
                            itemdef.setId("_" + prop.getId() + "Item");
                            boolean haveKPI = false;
                            String kpiValue = "";
                            if (vardefParts.length == 3) {
                                itemdef.setStructureRef(vardefParts[1]);
                                if (vardefParts[2].equals("true")) {
                                    haveKPI = true;
                                    kpiValue = vardefParts[2];
                                }
                            }
                            if (vardefParts.length == 2) {
                                if (vardefParts[1].equals("true") || vardefParts[1].equals("false")) {
                                    if (vardefParts[1].equals("true")) {
                                        haveKPI = true;
                                        kpiValue = vardefParts[1];
                                    }
                                } else {
                                    itemdef.setStructureRef(vardefParts[1]);
                                }
                            }
                            if (haveKPI) {
                                Utils.setMetaDataExtensionValue(prop, "customKPI", wrapInCDATABlock(kpiValue));
                            }
                        } else {
                            prop.setId(vardef);
                            itemdef.setId("_" + prop.getId() + "Item");
                        }
                        prop.setItemSubjectRef(itemdef);
                        rootLevelProcess.getProperties().add(prop);
                        ((Definitions) baseElt).getRootElements().add(itemdef);
                    }
                }
                if (properties.get("adhocprocess") != null && properties.get("adhocprocess").equals("true")) {
                    ExtendedMetaData metadata = ExtendedMetaData.INSTANCE;
                    EAttributeImpl extensionAttribute = (EAttributeImpl) metadata.demandFeature("http://www.jboss.org/drools", "adHoc", false, false);
                    SimpleFeatureMapEntry extensionEntry = new SimpleFeatureMapEntry(extensionAttribute, properties.get("adhocprocess"));
                    rootLevelProcess.getAnyAttribute().add(extensionEntry);
                }
                if (properties.get("customdescription") != null && properties.get("customdescription").length() > 0) {
                    Utils.setMetaDataExtensionValue(rootLevelProcess, "customDescription", wrapInCDATABlock(properties.get("customdescription")));
                }
                rootLevelProcess.setId(properties.get("id"));
                applyProcessProperties(rootLevelProcess, properties);
                ((Definitions) baseElt).getRootElements().add(rootLevelProcess);
            }
        } else {
            for (BaseElement child : childElements) {
                // } else {
                if (child instanceof SequenceFlow) {
                    // for some reason sequence flows are placed as root elements.
                    // find if the target has a container, and if we can use it:
                    List<String> ids = _outgoingFlows.get(child);
                    FlowElementsContainer container = null;
                    for (String id : ids) {
                        // yes, we iterate, but we'll take the first in the list that will work.
                        Object obj = _idMap.get(id);
                        if (obj instanceof EObject && ((EObject) obj).eContainer() instanceof FlowElementsContainer) {
                            container = (FlowElementsContainer) ((EObject) obj).eContainer();
                            break;
                        }
                    }
                    if (container != null) {
                        container.getFlowElements().add((SequenceFlow) child);
                        continue;
                    }
                }
                if (child instanceof Task || child instanceof SequenceFlow || child instanceof Gateway || child instanceof Event || child instanceof Artifact || child instanceof DataObject || child instanceof SubProcess || child instanceof Lane || child instanceof CallActivity || child instanceof TextAnnotation) {
                    if (rootLevelProcess == null) {
                        rootLevelProcess = Bpmn2Factory.eINSTANCE.createProcess();
                        // set the properties and item definitions first
                        if (properties.get("vardefs") != null && properties.get("vardefs").length() > 0) {
                            String[] vardefs = properties.get("vardefs").split(",\\s*");
                            for (String vardef : vardefs) {
                                Property prop = Bpmn2Factory.eINSTANCE.createProperty();
                                ItemDefinition itemdef = Bpmn2Factory.eINSTANCE.createItemDefinition();
                                // check if we define a structure ref in the definition
                                if (vardef.contains(":")) {
                                    String[] vardefParts = vardef.split(":\\s*");
                                    prop.setId(vardefParts[0]);
                                    itemdef.setId("_" + prop.getId() + "Item");
                                    boolean haveKPI = false;
                                    String kpiValue = "";
                                    if (vardefParts.length == 3) {
                                        itemdef.setStructureRef(vardefParts[1]);
                                        if (vardefParts[2].equals("true")) {
                                            haveKPI = true;
                                            kpiValue = vardefParts[2];
                                        }
                                    }
                                    if (vardefParts.length == 2) {
                                        if (vardefParts[1].equals("true") || vardefParts[1].equals("false")) {
                                            if (vardefParts[1].equals("true")) {
                                                haveKPI = true;
                                                kpiValue = vardefParts[1];
                                            }
                                        } else {
                                            itemdef.setStructureRef(vardefParts[1]);
                                        }
                                    }
                                    if (haveKPI) {
                                        Utils.setMetaDataExtensionValue(prop, "customKPI", wrapInCDATABlock(kpiValue));
                                    }
                                } else {
                                    prop.setId(vardef);
                                    itemdef.setId("_" + prop.getId() + "Item");
                                }
                                prop.setItemSubjectRef(itemdef);
                                rootLevelProcess.getProperties().add(prop);
                                ((Definitions) baseElt).getRootElements().add(itemdef);
                            }
                        }
                        if (properties.get("adhocprocess") != null && properties.get("adhocprocess").equals("true")) {
                            ExtendedMetaData metadata = ExtendedMetaData.INSTANCE;
                            EAttributeImpl extensionAttribute = (EAttributeImpl) metadata.demandFeature("http://www.jboss.org/drools", "adHoc", false, false);
                            SimpleFeatureMapEntry extensionEntry = new SimpleFeatureMapEntry(extensionAttribute, properties.get("adhocprocess"));
                            rootLevelProcess.getAnyAttribute().add(extensionEntry);
                        }
                        if (properties.get("customdescription") != null && properties.get("customdescription").length() > 0) {
                            Utils.setMetaDataExtensionValue(rootLevelProcess, "customDescription", wrapInCDATABlock(properties.get("customdescription")));
                        }
                        rootLevelProcess.setId(properties.get("id"));
                        applyProcessProperties(rootLevelProcess, properties);
                        ((Definitions) baseElt).getRootElements().add(rootLevelProcess);
                    }
                }
                if (child instanceof Task) {
                    rootLevelProcess.getFlowElements().add((Task) child);
                } else if (child instanceof CallActivity) {
                    rootLevelProcess.getFlowElements().add((CallActivity) child);
                } else if (child instanceof RootElement) {
                    ((Definitions) baseElt).getRootElements().add((RootElement) child);
                } else if (child instanceof SequenceFlow) {
                    rootLevelProcess.getFlowElements().add((SequenceFlow) child);
                } else if (child instanceof Gateway) {
                    rootLevelProcess.getFlowElements().add((Gateway) child);
                } else if (child instanceof Event) {
                    rootLevelProcess.getFlowElements().add((Event) child);
                } else if (child instanceof TextAnnotation) {
                    rootLevelProcess.getFlowElements().add((TextAnnotation) child);
                } else if (child instanceof Artifact) {
                    rootLevelProcess.getArtifacts().add((Artifact) child);
                } else if (child instanceof DataObject) {
                    // bubble up data objects
                    // rootLevelProcess.getFlowElements().add(0, (DataObject) child);
                    rootLevelProcess.getFlowElements().add((DataObject) child);
                // ItemDefinition def = ((DataObject) child).getItemSubjectRef();
                // if (def != null) {
                // if (def.eResource() == null) {
                // ((Definitions) rootLevelProcess.eContainer()).getRootElements().add(0, def);
                // }
                // Import imported = def.getImport();
                // if (imported != null && imported.eResource() == null) {
                // ((Definitions) rootLevelProcess.eContainer()).getImports().add(0, imported);
                // }
                // }
                } else if (child instanceof SubProcess) {
                    rootLevelProcess.getFlowElements().add((SubProcess) child);
                } else if (child instanceof Lane) {
                // lanes handled later
                } else {
                    _logger.error("Don't know what to do of " + child);
                }
            // }
            }
        }
    } else if (baseElt instanceof Process) {
        for (BaseElement child : childElements) {
            if (child instanceof Lane) {
                if (((Process) baseElt).getLaneSets().isEmpty()) {
                    ((Process) baseElt).getLaneSets().add(Bpmn2Factory.eINSTANCE.createLaneSet());
                }
                ((Process) baseElt).getLaneSets().get(0).getLanes().add((Lane) child);
                addLaneFlowNodes((Process) baseElt, (Lane) child);
            } else if (child instanceof Artifact) {
                ((Process) baseElt).getArtifacts().add((Artifact) child);
            } else {
                _logger.error("Don't know what to do of " + child);
            }
        }
    } else if (baseElt instanceof SubProcess) {
        for (BaseElement child : childElements) {
            if (child instanceof FlowElement) {
                ((SubProcess) baseElt).getFlowElements().add((FlowElement) child);
            } else if (child instanceof Artifact) {
                ((SubProcess) baseElt).getArtifacts().add((Artifact) child);
            } else {
                _logger.error("Subprocess - don't know what to do of " + child);
            }
        }
    } else if (baseElt instanceof Message) {
    // we do not support base-element messages from the json. They are created dynamically for events that use them.
    } else if (baseElt instanceof Lane) {
        for (BaseElement child : childElements) {
            if (child instanceof FlowNode) {
                ((Lane) baseElt).getFlowNodeRefs().add((FlowNode) child);
            } else // }
            if (child instanceof Artifact) {
                _artifacts.add((Artifact) child);
            } else {
                _logger.error("Don't know what to do of " + childElements);
            }
        }
        _lanes.add((Lane) baseElt);
    } else {
        if (!childElements.isEmpty()) {
            _logger.error("Don't know what to do of " + childElements + " with " + baseElt);
        }
    }
    return baseElt;
}
Also used : ServiceTask(org.eclipse.bpmn2.ServiceTask) ReceiveTask(org.eclipse.bpmn2.ReceiveTask) SendTask(org.eclipse.bpmn2.SendTask) GlobalTask(org.eclipse.bpmn2.GlobalTask) BusinessRuleTask(org.eclipse.bpmn2.BusinessRuleTask) Task(org.eclipse.bpmn2.Task) ScriptTask(org.eclipse.bpmn2.ScriptTask) UserTask(org.eclipse.bpmn2.UserTask) Message(org.eclipse.bpmn2.Message) SequenceFlow(org.eclipse.bpmn2.SequenceFlow) ArrayList(java.util.ArrayList) ItemDefinition(org.eclipse.bpmn2.ItemDefinition) AdHocSubProcess(org.eclipse.bpmn2.AdHocSubProcess) SubProcess(org.eclipse.bpmn2.SubProcess) Process(org.eclipse.bpmn2.Process) CallActivity(org.eclipse.bpmn2.CallActivity) EAttributeImpl(org.eclipse.emf.ecore.impl.EAttributeImpl) ExclusiveGateway(org.eclipse.bpmn2.ExclusiveGateway) Gateway(org.eclipse.bpmn2.Gateway) InclusiveGateway(org.eclipse.bpmn2.InclusiveGateway) EObject(org.eclipse.emf.ecore.EObject) ArrayList(java.util.ArrayList) List(java.util.List) JsonToken(com.fasterxml.jackson.core.JsonToken) SimpleFeatureMapEntry(org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.SimpleFeatureMapEntry) TextAnnotation(org.eclipse.bpmn2.TextAnnotation) Property(org.eclipse.bpmn2.Property) AdHocSubProcess(org.eclipse.bpmn2.AdHocSubProcess) SubProcess(org.eclipse.bpmn2.SubProcess) Bounds(org.eclipse.dd.dc.Bounds) Definitions(org.eclipse.bpmn2.Definitions) Lane(org.eclipse.bpmn2.Lane) FlowElementsContainer(org.eclipse.bpmn2.FlowElementsContainer) Point(org.eclipse.dd.dc.Point) Artifact(org.eclipse.bpmn2.Artifact) BaseElement(org.eclipse.bpmn2.BaseElement) DataObject(org.eclipse.bpmn2.DataObject) RootElement(org.eclipse.bpmn2.RootElement) FlowElement(org.eclipse.bpmn2.FlowElement) StartEvent(org.eclipse.bpmn2.StartEvent) Event(org.eclipse.bpmn2.Event) CatchEvent(org.eclipse.bpmn2.CatchEvent) BoundaryEvent(org.eclipse.bpmn2.BoundaryEvent) ThrowEvent(org.eclipse.bpmn2.ThrowEvent) EndEvent(org.eclipse.bpmn2.EndEvent) EObject(org.eclipse.emf.ecore.EObject) DataObject(org.eclipse.bpmn2.DataObject) ExtendedMetaData(org.eclipse.emf.ecore.util.ExtendedMetaData) FlowNode(org.eclipse.bpmn2.FlowNode)

Example 7 with Task

use of org.openstack4j.model.image.v2.Task in project kie-wb-common by kiegroup.

the class Bpmn2JsonUnmarshaller method revisitDataObjects.

public void revisitDataObjects(Definitions def) {
    List<RootElement> rootElements = def.getRootElements();
    List<ItemDefinition> itemDefinitionsToAddUnfiltered = new ArrayList<ItemDefinition>();
    List<ItemDefinition> itemDefinitionsToAddFiltered = new ArrayList<ItemDefinition>();
    for (RootElement root : rootElements) {
        if (root instanceof Process) {
            Process process = (Process) root;
            List<FlowElement> flowElements = process.getFlowElements();
            for (FlowElement fe : flowElements) {
                if (fe instanceof DataObject) {
                    DataObject da = (DataObject) fe;
                    ItemDefinition itemdef = Bpmn2Factory.eINSTANCE.createItemDefinition();
                    itemdef.setId("_" + da.getId() + "Item");
                    Iterator<FeatureMap.Entry> iter = da.getAnyAttribute().iterator();
                    while (iter.hasNext()) {
                        FeatureMap.Entry entry = iter.next();
                        if (entry.getEStructuralFeature().getName().equals("datype")) {
                            String typeValue = (String) entry.getValue();
                            if (typeValue != null && !typeValue.equals("None")) {
                                itemdef.setStructureRef((String) entry.getValue());
                            }
                        }
                    }
                    da.setItemSubjectRef(itemdef);
                    itemDefinitionsToAddUnfiltered.add(itemdef);
                }
            }
        }
    }
    for (ItemDefinition itemDef : itemDefinitionsToAddUnfiltered) {
        boolean foundItemDef = false;
        for (RootElement ele : rootElements) {
            if (ele instanceof ItemDefinition) {
                ItemDefinition idef = (ItemDefinition) ele;
                if (idef.getId().equals(itemDef.getId())) {
                    foundItemDef = true;
                    break;
                }
            }
        }
        if (!foundItemDef) {
            itemDefinitionsToAddFiltered.add(itemDef);
        }
    }
    for (ItemDefinition itemDefFil : itemDefinitionsToAddFiltered) {
        def.getRootElements().add(itemDefFil);
    }
    for (RootElement root : rootElements) {
        if (root instanceof Process) {
            Process process = (Process) root;
            List<Artifact> artifactElements = process.getArtifacts();
            for (Artifact af : artifactElements) {
                if (af instanceof Association) {
                    Association as = (Association) af;
                    if (as.getSourceRef() != null && as.getSourceRef() instanceof DataObject && as.getTargetRef() != null && (as.getTargetRef() instanceof Task || as.getTargetRef() instanceof ThrowEvent)) {
                        DataObject da = (DataObject) as.getSourceRef();
                        if (as.getTargetRef() instanceof Task) {
                            Task task = (Task) as.getTargetRef();
                            if (task.getIoSpecification() == null) {
                                InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
                                task.setIoSpecification(iospec);
                            }
                            if (task.getIoSpecification().getInputSets() == null || task.getIoSpecification().getInputSets().size() < 1) {
                                InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
                                task.getIoSpecification().getInputSets().add(inset);
                            }
                            InputSet inSet = task.getIoSpecification().getInputSets().get(0);
                            boolean foundDataInput = false;
                            for (DataInput dataInput : inSet.getDataInputRefs()) {
                                if (dataInput.getId().equals(task.getId() + "_" + da.getId() + "InputX")) {
                                    foundDataInput = true;
                                }
                            }
                            if (!foundDataInput) {
                                DataInput d = Bpmn2Factory.eINSTANCE.createDataInput();
                                d.setId(task.getId() + "_" + da.getId() + "InputX");
                                d.setName(da.getId() + "InputX");
                                task.getIoSpecification().getDataInputs().add(d);
                                task.getIoSpecification().getInputSets().get(0).getDataInputRefs().add(d);
                                DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
                                dia.setTargetRef(d);
                                dia.getSourceRef().add(da);
                                task.getDataInputAssociations().add(dia);
                            }
                        } else if (as.getTargetRef() instanceof ThrowEvent) {
                            ThrowEvent te = (ThrowEvent) as.getTargetRef();
                            // update throw event data input and add data input association
                            boolean foundDataInput = false;
                            List<DataInput> dataInputs = te.getDataInputs();
                            for (DataInput din : dataInputs) {
                                if (din.getId().equals(te.getId() + "_" + da.getId() + "InputX")) {
                                    foundDataInput = true;
                                }
                            }
                            if (!foundDataInput) {
                                DataInput datain = Bpmn2Factory.eINSTANCE.createDataInput();
                                datain.setId(te.getId() + "_" + da.getId() + "InputX");
                                datain.setName(da.getId() + "InputX");
                                te.getDataInputs().add(datain);
                                if (te.getInputSet() == null) {
                                    InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
                                    te.setInputSet(inset);
                                }
                                te.getInputSet().getDataInputRefs().add(datain);
                                DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
                                dia.setTargetRef(datain);
                                dia.getSourceRef().add(da);
                                te.getDataInputAssociation().add(dia);
                            }
                        }
                    }
                    if (as.getTargetRef() != null && as.getTargetRef() instanceof DataObject && as.getSourceRef() != null && (as.getSourceRef() instanceof Task || as.getSourceRef() instanceof CatchEvent)) {
                        DataObject da = (DataObject) as.getTargetRef();
                        if (as.getSourceRef() instanceof Task) {
                            Task task = (Task) as.getSourceRef();
                            if (task.getIoSpecification() == null) {
                                InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
                                task.setIoSpecification(iospec);
                            }
                            if (task.getIoSpecification().getOutputSets() == null || task.getIoSpecification().getOutputSets().size() < 1) {
                                OutputSet outSet = Bpmn2Factory.eINSTANCE.createOutputSet();
                                task.getIoSpecification().getOutputSets().add(outSet);
                            }
                            boolean foundDataOutput = false;
                            OutputSet outSet = task.getIoSpecification().getOutputSets().get(0);
                            for (DataOutput dataOut : outSet.getDataOutputRefs()) {
                                if (dataOut.getId().equals(task.getId() + "_" + da.getId() + "OutputX")) {
                                    foundDataOutput = true;
                                }
                            }
                            if (!foundDataOutput) {
                                DataOutput d = Bpmn2Factory.eINSTANCE.createDataOutput();
                                d.setId(task.getId() + "_" + da.getId() + "OutputX");
                                d.setName(da.getId() + "OutputX");
                                task.getIoSpecification().getDataOutputs().add(d);
                                task.getIoSpecification().getOutputSets().get(0).getDataOutputRefs().add(d);
                                DataOutputAssociation doa = Bpmn2Factory.eINSTANCE.createDataOutputAssociation();
                                doa.getSourceRef().add(d);
                                doa.setTargetRef(da);
                                task.getDataOutputAssociations().add(doa);
                            }
                        } else if (as.getSourceRef() instanceof CatchEvent) {
                            CatchEvent ce = (CatchEvent) as.getSourceRef();
                            // update catch event data output and add data output association
                            boolean foundDataOutput = false;
                            List<DataOutput> dataOutputs = ce.getDataOutputs();
                            for (DataOutput dout : dataOutputs) {
                                if (dout.getId().equals(ce.getId() + "_" + da.getId() + "OutputX")) {
                                    foundDataOutput = true;
                                }
                            }
                            if (!foundDataOutput) {
                                DataOutput dataout = Bpmn2Factory.eINSTANCE.createDataOutput();
                                dataout.setId(ce.getId() + "_" + da.getId() + "OutputX");
                                dataout.setName(da.getId() + "OutputX");
                                ce.getDataOutputs().add(dataout);
                                if (ce.getOutputSet() == null) {
                                    OutputSet outset = Bpmn2Factory.eINSTANCE.createOutputSet();
                                    ce.setOutputSet(outset);
                                }
                                ce.getOutputSet().getDataOutputRefs().add(dataout);
                                DataOutputAssociation dia = Bpmn2Factory.eINSTANCE.createDataOutputAssociation();
                                dia.setTargetRef(da);
                                dia.getSourceRef().add(dataout);
                                ce.getDataOutputAssociation().add(dia);
                            }
                        }
                    }
                    if (as.getSourceRef() != null && as.getSourceRef() instanceof DataObject && as.getTargetRef() != null && (as.getTargetRef() instanceof SequenceFlow)) {
                        SequenceFlow sf = (SequenceFlow) as.getTargetRef();
                        if (sf.getSourceRef() != null && sf.getSourceRef() instanceof Activity && sf.getTargetRef() != null && sf.getTargetRef() instanceof Activity) {
                            Activity sourceElement = (Activity) sf.getSourceRef();
                            Activity targetElement = (Activity) sf.getTargetRef();
                            DataObject da = (DataObject) as.getSourceRef();
                            if (targetElement.getIoSpecification() == null) {
                                InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
                                targetElement.setIoSpecification(iospec);
                            }
                            if (targetElement.getIoSpecification().getInputSets() == null || targetElement.getIoSpecification().getInputSets().size() < 1) {
                                InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
                                targetElement.getIoSpecification().getInputSets().add(inset);
                            }
                            InputSet inSet = targetElement.getIoSpecification().getInputSets().get(0);
                            boolean foundDataInput = false;
                            for (DataInput dataInput : inSet.getDataInputRefs()) {
                                if (dataInput.getId().equals(targetElement.getId() + "_" + da.getId() + "InputX")) {
                                    foundDataInput = true;
                                }
                            }
                            if (!foundDataInput) {
                                DataInput d = Bpmn2Factory.eINSTANCE.createDataInput();
                                d.setId(targetElement.getId() + "_" + da.getId() + "InputX");
                                d.setName(da.getId() + "InputX");
                                targetElement.getIoSpecification().getDataInputs().add(d);
                                targetElement.getIoSpecification().getInputSets().get(0).getDataInputRefs().add(d);
                                DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
                                dia.setTargetRef(d);
                                dia.getSourceRef().add(da);
                                targetElement.getDataInputAssociations().add(dia);
                            }
                            if (sourceElement.getIoSpecification() == null) {
                                InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
                                sourceElement.setIoSpecification(iospec);
                            }
                            if (sourceElement.getIoSpecification().getOutputSets() == null || sourceElement.getIoSpecification().getOutputSets().size() < 1) {
                                OutputSet outSet = Bpmn2Factory.eINSTANCE.createOutputSet();
                                sourceElement.getIoSpecification().getOutputSets().add(outSet);
                            }
                            boolean foundDataOutput = false;
                            OutputSet outSet = sourceElement.getIoSpecification().getOutputSets().get(0);
                            for (DataOutput dataOut : outSet.getDataOutputRefs()) {
                                if (dataOut.getId().equals(sourceElement.getId() + "_" + da.getId() + "OutputX")) {
                                    foundDataOutput = true;
                                }
                            }
                            if (!foundDataOutput) {
                                DataOutput d = Bpmn2Factory.eINSTANCE.createDataOutput();
                                d.setId(sourceElement.getId() + "_" + da.getId() + "OutputX");
                                d.setName(da.getId() + "OutputX");
                                sourceElement.getIoSpecification().getDataOutputs().add(d);
                                sourceElement.getIoSpecification().getOutputSets().get(0).getDataOutputRefs().add(d);
                                DataOutputAssociation doa = Bpmn2Factory.eINSTANCE.createDataOutputAssociation();
                                doa.getSourceRef().add(d);
                                doa.setTargetRef(da);
                                sourceElement.getDataOutputAssociations().add(doa);
                            }
                        }
                    }
                }
            }
        }
    }
}
Also used : DataOutput(org.eclipse.bpmn2.DataOutput) ServiceTask(org.eclipse.bpmn2.ServiceTask) ReceiveTask(org.eclipse.bpmn2.ReceiveTask) SendTask(org.eclipse.bpmn2.SendTask) GlobalTask(org.eclipse.bpmn2.GlobalTask) BusinessRuleTask(org.eclipse.bpmn2.BusinessRuleTask) Task(org.eclipse.bpmn2.Task) ScriptTask(org.eclipse.bpmn2.ScriptTask) UserTask(org.eclipse.bpmn2.UserTask) SequenceFlow(org.eclipse.bpmn2.SequenceFlow) ItemDefinition(org.eclipse.bpmn2.ItemDefinition) ArrayList(java.util.ArrayList) Activity(org.eclipse.bpmn2.Activity) CallActivity(org.eclipse.bpmn2.CallActivity) AdHocSubProcess(org.eclipse.bpmn2.AdHocSubProcess) SubProcess(org.eclipse.bpmn2.SubProcess) Process(org.eclipse.bpmn2.Process) CatchEvent(org.eclipse.bpmn2.CatchEvent) Entry(java.util.Map.Entry) SimpleFeatureMapEntry(org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.SimpleFeatureMapEntry) Association(org.eclipse.bpmn2.Association) DataOutputAssociation(org.eclipse.bpmn2.DataOutputAssociation) DataInputAssociation(org.eclipse.bpmn2.DataInputAssociation) ArrayList(java.util.ArrayList) List(java.util.List) DataOutputAssociation(org.eclipse.bpmn2.DataOutputAssociation) ThrowEvent(org.eclipse.bpmn2.ThrowEvent) OutputSet(org.eclipse.bpmn2.OutputSet) InputOutputSpecification(org.eclipse.bpmn2.InputOutputSpecification) Artifact(org.eclipse.bpmn2.Artifact) FeatureMap(org.eclipse.emf.ecore.util.FeatureMap) InputSet(org.eclipse.bpmn2.InputSet) DataInput(org.eclipse.bpmn2.DataInput) RootElement(org.eclipse.bpmn2.RootElement) DataObject(org.eclipse.bpmn2.DataObject) FlowElement(org.eclipse.bpmn2.FlowElement) DataInputAssociation(org.eclipse.bpmn2.DataInputAssociation)

Example 8 with Task

use of org.openstack4j.model.image.v2.Task in project cloudbreak by hortonworks.

the class OpenStackImageImporter method importImage.

public void importImage(OSClient osClient, String name) {
    String importLocation = openStackImageImportTaskParameters.getImportLocation(name);
    LOGGER.info("Import OpenStack image from: {}", importLocation);
    if (!urlAccessValidationService.isAccessible(importLocation)) {
        throw new CloudConnectorException(String.format("OpenStack image '%s' is not accessible, therefore it cannot be imported automatically", importLocation));
    }
    Map<String, Object> input = openStackImageImportTaskParameters.buildInput(name);
    LOGGER.info("Executing of the following import Task: {}", input);
    Task task = osClient.imagesV2().tasks().create(Builders.taskBuilder().type("import").input(input).build());
    evaluateTaskStatus(task, name);
    LOGGER.info("Task of importing {} image, returned with {}", name, task.getStatus());
}
Also used : Task(org.openstack4j.model.image.v2.Task) CloudConnectorException(com.sequenceiq.cloudbreak.cloud.exception.CloudConnectorException)

Example 9 with Task

use of org.openstack4j.model.image.v2.Task in project cloudbreak by hortonworks.

the class OpenStackImageImporter method evaluateTaskStatus.

private void evaluateTaskStatus(Task task, String name) {
    if (task != null) {
        TaskStatus status = task.getStatus();
        LOGGER.info("Task status: {}", status);
        if (status == null) {
            throw new CloudConnectorException(String.format("Import of %s did not return any status, message: %s", name, task.getMessage()));
        } else if (status == TaskStatus.FAILURE || status == TaskStatus.UNKNOWN) {
            throw new CloudConnectorException(String.format("Import of %s failed with status: %s, message: %s", name, status, task.getMessage()));
        }
    } else {
        throw new CloudConnectorException(String.format("Import of %s did not return any task or status object", name));
    }
}
Also used : CloudConnectorException(com.sequenceiq.cloudbreak.cloud.exception.CloudConnectorException) TaskStatus(org.openstack4j.model.image.v2.Task.TaskStatus)

Aggregations

Task (org.eclipse.bpmn2.Task)5 AdHocSubProcess (org.eclipse.bpmn2.AdHocSubProcess)4 BusinessRuleTask (org.eclipse.bpmn2.BusinessRuleTask)4 FlowElement (org.eclipse.bpmn2.FlowElement)4 GlobalTask (org.eclipse.bpmn2.GlobalTask)4 Process (org.eclipse.bpmn2.Process)4 ReceiveTask (org.eclipse.bpmn2.ReceiveTask)4 RootElement (org.eclipse.bpmn2.RootElement)4 ScriptTask (org.eclipse.bpmn2.ScriptTask)4 SendTask (org.eclipse.bpmn2.SendTask)4 ServiceTask (org.eclipse.bpmn2.ServiceTask)4 SubProcess (org.eclipse.bpmn2.SubProcess)4 UserTask (org.eclipse.bpmn2.UserTask)4 DataInputAssociation (org.eclipse.bpmn2.DataInputAssociation)3 DataOutputAssociation (org.eclipse.bpmn2.DataOutputAssociation)3 InputSet (org.eclipse.bpmn2.InputSet)3 ItemDefinition (org.eclipse.bpmn2.ItemDefinition)3 OutputSet (org.eclipse.bpmn2.OutputSet)3 SimpleFeatureMapEntry (org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.SimpleFeatureMapEntry)3 Task (org.openstack4j.model.image.v2.Task)3