Search in sources :

Example 1 with BPSimDataType

use of bpsim.BPSimDataType in project kie-wb-common by kiegroup.

the class Bpmn2JsonMarshaller method marshall.

/**
 * NOTE:
 * This method has been added for Stunner support. Stunner bpmn parser provides a custom JsonGenerator that
 * is used instead of the one used in jbpm-designer-backend.
 */
public void marshall(JsonGenerator generator, Definitions def, String preProcessingData) throws IOException {
    if (def.getRelationships() != null && def.getRelationships().size() > 0) {
        // current support for single relationship
        Relationship relationship = def.getRelationships().get(0);
        for (ExtensionAttributeValue extattrval : relationship.getExtensionValues()) {
            FeatureMap extensionElements = extattrval.getValue();
            @SuppressWarnings("unchecked") List<BPSimDataType> bpsimExtensions = (List<BPSimDataType>) extensionElements.get(BpsimPackage.Literals.DOCUMENT_ROOT__BP_SIM_DATA, true);
            if (bpsimExtensions != null && bpsimExtensions.size() > 0) {
                BPSimDataType processAnalysis = bpsimExtensions.get(0);
                if (processAnalysis.getScenario() != null && processAnalysis.getScenario().size() > 0) {
                    _simulationScenario = processAnalysis.getScenario().get(0);
                }
            }
        }
    }
    if (preProcessingData == null || preProcessingData.length() < 1) {
        preProcessingData = "ReadOnlyService";
    }
    // this is a temp way to determine if
    // coordinate system changes are necessary
    String bpmn2Exporter = def.getExporter();
    String bpmn2ExporterVersion = def.getExporterVersion();
    boolean haveExporter = bpmn2Exporter != null && bpmn2ExporterVersion != null;
    if (_simulationScenario != null && !haveExporter) {
        coordianteManipulation = false;
    }
    marshallDefinitions(def, generator, preProcessingData);
// generator.close(); FIXME: can we remove this from here?
}
Also used : FeatureMap(org.eclipse.emf.ecore.util.FeatureMap) Relationship(org.eclipse.bpmn2.Relationship) ArrayList(java.util.ArrayList) List(java.util.List) EList(org.eclipse.emf.common.util.EList) ExtensionAttributeValue(org.eclipse.bpmn2.ExtensionAttributeValue) BPSimDataType(bpsim.BPSimDataType)

Example 2 with BPSimDataType

use of bpsim.BPSimDataType in project kie-wb-common by kiegroup.

the class Bpmn2JsonUnmarshaller method addSimulation.

public void addSimulation(Definitions def) {
    Relationship relationship = Bpmn2Factory.eINSTANCE.createRelationship();
    relationship.getSources().add(def);
    relationship.getTargets().add(def);
    relationship.setType(defaultRelationshipType);
    BPSimDataType simDataType = BpsimFactory.eINSTANCE.createBPSimDataType();
    // currently support single scenario
    Scenario defaultScenario = BpsimFactory.eINSTANCE.createScenario();
    // single scenario suppoert
    defaultScenario.setId("default");
    // single scenario support
    defaultScenario.setName("Simulationscenario");
    defaultScenario.setScenarioParameters(_simulationScenarioParameters);
    if (_simulationElementParameters.size() > 0) {
        Iterator<String> iter = _simulationElementParameters.keySet().iterator();
        while (iter.hasNext()) {
            String key = iter.next();
            ElementParameters etype = BpsimFactory.eINSTANCE.createElementParameters();
            etype.setElementRef(key);
            List<EObject> params = _simulationElementParameters.get(key);
            for (EObject np : params) {
                if (np instanceof ControlParameters) {
                    etype.setControlParameters((ControlParameters) np);
                } else if (np instanceof CostParameters) {
                    etype.setCostParameters((CostParameters) np);
                } else if (np instanceof PriorityParameters) {
                    etype.setPriorityParameters((PriorityParameters) np);
                } else if (np instanceof ResourceParameters) {
                    etype.setResourceParameters((ResourceParameters) np);
                } else if (np instanceof TimeParameters) {
                    etype.setTimeParameters((TimeParameters) np);
                }
            }
            defaultScenario.getElementParameters().add(etype);
        }
    }
    simDataType.getScenario().add(defaultScenario);
    ExtensionAttributeValue extensionElement = Bpmn2Factory.eINSTANCE.createExtensionAttributeValue();
    relationship.getExtensionValues().add(extensionElement);
    FeatureMap.Entry extensionElementEntry = new SimpleFeatureMapEntry((Internal) BpsimPackage.Literals.DOCUMENT_ROOT__BP_SIM_DATA, simDataType);
    relationship.getExtensionValues().get(0).getValue().add(extensionElementEntry);
    def.getRelationships().add(relationship);
}
Also used : CostParameters(bpsim.CostParameters) ElementParameters(bpsim.ElementParameters) ExtensionAttributeValue(org.eclipse.bpmn2.ExtensionAttributeValue) ResourceParameters(bpsim.ResourceParameters) Scenario(bpsim.Scenario) FeatureMap(org.eclipse.emf.ecore.util.FeatureMap) Relationship(org.eclipse.bpmn2.Relationship) EObject(org.eclipse.emf.ecore.EObject) ControlParameters(bpsim.ControlParameters) SimpleFeatureMapEntry(org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.SimpleFeatureMapEntry) PriorityParameters(bpsim.PriorityParameters) BPSimDataType(bpsim.BPSimDataType) TimeParameters(bpsim.TimeParameters)

Example 3 with BPSimDataType

use of bpsim.BPSimDataType in project kie-wb-common by kiegroup.

the class DefinitionResolver method initSimulationParameters.

private Map<String, ElementParameters> initSimulationParameters(Definitions definitions) {
    Map<String, ElementParameters> simulationParameters = new HashMap<>();
    List<Relationship> relationships = definitions.getRelationships();
    if (relationships.isEmpty()) {
        return Collections.emptyMap();
    }
    FeatureMap value = relationships.get(0).getExtensionValues().get(0).getValue();
    Object simData = value.get(BpsimPackage.Literals.DOCUMENT_ROOT__BP_SIM_DATA, true);
    List<BPSimDataType> bpsimExtensions = (List<BPSimDataType>) simData;
    Scenario scenario = bpsimExtensions.get(0).getScenario().get(0);
    for (ElementParameters parameters : scenario.getElementParameters()) {
        simulationParameters.put(parameters.getElementRef(), parameters);
    }
    return simulationParameters;
}
Also used : FeatureMap(org.eclipse.emf.ecore.util.FeatureMap) ElementParameters(bpsim.ElementParameters) HashMap(java.util.HashMap) Relationship(org.eclipse.bpmn2.Relationship) List(java.util.List) BPSimDataType(bpsim.BPSimDataType) Scenario(bpsim.Scenario)

Example 4 with BPSimDataType

use of bpsim.BPSimDataType in project kie-wb-common by kiegroup.

the class ProcessPropertyWriter method getRelationship.

public Relationship getRelationship() {
    Relationship relationship = bpmn2.createRelationship();
    relationship.setType(defaultRelationshipType);
    BPSimDataType simDataType = bpsim.createBPSimDataType();
    // currently support single scenario
    Scenario defaultScenario = bpsim.createScenario();
    ScenarioParameters scenarioParameters = bpsim.createScenarioParameters();
    // single scenario suppoert
    defaultScenario.setId("default");
    // single scenario support
    defaultScenario.setName("Simulationscenario");
    defaultScenario.setScenarioParameters(scenarioParameters);
    simDataType.getScenario().add(defaultScenario);
    ExtensionAttributeValue extensionElement = bpmn2.createExtensionAttributeValue();
    relationship.getExtensionValues().add(extensionElement);
    FeatureMap.Entry extensionElementEntry = new EStructuralFeatureImpl.SimpleFeatureMapEntry((EStructuralFeature.Internal) BpsimPackage.Literals.DOCUMENT_ROOT__BP_SIM_DATA, simDataType);
    relationship.getExtensionValues().get(0).getValue().add(extensionElementEntry);
    defaultScenario.getElementParameters().addAll(simulationParameters);
    return relationship;
}
Also used : FeatureMap(org.eclipse.emf.ecore.util.FeatureMap) Relationship(org.eclipse.bpmn2.Relationship) EStructuralFeature(org.eclipse.emf.ecore.EStructuralFeature) ScenarioParameters(bpsim.ScenarioParameters) ExtensionAttributeValue(org.eclipse.bpmn2.ExtensionAttributeValue) BPSimDataType(bpsim.BPSimDataType) Scenario(bpsim.Scenario)

Example 5 with BPSimDataType

use of bpsim.BPSimDataType in project jbpm by kiegroup.

the class BpsimTest method testBpsimData.

@SuppressWarnings("unchecked")
public void testBpsimData() throws Exception {
    // write
    XMLResource inResource = (XMLResource) resourceSet.createResource(URI.createURI("inputStream://dummyUriWithValidSuffix.xml"));
    inResource.getDefaultLoadOptions().put(XMLResource.OPTION_ENCODING, "UTF-8");
    inResource.setEncoding("UTF-8");
    DocumentRoot documentRoot = BpsimFactory.eINSTANCE.createDocumentRoot();
    BPSimDataType bpsimData = BpsimFactory.eINSTANCE.createBPSimDataType();
    Scenario defaultScenario = BpsimFactory.eINSTANCE.createScenario();
    defaultScenario.setId("default");
    defaultScenario.setName("Scenario");
    ScenarioParameters scenarioParams = BpsimFactory.eINSTANCE.createScenarioParameters();
    scenarioParams.setBaseTimeUnit(TimeUnit.S);
    defaultScenario.setScenarioParameters(scenarioParams);
    ElementParameters elementParams = BpsimFactory.eINSTANCE.createElementParameters();
    TimeParameters elementTimeParams = BpsimFactory.eINSTANCE.createTimeParameters();
    Parameter processingTimeParameter = BpsimFactory.eINSTANCE.createParameter();
    UniformDistributionType uniformDistrobutionType = BpsimFactory.eINSTANCE.createUniformDistributionType();
    uniformDistrobutionType.setMin(180.0);
    uniformDistrobutionType.setMax(600.0);
    processingTimeParameter.getParameterValue().add(uniformDistrobutionType);
    elementTimeParams.setProcessingTime(processingTimeParameter);
    elementParams.setTimeParameters(elementTimeParams);
    defaultScenario.getElementParameters().add(elementParams);
    bpsimData.getScenario().add(defaultScenario);
    documentRoot.setBPSimData(bpsimData);
    inResource.getContents().add(documentRoot);
    StringWriter stringWriter = new StringWriter();
    inResource.save(stringWriter, null);
    assertNotNull(stringWriter.getBuffer().toString());
    if (stringWriter.getBuffer().toString().length() < 1) {
        fail("generated xml is empty");
    }
    // read
    XMLResource outResource = (XMLResource) resourceSet.createResource(URI.createURI("inputStream://dummyUriWithValidSuffix.xml"));
    outResource.getDefaultLoadOptions().put(XMLResource.OPTION_ENCODING, "UTF-8");
    outResource.setEncoding("UTF-8");
    Map<String, Object> options = new HashMap<String, Object>();
    options.put(XMLResource.OPTION_ENCODING, "UTF-8");
    InputStream is = new ByteArrayInputStream(stringWriter.getBuffer().toString().getBytes("UTF-8"));
    outResource.load(is, options);
    DocumentRoot outRoot = (DocumentRoot) outResource.getContents().get(0);
    assertNotNull(outRoot.getBPSimData());
    BPSimDataType outAnalysisData = outRoot.getBPSimData();
    assertEquals(outAnalysisData.getScenario().size(), 1);
    Scenario outScenario = outAnalysisData.getScenario().get(0);
    assertEquals(outScenario.getElementParameters().size(), 1);
    assertEquals(outScenario.getId(), "default");
    assertEquals(outScenario.getName(), "Scenario");
    assertNotNull(outScenario.getScenarioParameters());
    assertNotNull(outScenario.getElementParameters());
    assertEquals(outScenario.getElementParameters().size(), 1);
    ElementParameters outElementParamType = outScenario.getElementParameters().get(0);
    assertNotNull(outElementParamType.getTimeParameters());
    TimeParameters outTimeParams = outElementParamType.getTimeParameters();
    assertNotNull(outTimeParams.getProcessingTime());
    assertEquals(outTimeParams.getProcessingTime().getParameterValue().size(), 1);
    UniformDistributionType outDistributionType = (UniformDistributionType) outTimeParams.getProcessingTime().getParameterValue().get(0);
    assertEquals(outDistributionType.getMax(), 600.0);
    assertEquals(outDistributionType.getMin(), 180.0);
}
Also used : UniformDistributionType(bpsim.UniformDistributionType) ElementParameters(bpsim.ElementParameters) HashMap(java.util.HashMap) DocumentRoot(bpsim.DocumentRoot) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) XMLResource(org.eclipse.emf.ecore.xmi.XMLResource) Scenario(bpsim.Scenario) StringWriter(java.io.StringWriter) ByteArrayInputStream(java.io.ByteArrayInputStream) ScenarioParameters(bpsim.ScenarioParameters) Parameter(bpsim.Parameter) BPSimDataType(bpsim.BPSimDataType) TimeParameters(bpsim.TimeParameters)

Aggregations

BPSimDataType (bpsim.BPSimDataType)5 Scenario (bpsim.Scenario)4 Relationship (org.eclipse.bpmn2.Relationship)4 FeatureMap (org.eclipse.emf.ecore.util.FeatureMap)4 ElementParameters (bpsim.ElementParameters)3 ExtensionAttributeValue (org.eclipse.bpmn2.ExtensionAttributeValue)3 ScenarioParameters (bpsim.ScenarioParameters)2 TimeParameters (bpsim.TimeParameters)2 HashMap (java.util.HashMap)2 List (java.util.List)2 ControlParameters (bpsim.ControlParameters)1 CostParameters (bpsim.CostParameters)1 DocumentRoot (bpsim.DocumentRoot)1 Parameter (bpsim.Parameter)1 PriorityParameters (bpsim.PriorityParameters)1 ResourceParameters (bpsim.ResourceParameters)1 UniformDistributionType (bpsim.UniformDistributionType)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 InputStream (java.io.InputStream)1 StringWriter (java.io.StringWriter)1