use of org.eclipse.bpmn2.Assignment in project kie-wb-common by kiegroup.
the class BPMNFormModelGeneratorImpl method readTaskVariables.
protected void readTaskVariables(UserTask userTask, ProcessTaskFormsGenerationResult result) {
TaskFormVariables formVariables = new TaskFormVariables(userTask);
List<DataInputAssociation> dataInputAssociations = userTask.getDataInputAssociations();
if (dataInputAssociations != null) {
for (DataInputAssociation inputAssociation : dataInputAssociations) {
if (inputAssociation.getTargetRef() != null) {
String name = ((DataInput) inputAssociation.getTargetRef()).getName();
if (BPMNVariableUtils.isValidInputName(name)) {
String type = Optional.ofNullable(inputAssociation.getTargetRef().getItemSubjectRef()).map(ItemDefinition::getStructureRef).orElse(inputAssociation.getTargetRef().getAnyAttribute().get(0).getValue().toString());
type = BPMNVariableUtils.getRealTypeForInput(type);
Variable variable = new Variable(name, type);
variable.setInput(true);
formVariables.addVariable(variable);
} else if (BPMNVariableUtils.TASK_FORM_VARIABLE.equals(name)) {
List<Assignment> assignments = inputAssociation.getAssignment();
for (Iterator<Assignment> it = assignments.iterator(); it.hasNext() && StringUtils.isEmpty(formVariables.getTaskName()); ) {
Assignment assignment = it.next();
if (assignment.getFrom() != null) {
String taskName = ((FormalExpression) assignment.getFrom()).getBody();
if (!StringUtils.isEmpty(taskName)) {
// Parsing taskName... it comes in a <![CDATA[]]>
taskName = Parser.xmlParser().parseInput(taskName, "").toString();
formVariables.setTaskName(taskName);
}
}
}
}
}
}
}
List<DataOutputAssociation> dataOutputAssociations = userTask.getDataOutputAssociations();
if (dataOutputAssociations != null) {
dataOutputAssociations.forEach(outputAssociation -> {
if (outputAssociation.getSourceRef() != null && outputAssociation.getSourceRef().size() == 1) {
DataOutput output = (DataOutput) outputAssociation.getSourceRef().get(0);
String name = output.getName();
String type = Optional.ofNullable(output.getItemSubjectRef()).map(ItemDefinition::getStructureRef).orElse(output.getAnyAttribute().get(0).getValue().toString());
type = BPMNVariableUtils.getRealTypeForInput(type);
Variable variable = new Variable(name, type);
variable.setOutput(true);
formVariables.addVariable(variable);
}
});
}
if (!StringUtils.isEmpty(formVariables.getTaskName())) {
result.registerTaskFormVariables(userTask.getId(), formVariables);
} else {
logger.warn("Cannot generate a form for task '{}' since it has no form name.", userTask.getName());
}
}
use of org.eclipse.bpmn2.Assignment in project kie-wb-common by kiegroup.
the class Bpmn2JsonUnmarshaller method applyCallActivityProperties.
protected void applyCallActivityProperties(CallActivity callActivity, Map<String, String> properties) {
if (properties.get("name") != null) {
callActivity.setName(StringEscapeUtils.escapeXml(properties.get("name")).replaceAll("\\r\\n|\\r|\\n", " "));
// add unescaped and untouched name value as extension element as well
Utils.setMetaDataExtensionValue(callActivity, "elementname", wrapInCDATABlock(properties.get("name").replaceAll("\\\\n", "\n")));
} else {
callActivity.setName("");
}
if (properties.get("independent") != null && properties.get("independent").length() > 0) {
ExtendedMetaData metadata = ExtendedMetaData.INSTANCE;
EAttributeImpl extensionAttribute = (EAttributeImpl) metadata.demandFeature("http://www.jboss.org/drools", "independent", false, false);
SimpleFeatureMapEntry extensionEntry = new SimpleFeatureMapEntry(extensionAttribute, properties.get("independent"));
callActivity.getAnyAttribute().add(extensionEntry);
}
if (properties.get("waitforcompletion") != null && properties.get("waitforcompletion").length() > 0) {
ExtendedMetaData metadata = ExtendedMetaData.INSTANCE;
EAttributeImpl extensionAttribute = (EAttributeImpl) metadata.demandFeature("http://www.jboss.org/drools", "waitForCompletion", false, false);
SimpleFeatureMapEntry extensionEntry = new SimpleFeatureMapEntry(extensionAttribute, properties.get("waitforcompletion"));
callActivity.getAnyAttribute().add(extensionEntry);
}
if (properties.get("calledelement") != null && properties.get("calledelement").length() > 0) {
callActivity.setCalledElement(properties.get("calledelement"));
}
// isAsync metadata
if (properties.get("isasync") != null && properties.get("isasync").length() > 0 && properties.get("isasync").equals("true")) {
Utils.setMetaDataExtensionValue(callActivity, "customAsync", wrapInCDATABlock(properties.get("isasync")));
}
parseAssignmentsInfo(properties);
// callActivity data input set
applyDataInputProperties(callActivity, properties, new HashMap<String, DataInput>());
// callActivity data output set
applyDataOutputProperties(callActivity, properties);
// callActivity assignments
if (properties.get("assignments") != null && properties.get("assignments").length() > 0) {
String[] allAssignments = properties.get("assignments").split(",\\s*");
for (String assignment : allAssignments) {
if (assignment.contains("=")) {
String[] assignmentParts = assignment.split("=\\s*");
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
String fromPart = assignmentParts[0];
if (fromPart.startsWith("[din]")) {
fromPart = fromPart.substring(5, fromPart.length());
}
boolean foundTaskName = false;
if (callActivity.getIoSpecification() != null && callActivity.getIoSpecification().getDataOutputs() != null) {
List<DataInput> dataInputs = callActivity.getIoSpecification().getDataInputs();
for (DataInput di : dataInputs) {
if (di.getId().equals(callActivity.getId() + "_" + fromPart + "InputX")) {
dia.setTargetRef(di);
if (di.getName().equals("TaskName")) {
foundTaskName = true;
break;
}
}
}
}
Assignment a = Bpmn2Factory.eINSTANCE.createAssignment();
FormalExpression fromExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
if (assignmentParts.length > 1) {
String replacer = decodeAssociationValue(assignmentParts[1]);
fromExpression.setBody(wrapInCDATABlock(replacer));
} else {
fromExpression.setBody("");
}
FormalExpression toExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
toExpression.setBody(dia.getTargetRef().getId());
a.setFrom(fromExpression);
a.setTo(toExpression);
dia.getAssignment().add(a);
callActivity.getDataInputAssociations().add(dia);
// } else if(assignment.contains("<->")) {
// String[] assignmentParts = assignment.split( "<->\\s*" );
// DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
// DataOutputAssociation doa = Bpmn2Factory.eINSTANCE.createDataOutputAssociation();
//
// ItemAwareElement ie = Bpmn2Factory.eINSTANCE.createItemAwareElement();
// ie.setId(assignmentParts[0]);
// dia.getSourceRef().add(ie);
// doa.setTargetRef(ie);
//
// List<DataInput> dataInputs = callActivity.getIoSpecification().getDataInputs();
// for(DataInput di : dataInputs) {
// if(di.getId().equals(callActivity.getId() + "_" + assignmentParts[1] + "InputX")) {
// dia.setTargetRef(di);
// break;
// }
// }
// List<DataOutput> dataOutputs = callActivity.getIoSpecification().getDataOutputs();
// for(DataOutput dout : dataOutputs) {
// if(dout.getId().equals(callActivity.getId() + "_" + assignmentParts[1] + "OutputX")) {
// doa.getSourceRef().add(dout);
// break;
// }
// }
//
// callActivity.getDataInputAssociations().add(dia);
// callActivity.getDataOutputAssociations().add(doa);
} else if (assignment.contains("->")) {
String[] assignmentParts = assignment.split("->\\s*");
String fromPart = assignmentParts[0];
boolean isDataInput = false;
boolean isDataOutput = false;
if (fromPart.startsWith("[din]")) {
fromPart = fromPart.substring(5, fromPart.length());
isDataInput = true;
}
if (fromPart.startsWith("[dout]")) {
fromPart = fromPart.substring(6, fromPart.length());
isDataOutput = true;
}
List<DataOutput> dataOutputs = callActivity.getIoSpecification().getDataOutputs();
if (isDataOutput) {
// doing data output
DataOutputAssociation doa = Bpmn2Factory.eINSTANCE.createDataOutputAssociation();
for (DataOutput dout : dataOutputs) {
if (dout.getId().equals(callActivity.getId() + "_" + fromPart + "OutputX")) {
doa.getSourceRef().add(dout);
break;
}
}
ItemAwareElement ie = Bpmn2Factory.eINSTANCE.createItemAwareElement();
ie.setId(assignmentParts[1]);
doa.setTargetRef(ie);
callActivity.getDataOutputAssociations().add(doa);
} else if (isDataInput) {
// doing data input
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
// association from process var to dataInput var
ItemAwareElement ie = Bpmn2Factory.eINSTANCE.createItemAwareElement();
ie.setId(fromPart);
dia.getSourceRef().add(ie);
List<DataInput> dataInputs = callActivity.getIoSpecification().getDataInputs();
for (DataInput di : dataInputs) {
if (di.getId().equals(callActivity.getId() + "_" + assignmentParts[1] + "InputX")) {
dia.setTargetRef(di);
break;
}
}
callActivity.getDataInputAssociations().add(dia);
}
} else {
// TODO throw exception here?
}
}
}
// process on-entry and on-exit actions as custom elements
applyOnEntryActions(callActivity, properties);
applyOnExitActions(callActivity, properties);
// simulation
if (properties.get("distributiontype") != null && properties.get("distributiontype").length() > 0) {
TimeParameters timeParams = BpsimFactory.eINSTANCE.createTimeParameters();
Parameter processingTimeParam = BpsimFactory.eINSTANCE.createParameter();
if (properties.get("distributiontype").equals("normal")) {
NormalDistributionType normalDistributionType = BpsimFactory.eINSTANCE.createNormalDistributionType();
normalDistributionType.setStandardDeviation(Double.valueOf(properties.get("standarddeviation")));
normalDistributionType.setMean(Double.valueOf(properties.get("mean")));
processingTimeParam.getParameterValue().add(normalDistributionType);
} else if (properties.get("distributiontype").equals("uniform")) {
UniformDistributionType uniformDistributionType = BpsimFactory.eINSTANCE.createUniformDistributionType();
uniformDistributionType.setMax(Double.valueOf(properties.get("max")));
uniformDistributionType.setMin(Double.valueOf(properties.get("min")));
processingTimeParam.getParameterValue().add(uniformDistributionType);
// random distribution not supported in bpsim 1.0
// } else if(properties.get("distributiontype").equals("random")) {
// RandomDistributionType randomDistributionType = BpsimFactory.eINSTANCE.createRandomDistributionType();
// randomDistributionType.setMax(Double.valueOf(properties.get("max")));
// randomDistributionType.setMin(Double.valueOf(properties.get("min")));
// processingTimeParam.getParameterValue().add(randomDistributionType);
} else if (properties.get("distributiontype").equals("poisson")) {
PoissonDistributionType poissonDistributionType = BpsimFactory.eINSTANCE.createPoissonDistributionType();
poissonDistributionType.setMean(Double.valueOf(properties.get("mean")));
processingTimeParam.getParameterValue().add(poissonDistributionType);
}
// }
if (properties.get("waittime") != null) {
Parameter waittimeParam = BpsimFactory.eINSTANCE.createParameter();
FloatingParameterType waittimeParamValue = BpsimFactory.eINSTANCE.createFloatingParameterType();
DecimalFormat twoDForm = new DecimalFormat("#.##");
waittimeParamValue.setValue(Double.valueOf(twoDForm.format(Double.valueOf(properties.get("waittime")))));
waittimeParam.getParameterValue().add(waittimeParamValue);
timeParams.setWaitTime(waittimeParam);
}
timeParams.setProcessingTime(processingTimeParam);
if (_simulationElementParameters.containsKey(callActivity.getId())) {
_simulationElementParameters.get(callActivity.getId()).add(timeParams);
} else {
List<EObject> values = new ArrayList<EObject>();
values.add(timeParams);
_simulationElementParameters.put(callActivity.getId(), values);
}
}
CostParameters costParameters = BpsimFactory.eINSTANCE.createCostParameters();
if (properties.get("unitcost") != null && properties.get("unitcost").length() > 0) {
Parameter unitcostParam = BpsimFactory.eINSTANCE.createParameter();
FloatingParameterType unitCostParameterValue = BpsimFactory.eINSTANCE.createFloatingParameterType();
unitCostParameterValue.setValue(new Double(properties.get("unitcost")));
unitcostParam.getParameterValue().add(unitCostParameterValue);
costParameters.setUnitCost(unitcostParam);
}
// }
if (_simulationElementParameters.containsKey(callActivity.getId())) {
_simulationElementParameters.get(callActivity.getId()).add(costParameters);
} else {
List<EObject> values = new ArrayList<EObject>();
values.add(costParameters);
_simulationElementParameters.put(callActivity.getId(), values);
}
}
use of org.eclipse.bpmn2.Assignment in project kie-wb-common by kiegroup.
the class Bpmn2JsonUnmarshaller method applyUserTaskProperties.
protected void applyUserTaskProperties(UserTask task, Map<String, String> properties) {
setLastUserTaskID(task);
if (properties.get("actors") != null && properties.get("actors").length() > 0) {
String[] allActors = properties.get("actors").split(",\\s*");
for (String actor : allActors) {
PotentialOwner po = Bpmn2Factory.eINSTANCE.createPotentialOwner();
ResourceAssignmentExpression rae = Bpmn2Factory.eINSTANCE.createResourceAssignmentExpression();
FormalExpression fe = Bpmn2Factory.eINSTANCE.createFormalExpression();
fe.setBody(actor);
rae.setExpression(fe);
po.setResourceAssignmentExpression(rae);
task.getResources().add(po);
}
}
if (properties.get("script_language") != null && properties.get("script_language").length() > 0) {
String scriptLanguage = getScriptLanguageFormat(properties);
ExtendedMetaData metadata = ExtendedMetaData.INSTANCE;
EAttributeImpl scriptLanguageElement = (EAttributeImpl) metadata.demandFeature("http://www.jboss.org/drools", "scriptFormat", false, false);
SimpleFeatureMapEntry extensionEntry = new SimpleFeatureMapEntry(scriptLanguageElement, scriptLanguage);
task.getAnyAttribute().add(extensionEntry);
}
if (properties.get("groupid") != null && properties.get("groupid").length() > 0) {
if (task.getIoSpecification() == null) {
InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
task.setIoSpecification(iospec);
}
List<DataInput> dataInputs = task.getIoSpecification().getDataInputs();
boolean foundGroupIdInput = false;
DataInput foundInput = null;
for (DataInput din : dataInputs) {
if (din.getName().equals("GroupId")) {
foundGroupIdInput = true;
foundInput = din;
break;
}
}
if (!foundGroupIdInput) {
DataInput d = Bpmn2Factory.eINSTANCE.createDataInput();
d.setId(task.getId() + "_" + "GroupId" + "InputX");
d.setName("GroupId");
task.getIoSpecification().getDataInputs().add(d);
foundInput = d;
if (task.getIoSpecification().getInputSets() == null || task.getIoSpecification().getInputSets().size() < 1) {
InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
task.getIoSpecification().getInputSets().add(inset);
}
task.getIoSpecification().getInputSets().get(0).getDataInputRefs().add(d);
}
boolean foundGroupIdAssociation = false;
List<DataInputAssociation> inputAssociations = task.getDataInputAssociations();
for (DataInputAssociation da : inputAssociations) {
if (da.getTargetRef() != null && da.getTargetRef().getId().equals(foundInput.getId())) {
foundGroupIdAssociation = true;
((FormalExpression) da.getAssignment().get(0).getFrom()).setBody(wrapInCDATABlock(properties.get("groupid")));
}
}
if (!foundGroupIdAssociation) {
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
dia.setTargetRef(foundInput);
Assignment a = Bpmn2Factory.eINSTANCE.createAssignment();
FormalExpression groupFromExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
groupFromExpression.setBody(wrapInCDATABlock(properties.get("groupid")));
FormalExpression groupToExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
groupToExpression.setBody(foundInput.getId());
a.setFrom(groupFromExpression);
a.setTo(groupToExpression);
dia.getAssignment().add(a);
task.getDataInputAssociations().add(dia);
}
}
// default to true if not set
String skippableStr = (properties.get("skippable") == null ? "true" : properties.get("skippable"));
if (skippableStr.length() > 0) {
if (task.getIoSpecification() == null) {
InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
task.setIoSpecification(iospec);
}
List<DataInput> dataInputs = task.getIoSpecification().getDataInputs();
boolean foundSkippableInput = false;
DataInput foundInput = null;
for (DataInput din : dataInputs) {
if (din.getName().equals("Skippable")) {
foundSkippableInput = true;
foundInput = din;
break;
}
}
if (!foundSkippableInput) {
DataInput d = Bpmn2Factory.eINSTANCE.createDataInput();
d.setId(task.getId() + "_" + "Skippable" + "InputX");
d.setName("Skippable");
task.getIoSpecification().getDataInputs().add(d);
foundInput = d;
if (task.getIoSpecification().getInputSets() == null || task.getIoSpecification().getInputSets().size() < 1) {
InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
task.getIoSpecification().getInputSets().add(inset);
}
task.getIoSpecification().getInputSets().get(0).getDataInputRefs().add(d);
}
boolean foundSkippableAssociation = false;
List<DataInputAssociation> inputAssociations = task.getDataInputAssociations();
for (DataInputAssociation da : inputAssociations) {
if (da.getTargetRef() != null && da.getTargetRef().getId().equals(foundInput.getId())) {
foundSkippableAssociation = true;
((FormalExpression) da.getAssignment().get(0).getFrom()).setBody(skippableStr);
}
}
if (!foundSkippableAssociation) {
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
dia.setTargetRef(foundInput);
Assignment a = Bpmn2Factory.eINSTANCE.createAssignment();
FormalExpression skippableFromExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
skippableFromExpression.setBody(skippableStr);
FormalExpression skippableToExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
skippableToExpression.setBody(foundInput.getId());
a.setFrom(skippableFromExpression);
a.setTo(skippableToExpression);
dia.getAssignment().add(a);
task.getDataInputAssociations().add(dia);
}
}
if (properties.get("subject") != null && properties.get("subject").length() > 0) {
if (task.getIoSpecification() == null) {
InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
task.setIoSpecification(iospec);
}
List<DataInput> dataInputs = task.getIoSpecification().getDataInputs();
boolean foundCommentInput = false;
DataInput foundInput = null;
for (DataInput din : dataInputs) {
if (din.getName().equals("Comment")) {
foundCommentInput = true;
foundInput = din;
break;
}
}
if (!foundCommentInput) {
DataInput d = Bpmn2Factory.eINSTANCE.createDataInput();
d.setId(task.getId() + "_" + "Comment" + "InputX");
d.setName("Comment");
task.getIoSpecification().getDataInputs().add(d);
foundInput = d;
if (task.getIoSpecification().getInputSets() == null || task.getIoSpecification().getInputSets().size() < 1) {
InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
task.getIoSpecification().getInputSets().add(inset);
}
task.getIoSpecification().getInputSets().get(0).getDataInputRefs().add(d);
}
boolean foundCommentAssociation = false;
List<DataInputAssociation> inputAssociations = task.getDataInputAssociations();
for (DataInputAssociation da : inputAssociations) {
if (da.getTargetRef() != null && da.getTargetRef().getId().equals(foundInput.getId())) {
foundCommentAssociation = true;
((FormalExpression) da.getAssignment().get(0).getFrom()).setBody(wrapInCDATABlock(properties.get("subject")));
}
}
if (!foundCommentAssociation) {
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
dia.setTargetRef(foundInput);
Assignment a = Bpmn2Factory.eINSTANCE.createAssignment();
FormalExpression commentFromExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
commentFromExpression.setBody(wrapInCDATABlock(properties.get("subject")));
FormalExpression commentToExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
commentToExpression.setBody(foundInput.getId());
a.setFrom(commentFromExpression);
a.setTo(commentToExpression);
dia.getAssignment().add(a);
task.getDataInputAssociations().add(dia);
}
}
if (properties.get("description") != null && properties.get("description").length() > 0) {
if (task.getIoSpecification() == null) {
InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
task.setIoSpecification(iospec);
}
List<DataInput> dataInputs = task.getIoSpecification().getDataInputs();
boolean foundDescriptionInput = false;
DataInput foundInput = null;
for (DataInput din : dataInputs) {
if (din.getName().equals("Description")) {
foundDescriptionInput = true;
foundInput = din;
break;
}
}
if (!foundDescriptionInput) {
DataInput d = Bpmn2Factory.eINSTANCE.createDataInput();
d.setId(task.getId() + "_" + "Description" + "InputX");
d.setName("Description");
task.getIoSpecification().getDataInputs().add(d);
foundInput = d;
if (task.getIoSpecification().getInputSets() == null || task.getIoSpecification().getInputSets().size() < 1) {
InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
task.getIoSpecification().getInputSets().add(inset);
}
task.getIoSpecification().getInputSets().get(0).getDataInputRefs().add(d);
}
boolean foundDescriptionAssociation = false;
List<DataInputAssociation> inputAssociations = task.getDataInputAssociations();
for (DataInputAssociation da : inputAssociations) {
if (da.getTargetRef() != null && da.getTargetRef().getId().equals(foundInput.getId())) {
foundDescriptionAssociation = true;
((FormalExpression) da.getAssignment().get(0).getFrom()).setBody(wrapInCDATABlock(properties.get("description")));
}
}
if (!foundDescriptionAssociation) {
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
dia.setTargetRef(foundInput);
Assignment a = Bpmn2Factory.eINSTANCE.createAssignment();
FormalExpression descriptionFromExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
descriptionFromExpression.setBody(wrapInCDATABlock(properties.get("description")));
FormalExpression descriptionToExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
descriptionToExpression.setBody(foundInput.getId());
a.setFrom(descriptionFromExpression);
a.setTo(descriptionToExpression);
dia.getAssignment().add(a);
task.getDataInputAssociations().add(dia);
}
}
if (properties.get("priority") != null && properties.get("priority").length() > 0) {
if (task.getIoSpecification() == null) {
InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
task.setIoSpecification(iospec);
}
List<DataInput> dataInputs = task.getIoSpecification().getDataInputs();
boolean foundPriorityInput = false;
DataInput foundInput = null;
for (DataInput din : dataInputs) {
if (din.getName().equals("Priority")) {
foundPriorityInput = true;
foundInput = din;
break;
}
}
if (!foundPriorityInput) {
DataInput d = Bpmn2Factory.eINSTANCE.createDataInput();
d.setId(task.getId() + "_" + "Priority" + "InputX");
d.setName("Priority");
task.getIoSpecification().getDataInputs().add(d);
foundInput = d;
if (task.getIoSpecification().getInputSets() == null || task.getIoSpecification().getInputSets().size() < 1) {
InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
task.getIoSpecification().getInputSets().add(inset);
}
task.getIoSpecification().getInputSets().get(0).getDataInputRefs().add(d);
}
boolean foundPriorityAssociation = false;
List<DataInputAssociation> inputAssociations = task.getDataInputAssociations();
for (DataInputAssociation da : inputAssociations) {
if (da.getTargetRef() != null && da.getTargetRef().getId().equals(foundInput.getId())) {
foundPriorityAssociation = true;
((FormalExpression) da.getAssignment().get(0).getFrom()).setBody(properties.get("priority"));
}
}
if (!foundPriorityAssociation) {
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
dia.setTargetRef(foundInput);
Assignment a = Bpmn2Factory.eINSTANCE.createAssignment();
FormalExpression priorityFromExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
priorityFromExpression.setBody(properties.get("priority"));
FormalExpression priorityToExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
priorityToExpression.setBody(foundInput.getId());
a.setFrom(priorityFromExpression);
a.setTo(priorityToExpression);
dia.getAssignment().add(a);
task.getDataInputAssociations().add(dia);
}
}
if (properties.get("content") != null && properties.get("content").length() > 0) {
if (task.getIoSpecification() == null) {
InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
OutputSet outSet = Bpmn2Factory.eINSTANCE.createOutputSet();
iospec.getOutputSets().add(outSet);
task.setIoSpecification(iospec);
}
List<DataInput> dataInputs = task.getIoSpecification().getDataInputs();
boolean foundContentInput = false;
DataInput foundInput = null;
for (DataInput din : dataInputs) {
if (din.getName().equals("Content")) {
foundContentInput = true;
foundInput = din;
break;
}
}
if (!foundContentInput) {
DataInput d = Bpmn2Factory.eINSTANCE.createDataInput();
d.setId(task.getId() + "_" + "Content" + "InputX");
d.setName("Content");
task.getIoSpecification().getDataInputs().add(d);
foundInput = d;
if (task.getIoSpecification().getInputSets() == null || task.getIoSpecification().getInputSets().size() < 1) {
InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
task.getIoSpecification().getInputSets().add(inset);
}
task.getIoSpecification().getInputSets().get(0).getDataInputRefs().add(d);
}
boolean foundContentAssociation = false;
List<DataInputAssociation> inputAssociations = task.getDataInputAssociations();
for (DataInputAssociation da : inputAssociations) {
if (da.getTargetRef() != null && da.getTargetRef().getId().equals(foundInput.getId())) {
foundContentAssociation = true;
((FormalExpression) da.getAssignment().get(0).getFrom()).setBody(wrapInCDATABlock(properties.get("content")));
}
}
if (!foundContentAssociation) {
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
dia.setTargetRef(foundInput);
Assignment a = Bpmn2Factory.eINSTANCE.createAssignment();
FormalExpression contentFromExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
contentFromExpression.setBody(wrapInCDATABlock(properties.get("content")));
FormalExpression contentToExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
contentToExpression.setBody(foundInput.getId());
a.setFrom(contentFromExpression);
a.setTo(contentToExpression);
dia.getAssignment().add(a);
task.getDataInputAssociations().add(dia);
}
}
if (properties.get("locale") != null && properties.get("locale").length() > 0) {
if (task.getIoSpecification() == null) {
InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
task.setIoSpecification(iospec);
}
List<DataInput> dataInputs = task.getIoSpecification().getDataInputs();
boolean foundLocaleInput = false;
DataInput foundInput = null;
for (DataInput din : dataInputs) {
if (din.getName().equals("Locale")) {
foundLocaleInput = true;
foundInput = din;
break;
}
}
if (!foundLocaleInput) {
DataInput d = Bpmn2Factory.eINSTANCE.createDataInput();
d.setId(task.getId() + "_" + "Locale" + "InputX");
d.setName("Locale");
task.getIoSpecification().getDataInputs().add(d);
foundInput = d;
if (task.getIoSpecification().getInputSets() == null || task.getIoSpecification().getInputSets().size() < 1) {
InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
task.getIoSpecification().getInputSets().add(inset);
}
task.getIoSpecification().getInputSets().get(0).getDataInputRefs().add(d);
}
boolean foundLocaleAssociation = false;
List<DataInputAssociation> inputAssociations = task.getDataInputAssociations();
for (DataInputAssociation da : inputAssociations) {
if (da.getTargetRef() != null && da.getTargetRef().getId().equals(foundInput.getId())) {
foundLocaleAssociation = true;
((FormalExpression) da.getAssignment().get(0).getFrom()).setBody(wrapInCDATABlock(properties.get("locale")));
}
}
if (!foundLocaleAssociation) {
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
dia.setTargetRef(foundInput);
Assignment a = Bpmn2Factory.eINSTANCE.createAssignment();
FormalExpression localeFromExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
localeFromExpression.setBody(wrapInCDATABlock(properties.get("locale")));
FormalExpression localeToExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
localeToExpression.setBody(foundInput.getId());
a.setFrom(localeFromExpression);
a.setTo(localeToExpression);
dia.getAssignment().add(a);
task.getDataInputAssociations().add(dia);
}
}
if (properties.get("createdby") != null && properties.get("createdby").length() > 0) {
if (task.getIoSpecification() == null) {
InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
task.setIoSpecification(iospec);
}
List<DataInput> dataInputs = task.getIoSpecification().getDataInputs();
boolean foundCreatedByInput = false;
DataInput foundInput = null;
for (DataInput din : dataInputs) {
if (din.getName().equals("CreatedBy")) {
foundCreatedByInput = true;
foundInput = din;
break;
}
}
if (!foundCreatedByInput) {
DataInput d = Bpmn2Factory.eINSTANCE.createDataInput();
d.setId(task.getId() + "_" + "CreatedBy" + "InputX");
d.setName("CreatedBy");
task.getIoSpecification().getDataInputs().add(d);
foundInput = d;
if (task.getIoSpecification().getInputSets() == null || task.getIoSpecification().getInputSets().size() < 1) {
InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
task.getIoSpecification().getInputSets().add(inset);
}
task.getIoSpecification().getInputSets().get(0).getDataInputRefs().add(d);
}
boolean foundCreatedByAssociation = false;
List<DataInputAssociation> inputAssociations = task.getDataInputAssociations();
for (DataInputAssociation da : inputAssociations) {
if (da.getTargetRef() != null && da.getTargetRef().getId().equals(foundInput.getId())) {
foundCreatedByAssociation = true;
((FormalExpression) da.getAssignment().get(0).getFrom()).setBody(wrapInCDATABlock(properties.get("createdby")));
}
}
if (!foundCreatedByAssociation) {
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
dia.setTargetRef(foundInput);
Assignment a = Bpmn2Factory.eINSTANCE.createAssignment();
FormalExpression createdByFromExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
createdByFromExpression.setBody(wrapInCDATABlock(properties.get("createdby")));
FormalExpression createdByToExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
createdByToExpression.setBody(foundInput.getId());
a.setFrom(createdByFromExpression);
a.setTo(createdByToExpression);
dia.getAssignment().add(a);
task.getDataInputAssociations().add(dia);
}
}
// reassignments
if (properties.get("reassignment") != null && properties.get("reassignment").length() > 0) {
if (task.getIoSpecification() == null) {
InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
task.setIoSpecification(iospec);
}
List<DataInput> dataInputs = task.getIoSpecification().getDataInputs();
boolean foundNotCompletedReassignmentsInput = false;
boolean foundNotStartedReassignmentsInput = false;
DataInput foundNotCompletedDataInput = null;
DataInput foundNotStartedDataInput = null;
for (DataInput din : dataInputs) {
if (din.getName().equals("NotCompletedReassign")) {
foundNotCompletedReassignmentsInput = true;
foundNotCompletedDataInput = din;
}
if (din.getName().equals("NotStartedReassign")) {
foundNotStartedReassignmentsInput = true;
foundNotStartedDataInput = din;
}
}
if (!foundNotCompletedReassignmentsInput) {
DataInput d = Bpmn2Factory.eINSTANCE.createDataInput();
d.setId(task.getId() + "_" + "NotCompletedReassign" + "InputX");
d.setName("NotCompletedReassign");
task.getIoSpecification().getDataInputs().add(d);
foundNotCompletedDataInput = d;
if (task.getIoSpecification().getInputSets() == null || task.getIoSpecification().getInputSets().size() < 1) {
InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
task.getIoSpecification().getInputSets().add(inset);
}
task.getIoSpecification().getInputSets().get(0).getDataInputRefs().add(d);
}
if (!foundNotStartedReassignmentsInput) {
DataInput d = Bpmn2Factory.eINSTANCE.createDataInput();
d.setId(task.getId() + "_" + "NotStartedReassign" + "InputX");
d.setName("NotStartedReassign");
task.getIoSpecification().getDataInputs().add(d);
foundNotStartedDataInput = d;
if (task.getIoSpecification().getInputSets() == null || task.getIoSpecification().getInputSets().size() < 1) {
InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
task.getIoSpecification().getInputSets().add(inset);
}
task.getIoSpecification().getInputSets().get(0).getDataInputRefs().add(d);
}
boolean foundNotCompletedReassignmentAssociation = false;
boolean foundNotStartedReassignmentAssociation = false;
List<DataInputAssociation> inputAssociations = task.getDataInputAssociations();
for (DataInputAssociation da : inputAssociations) {
if (da.getTargetRef() != null && da.getTargetRef().getId().equals(foundNotCompletedDataInput.getId())) {
foundNotCompletedReassignmentAssociation = true;
((FormalExpression) da.getAssignment().get(0).getFrom()).setBody(getReassignmentsAndNotificationsForType(properties.get("reassignment"), "not-completed"));
}
if (da.getTargetRef() != null && da.getTargetRef().getId().equals(foundNotStartedDataInput.getId())) {
foundNotStartedReassignmentAssociation = true;
((FormalExpression) da.getAssignment().get(0).getFrom()).setBody(getReassignmentsAndNotificationsForType(properties.get("reassignment"), "not-started"));
}
}
if (!foundNotCompletedReassignmentAssociation) {
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
dia.setTargetRef(foundNotCompletedDataInput);
Assignment a = Bpmn2Factory.eINSTANCE.createAssignment();
FormalExpression notCompletedFromExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
notCompletedFromExpression.setBody(getReassignmentsAndNotificationsForType(properties.get("reassignment"), "not-completed"));
FormalExpression notCompletedToExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
notCompletedToExpression.setBody(foundNotCompletedDataInput.getId());
a.setFrom(notCompletedFromExpression);
a.setTo(notCompletedToExpression);
dia.getAssignment().add(a);
task.getDataInputAssociations().add(dia);
}
if (!foundNotStartedReassignmentAssociation) {
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
dia.setTargetRef(foundNotStartedDataInput);
Assignment a = Bpmn2Factory.eINSTANCE.createAssignment();
FormalExpression notStartedFromExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
notStartedFromExpression.setBody(getReassignmentsAndNotificationsForType(properties.get("reassignment"), "not-started"));
FormalExpression notStartedToExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
notStartedToExpression.setBody(foundNotStartedDataInput.getId());
a.setFrom(notStartedFromExpression);
a.setTo(notStartedToExpression);
dia.getAssignment().add(a);
task.getDataInputAssociations().add(dia);
}
}
// start notifications
if (properties.get("notifications") != null && properties.get("notifications").length() > 0) {
if (task.getIoSpecification() == null) {
InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
task.setIoSpecification(iospec);
}
List<DataInput> dataInputs = task.getIoSpecification().getDataInputs();
boolean foundNotCompletedNotificationsInput = false;
boolean foundNotStartedNotificationsInput = false;
DataInput foundNotCompletedDataInput = null;
DataInput foundNotStartedDataInput = null;
for (DataInput din : dataInputs) {
if (din.getName().equals("NotCompletedNotify")) {
foundNotCompletedNotificationsInput = true;
foundNotCompletedDataInput = din;
}
if (din.getName().equals("NotStartedNotify")) {
foundNotStartedNotificationsInput = true;
foundNotStartedDataInput = din;
}
}
if (!foundNotCompletedNotificationsInput) {
DataInput d = Bpmn2Factory.eINSTANCE.createDataInput();
d.setId(task.getId() + "_" + "NotCompletedNotify" + "InputX");
d.setName("NotCompletedNotify");
task.getIoSpecification().getDataInputs().add(d);
foundNotCompletedDataInput = d;
if (task.getIoSpecification().getInputSets() == null || task.getIoSpecification().getInputSets().size() < 1) {
InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
task.getIoSpecification().getInputSets().add(inset);
}
task.getIoSpecification().getInputSets().get(0).getDataInputRefs().add(d);
}
if (!foundNotStartedNotificationsInput) {
DataInput d = Bpmn2Factory.eINSTANCE.createDataInput();
d.setId(task.getId() + "_" + "NotStartedNotify" + "InputX");
d.setName("NotStartedNotify");
task.getIoSpecification().getDataInputs().add(d);
foundNotStartedDataInput = d;
if (task.getIoSpecification().getInputSets() == null || task.getIoSpecification().getInputSets().size() < 1) {
InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
task.getIoSpecification().getInputSets().add(inset);
}
task.getIoSpecification().getInputSets().get(0).getDataInputRefs().add(d);
}
boolean foundNotCompletedNotificationAssociation = false;
boolean foundNotStartedNotificationAssociation = false;
List<DataInputAssociation> inputAssociations = task.getDataInputAssociations();
for (DataInputAssociation da : inputAssociations) {
if (da.getTargetRef() != null && da.getTargetRef().getId().equals(foundNotCompletedDataInput.getId())) {
foundNotCompletedNotificationAssociation = true;
((FormalExpression) da.getAssignment().get(0).getFrom()).setBody(getReassignmentsAndNotificationsForType(properties.get("notifications"), "not-completed"));
}
if (da.getTargetRef() != null && da.getTargetRef().getId().equals(foundNotStartedDataInput.getId())) {
foundNotStartedNotificationAssociation = true;
((FormalExpression) da.getAssignment().get(0).getFrom()).setBody(getReassignmentsAndNotificationsForType(properties.get("notifications"), "not-started"));
}
}
if (!foundNotCompletedNotificationAssociation) {
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
dia.setTargetRef(foundNotCompletedDataInput);
Assignment a = Bpmn2Factory.eINSTANCE.createAssignment();
FormalExpression notCompletedFromExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
notCompletedFromExpression.setBody(getReassignmentsAndNotificationsForType(properties.get("notifications"), "not-completed"));
FormalExpression notCompletedToExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
notCompletedToExpression.setBody(foundNotCompletedDataInput.getId());
a.setFrom(notCompletedFromExpression);
a.setTo(notCompletedToExpression);
dia.getAssignment().add(a);
task.getDataInputAssociations().add(dia);
}
if (!foundNotStartedNotificationAssociation) {
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
dia.setTargetRef(foundNotStartedDataInput);
Assignment a = Bpmn2Factory.eINSTANCE.createAssignment();
FormalExpression notStartedFromExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
notStartedFromExpression.setBody(getReassignmentsAndNotificationsForType(properties.get("notifications"), "not-started"));
FormalExpression notStartedToExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
notStartedToExpression.setBody(foundNotStartedDataInput.getId());
a.setFrom(notStartedFromExpression);
a.setTo(notStartedToExpression);
dia.getAssignment().add(a);
task.getDataInputAssociations().add(dia);
}
}
// revisit data assignments
if (task.getDataInputAssociations() != null) {
List<DataInputAssociation> dataInputAssociations = task.getDataInputAssociations();
List<DataInputAssociation> incompleteAssociations = new ArrayList<DataInputAssociation>();
for (DataInputAssociation dia : dataInputAssociations) {
DataInput targetInput = (DataInput) dia.getTargetRef();
if (targetInput != null && targetInput.getName() != null) {
if (targetInput.getName().equals("GroupId") && (properties.get("groupid") == null || properties.get("groupid").length() == 0)) {
incompleteAssociations.add(dia);
} else if (targetInput.getName().equalsIgnoreCase("Skippable") && (skippableStr == null || skippableStr.length() == 0)) {
incompleteAssociations.add(dia);
} else if (targetInput.getName().equalsIgnoreCase("Comment") && (properties.get("subject") == null || properties.get("subject").length() == 0)) {
incompleteAssociations.add(dia);
} else if (targetInput.getName().equalsIgnoreCase("Description") && (properties.get("description") == null || properties.get("description").length() == 0)) {
incompleteAssociations.add(dia);
} else if (targetInput.getName().equalsIgnoreCase("Priority") && (properties.get("priority") == null || properties.get("priority").length() == 0)) {
incompleteAssociations.add(dia);
} else if (targetInput.getName().equalsIgnoreCase("Content") && (properties.get("content") == null || properties.get("content").length() == 0)) {
incompleteAssociations.add(dia);
} else if (targetInput.getName().equalsIgnoreCase("Locale") && (properties.get("locale") == null || properties.get("locale").length() == 0)) {
incompleteAssociations.add(dia);
} else if (targetInput.getName().equalsIgnoreCase("CreatedBy") && (properties.get("createdby") == null || properties.get("createdby").length() == 0)) {
incompleteAssociations.add(dia);
} else if (targetInput.getName().equalsIgnoreCase("NotCompletedReassign") && (properties.get("reassignment") == null || properties.get("reassignment").length() == 0)) {
incompleteAssociations.add(dia);
} else if (targetInput.getName().equalsIgnoreCase("NotStartedReassign") && (properties.get("reassignment") == null || properties.get("reassignment").length() == 0)) {
incompleteAssociations.add(dia);
} else if (targetInput.getName().equalsIgnoreCase("NotCompletedNotify") && (properties.get("notifications") == null || properties.get("notifications").length() == 0)) {
incompleteAssociations.add(dia);
} else if (targetInput.getName().equalsIgnoreCase("NotStartedNotify") && (properties.get("notifications") == null || properties.get("notifications").length() == 0)) {
incompleteAssociations.add(dia);
}
}
}
for (DataInputAssociation tr : incompleteAssociations) {
if (task.getDataInputAssociations() != null) {
task.getDataInputAssociations().remove(tr);
}
}
}
List<DataInput> toRemoveDataInputs = new ArrayList<DataInput>();
if (task.getIoSpecification() != null && task.getIoSpecification().getDataInputs() != null) {
List<DataInput> taskDataInputs = task.getIoSpecification().getDataInputs();
for (DataInput din : taskDataInputs) {
if (din.getName().equals("GroupId") && (properties.get("groupid") == null || properties.get("groupid").length() == 0)) {
toRemoveDataInputs.add(din);
} else if (din.getName().equalsIgnoreCase("Skippable") && (skippableStr == null || skippableStr.length() == 0)) {
toRemoveDataInputs.add(din);
} else if (din.getName().equalsIgnoreCase("Comment") && (properties.get("subject") == null || properties.get("subject").length() == 0)) {
toRemoveDataInputs.add(din);
} else if (din.getName().equalsIgnoreCase("Description") && (properties.get("description") == null || properties.get("description").length() == 0)) {
toRemoveDataInputs.add(din);
} else if (din.getName().equalsIgnoreCase("Priority") && (properties.get("priority") == null || properties.get("priority").length() == 0)) {
toRemoveDataInputs.add(din);
} else if (din.getName().equalsIgnoreCase("Content") && (properties.get("content") == null || properties.get("content").length() == 0)) {
toRemoveDataInputs.add(din);
} else if (din.getName().equalsIgnoreCase("Locale") && (properties.get("locale") == null || properties.get("locale").length() == 0)) {
toRemoveDataInputs.add(din);
} else if (din.getName().equalsIgnoreCase("CreatedBy") && (properties.get("createdby") == null || properties.get("createdby").length() == 0)) {
toRemoveDataInputs.add(din);
} else if (din.getName().equalsIgnoreCase("NotCompletedReassign") && (properties.get("reassignment") == null || properties.get("reassignment").length() == 0)) {
toRemoveDataInputs.add(din);
} else if (din.getName().equalsIgnoreCase("NotStartedReassign") && (properties.get("reassignment") == null || properties.get("reassignment").length() == 0)) {
toRemoveDataInputs.add(din);
} else if (din.getName().equalsIgnoreCase("NotCompletedNotify") && (properties.get("notifications") == null || properties.get("notifications").length() == 0)) {
toRemoveDataInputs.add(din);
} else if (din.getName().equalsIgnoreCase("NotStartedNotify") && (properties.get("notifications") == null || properties.get("notifications").length() == 0)) {
toRemoveDataInputs.add(din);
}
}
}
for (DataInput trdin : toRemoveDataInputs) {
if (task.getIoSpecification() != null && task.getIoSpecification().getDataInputs() != null) {
if (task.getIoSpecification().getInputSets().size() > 0) {
task.getIoSpecification().getInputSets().get(0).getDataInputRefs().remove(trdin);
}
}
task.getIoSpecification().getDataInputs().remove(trdin);
}
// simulation properties
ResourceParameters resourceParameters = BpsimFactory.eINSTANCE.createResourceParameters();
if (properties.get("quantity") != null && properties.get("quantity").length() > 0) {
Parameter quantityParam = BpsimFactory.eINSTANCE.createParameter();
FloatingParameterType quantityValueParam = BpsimFactory.eINSTANCE.createFloatingParameterType();
DecimalFormat twoDForm = new DecimalFormat("#.##");
quantityValueParam.setValue(Double.valueOf(twoDForm.format(Double.valueOf(properties.get("quantity")))));
quantityParam.getParameterValue().add(quantityValueParam);
resourceParameters.setQuantity(quantityParam);
}
if (properties.get("workinghours") != null && properties.get("workinghours").length() > 0) {
Parameter workingHoursParam = BpsimFactory.eINSTANCE.createParameter();
FloatingParameterType workingHoursValueParam = BpsimFactory.eINSTANCE.createFloatingParameterType();
DecimalFormat twoDForm = new DecimalFormat("#.##");
workingHoursValueParam.setValue(Double.valueOf(twoDForm.format(Double.valueOf(properties.get("workinghours")))));
workingHoursParam.getParameterValue().add(workingHoursValueParam);
resourceParameters.setAvailability(workingHoursParam);
}
if (_simulationElementParameters.containsKey(task.getId())) {
_simulationElementParameters.get(task.getId()).add(resourceParameters);
} else {
List<EObject> values = new ArrayList<EObject>();
values.add(resourceParameters);
_simulationElementParameters.put(task.getId(), values);
}
}
use of org.eclipse.bpmn2.Assignment in project kie-wb-common by kiegroup.
the class Bpmn2JsonUnmarshaller method applySubProcessProperties.
protected void applySubProcessProperties(SubProcess sp, Map<String, String> properties) {
if (properties.get("name") != null) {
sp.setName(StringEscapeUtils.escapeXml(properties.get("name")).replaceAll("\\r\\n|\\r|\\n", " "));
// add unescaped and untouched name value as extension element as well
Utils.setMetaDataExtensionValue(sp, "elementname", wrapInCDATABlock(properties.get("name").replaceAll("\\\\n", "\n")));
} else {
sp.setName("");
}
// process on-entry and on-exit actions as custom elements
applyOnEntryActions(sp, properties);
applyOnExitActions(sp, properties);
// isAsync metadata
if (properties.get("isasync") != null && properties.get("isasync").length() > 0 && properties.get("isasync").equals("true")) {
Utils.setMetaDataExtensionValue(sp, "customAsync", wrapInCDATABlock(properties.get("isasync")));
}
if (sp.getIoSpecification() == null) {
InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
sp.setIoSpecification(iospec);
}
parseAssignmentsInfo(properties);
// data input set
applyDataInputProperties(sp, properties, new HashMap<String, DataInput>());
// data output set
applyDataOutputProperties(sp, properties);
// assignments
if (properties.get("assignments") != null && properties.get("assignments").length() > 0 && sp.getIoSpecification() != null) {
String[] allAssignments = properties.get("assignments").split(",\\s*");
for (String assignment : allAssignments) {
if (assignment.contains("=")) {
String[] assignmentParts = assignment.split("=\\s*");
String fromPart = assignmentParts[0];
if (fromPart.startsWith("[din]")) {
fromPart = fromPart.substring(5, fromPart.length());
}
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
if (sp.getIoSpecification() != null && sp.getIoSpecification().getDataOutputs() != null) {
List<DataInput> dataInputs = sp.getIoSpecification().getDataInputs();
for (DataInput di : dataInputs) {
if (di.getId().equals(sp.getId() + "_" + fromPart + "InputX")) {
dia.setTargetRef(di);
if (di.getName().equals("TaskName")) {
break;
}
}
}
}
Assignment a = Bpmn2Factory.eINSTANCE.createAssignment();
FormalExpression fromExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
if (assignmentParts.length > 1) {
String replacer = decodeAssociationValue(assignmentParts[1]);
fromExpression.setBody(wrapInCDATABlock(replacer));
} else {
fromExpression.setBody("");
}
FormalExpression toExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
toExpression.setBody(dia.getTargetRef().getId());
a.setFrom(fromExpression);
a.setTo(toExpression);
dia.getAssignment().add(a);
sp.getDataInputAssociations().add(dia);
// } else if(assignment.contains("<->")) {
// String[] assignmentParts = assignment.split( "<->\\s*" );
// DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
// DataOutputAssociation doa = Bpmn2Factory.eINSTANCE.createDataOutputAssociation();
//
// ItemAwareElement ie = Bpmn2Factory.eINSTANCE.createItemAwareElement();
// ie.setId(assignmentParts[0]);
// dia.getSourceRef().add(ie);
// doa.setTargetRef(ie);
//
// List<DataInput> dataInputs = sp.getIoSpecification().getDataInputs();
// for(DataInput di : dataInputs) {
// if(di.getId().equals(sp.getId() + "_" + assignmentParts[1] + "InputX")) {
// dia.setTargetRef(di);
// break;
// }
// }
// List<DataOutput> dataOutputs = sp.getIoSpecification().getDataOutputs();
// for(DataOutput dout : dataOutputs) {
// if(dout.getId().equals(sp.getId() + "_" + assignmentParts[1] + "OutputX")) {
// doa.getSourceRef().add(dout);
// break;
// }
// }
//
// sp.getDataInputAssociations().add(dia);
// sp.getDataOutputAssociations().add(doa);
} else if (assignment.contains("->")) {
String[] assignmentParts = assignment.split("->\\s*");
String fromPart = assignmentParts[0];
boolean isDataInput = false;
boolean isDataOutput = false;
if (fromPart.startsWith("[din]")) {
fromPart = fromPart.substring(5, fromPart.length());
isDataInput = true;
}
if (fromPart.startsWith("[dout]")) {
fromPart = fromPart.substring(6, fromPart.length());
isDataOutput = true;
}
List<DataOutput> dataOutputs = sp.getIoSpecification().getDataOutputs();
if (isDataOutput) {
DataOutputAssociation doa = Bpmn2Factory.eINSTANCE.createDataOutputAssociation();
for (DataOutput dout : dataOutputs) {
if (dout.getId().equals(sp.getId() + "_" + fromPart + "OutputX")) {
doa.getSourceRef().add(dout);
break;
}
}
ItemAwareElement ie = Bpmn2Factory.eINSTANCE.createItemAwareElement();
ie.setId(assignmentParts[1]);
doa.setTargetRef(ie);
sp.getDataOutputAssociations().add(doa);
} else if (isDataInput) {
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
// association from process var to dataInput var
ItemAwareElement ie = Bpmn2Factory.eINSTANCE.createItemAwareElement();
ie.setId(fromPart);
dia.getSourceRef().add(ie);
List<DataInput> dataInputs = sp.getIoSpecification().getDataInputs();
for (DataInput di : dataInputs) {
if (di.getId().equals(sp.getId() + "_" + assignmentParts[1] + "InputX")) {
dia.setTargetRef(di);
break;
}
}
sp.getDataInputAssociations().add(dia);
}
} else {
// TODO throw exception here?
}
}
}
// loop characteristics input
if (properties.get("mitrigger") != null && properties.get("mitrigger").equals("true")) {
if (properties.get("multipleinstancecollectioninput") != null && properties.get("multipleinstancecollectioninput").length() > 0) {
String miDataInputStr = properties.get("multipleinstancedatainput");
if (miDataInputStr == null || miDataInputStr.length() < 1) {
miDataInputStr = "defaultDataInput";
}
if (sp.getIoSpecification() == null) {
InputOutputSpecification iospec = Bpmn2Factory.eINSTANCE.createInputOutputSpecification();
sp.setIoSpecification(iospec);
} else {
sp.getIoSpecification().getDataInputs().clear();
sp.getIoSpecification().getDataOutputs().clear();
sp.getDataInputAssociations().clear();
sp.getDataOutputAssociations().clear();
}
InputSet inset = sp.getIoSpecification().getInputSets().get(0);
DataInput multiInput = Bpmn2Factory.eINSTANCE.createDataInput();
multiInput.setId(sp.getId() + "_" + "input");
multiInput.setName(properties.get("multipleinstancecollectioninput"));
sp.getIoSpecification().getDataInputs().add(multiInput);
inset.getDataInputRefs().add(multiInput);
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
ItemAwareElement ie = Bpmn2Factory.eINSTANCE.createItemAwareElement();
ie.setId(properties.get("multipleinstancecollectioninput"));
dia.getSourceRef().add(ie);
dia.setTargetRef(multiInput);
sp.getDataInputAssociations().add(dia);
MultiInstanceLoopCharacteristics loopCharacteristics = Bpmn2Factory.eINSTANCE.createMultiInstanceLoopCharacteristics();
loopCharacteristics.setLoopDataInputRef(multiInput);
DataInput din = Bpmn2Factory.eINSTANCE.createDataInput();
din.setId(miDataInputStr);
ItemDefinition itemDef = Bpmn2Factory.eINSTANCE.createItemDefinition();
itemDef.setId(sp.getId() + "_" + "multiInstanceItemType");
din.setItemSubjectRef(itemDef);
_subprocessItemDefs.put(itemDef.getId(), itemDef);
loopCharacteristics.setInputDataItem(din);
// loop characteristics output
if (properties.get("multipleinstancecollectionoutput") != null && properties.get("multipleinstancecollectionoutput").length() > 0) {
String miDataOutputStr = properties.get("multipleinstancedataoutput");
if (miDataOutputStr == null || miDataOutputStr.length() < 1) {
miDataOutputStr = "defaultDataOutput";
}
OutputSet outset = sp.getIoSpecification().getOutputSets().get(0);
DataOutput multiOutput = Bpmn2Factory.eINSTANCE.createDataOutput();
multiOutput.setId(sp.getId() + "_" + "output");
multiOutput.setName(properties.get("multipleinstancecollectionoutput"));
sp.getIoSpecification().getDataOutputs().add(multiOutput);
outset.getDataOutputRefs().add(multiOutput);
DataOutputAssociation doa = Bpmn2Factory.eINSTANCE.createDataOutputAssociation();
ItemAwareElement ie2 = Bpmn2Factory.eINSTANCE.createItemAwareElement();
ie2.setId(properties.get("multipleinstancecollectionoutput"));
doa.getSourceRef().add(multiOutput);
doa.setTargetRef(ie2);
sp.getDataOutputAssociations().add(doa);
loopCharacteristics.setLoopDataOutputRef(multiOutput);
DataOutput don = Bpmn2Factory.eINSTANCE.createDataOutput();
don.setId(miDataOutputStr);
ItemDefinition itemDef2 = Bpmn2Factory.eINSTANCE.createItemDefinition();
itemDef2.setId(sp.getId() + "_" + "multiInstanceItemType");
don.setItemSubjectRef(itemDef2);
_subprocessItemDefs.put(itemDef2.getId(), itemDef2);
loopCharacteristics.setOutputDataItem(don);
}
// loop characteristics completion condition
if (properties.get("multipleinstancecompletioncondition") != null && !properties.get("multipleinstancecompletioncondition").isEmpty()) {
FormalExpression expr = Bpmn2Factory.eINSTANCE.createFormalExpression();
expr.setBody(properties.get("multipleinstancecompletioncondition"));
loopCharacteristics.setCompletionCondition(expr);
}
sp.setLoopCharacteristics(loopCharacteristics);
} else {
MultiInstanceLoopCharacteristics loopCharacteristics = Bpmn2Factory.eINSTANCE.createMultiInstanceLoopCharacteristics();
sp.setLoopCharacteristics(loopCharacteristics);
}
}
// properties
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);
sp.getProperties().add(prop);
_subprocessItemDefs.put(itemdef.getId(), itemdef);
}
}
// event subprocess
if (sp instanceof EventSubprocess) {
sp.setTriggeredByEvent(true);
}
// simulation
if (properties.get("distributiontype") != null && properties.get("distributiontype").length() > 0) {
TimeParameters timeParams = BpsimFactory.eINSTANCE.createTimeParameters();
Parameter processingTimeParam = BpsimFactory.eINSTANCE.createParameter();
if (properties.get("distributiontype").equals("normal")) {
NormalDistributionType normalDistributionType = BpsimFactory.eINSTANCE.createNormalDistributionType();
normalDistributionType.setStandardDeviation(Double.valueOf(properties.get("standarddeviation")));
normalDistributionType.setMean(Double.valueOf(properties.get("mean")));
processingTimeParam.getParameterValue().add(normalDistributionType);
} else if (properties.get("distributiontype").equals("uniform")) {
UniformDistributionType uniformDistributionType = BpsimFactory.eINSTANCE.createUniformDistributionType();
uniformDistributionType.setMax(Double.valueOf(properties.get("max")));
uniformDistributionType.setMin(Double.valueOf(properties.get("min")));
processingTimeParam.getParameterValue().add(uniformDistributionType);
// random distribution not supported in bpsim 1.0
// } else if(properties.get("distributiontype").equals("random")) {
// RandomDistributionType randomDistributionType = BpsimFactory.eINSTANCE.createRandomDistributionType();
// randomDistributionType.setMax(Double.valueOf(properties.get("max")));
// randomDistributionType.setMin(Double.valueOf(properties.get("min")));
// processingTimeParam.getParameterValue().add(randomDistributionType);
} else if (properties.get("distributiontype").equals("poisson")) {
PoissonDistributionType poissonDistributionType = BpsimFactory.eINSTANCE.createPoissonDistributionType();
poissonDistributionType.setMean(Double.valueOf(properties.get("mean")));
processingTimeParam.getParameterValue().add(poissonDistributionType);
}
// }
if (properties.get("waittime") != null) {
Parameter waittimeParam = BpsimFactory.eINSTANCE.createParameter();
FloatingParameterType waittimeParamValue = BpsimFactory.eINSTANCE.createFloatingParameterType();
DecimalFormat twoDForm = new DecimalFormat("#.##");
waittimeParamValue.setValue(Double.valueOf(twoDForm.format(Double.valueOf(properties.get("waittime")))));
waittimeParam.getParameterValue().add(waittimeParamValue);
timeParams.setWaitTime(waittimeParam);
}
timeParams.setProcessingTime(processingTimeParam);
if (_simulationElementParameters.containsKey(sp.getId())) {
_simulationElementParameters.get(sp.getId()).add(timeParams);
} else {
List<EObject> values = new ArrayList<EObject>();
values.add(timeParams);
_simulationElementParameters.put(sp.getId(), values);
}
}
CostParameters costParameters = BpsimFactory.eINSTANCE.createCostParameters();
if (properties.get("unitcost") != null && properties.get("unitcost").length() > 0) {
Parameter unitcostParam = BpsimFactory.eINSTANCE.createParameter();
FloatingParameterType unitCostParameterValue = BpsimFactory.eINSTANCE.createFloatingParameterType();
unitCostParameterValue.setValue(new Double(properties.get("unitcost")));
unitcostParam.getParameterValue().add(unitCostParameterValue);
costParameters.setUnitCost(unitcostParam);
}
// }
if (_simulationElementParameters.containsKey(sp.getId())) {
_simulationElementParameters.get(sp.getId()).add(costParameters);
} else {
List<EObject> values = new ArrayList<EObject>();
values.add(costParameters);
_simulationElementParameters.put(sp.getId(), values);
}
}
use of org.eclipse.bpmn2.Assignment in project kie-wb-common by kiegroup.
the class Bpmn2JsonUnmarshaller method applyThrowEventProperties.
protected void applyThrowEventProperties(ThrowEvent event, Map<String, String> properties) {
parseAssignmentsInfo(properties);
if (properties.get("datainput") != null && properties.get("datainput").trim().length() > 0) {
String[] allDataInputs = properties.get("datainput").split(",\\s*");
InputSet inset = Bpmn2Factory.eINSTANCE.createInputSet();
for (String dataInput : allDataInputs) {
if (dataInput.trim().length() > 0) {
DataInput nextInput = Bpmn2Factory.eINSTANCE.createDataInput();
String[] dataInputParts = dataInput.split(":\\s*");
if (dataInputParts.length == 2) {
nextInput.setId(event.getId() + "_" + dataInputParts[0] + (dataInputParts[0].endsWith("InputX") ? "" : "InputX"));
nextInput.setName(dataInputParts[0]);
ExtendedMetaData metadata = ExtendedMetaData.INSTANCE;
EAttributeImpl extensionAttribute = (EAttributeImpl) metadata.demandFeature("http://www.jboss.org/drools", "dtype", false, false);
SimpleFeatureMapEntry extensionEntry = new SimpleFeatureMapEntry(extensionAttribute, dataInputParts[1]);
nextInput.getAnyAttribute().add(extensionEntry);
} else {
nextInput.setId(event.getId() + "_" + dataInput + (dataInput.endsWith("InputX") ? "" : "InputX"));
nextInput.setName(dataInput);
ExtendedMetaData metadata = ExtendedMetaData.INSTANCE;
EAttributeImpl extensionAttribute = (EAttributeImpl) metadata.demandFeature("http://www.jboss.org/drools", "dtype", false, false);
SimpleFeatureMapEntry extensionEntry = new SimpleFeatureMapEntry(extensionAttribute, "Object");
nextInput.getAnyAttribute().add(extensionEntry);
}
event.getDataInputs().add(nextInput);
inset.getDataInputRefs().add(nextInput);
}
}
event.setInputSet(inset);
}
if (properties.get("datainputassociations") != null && properties.get("datainputassociations").length() > 0) {
String[] allAssignments = properties.get("datainputassociations").split(",\\s*");
for (String assignment : allAssignments) {
if (assignment.contains("=")) {
String[] assignmentParts = assignment.split("=\\s*");
String fromPart = assignmentParts[0];
if (fromPart.startsWith("[din]")) {
fromPart = fromPart.substring(5, fromPart.length());
}
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
if (event.getInputSet() != null) {
List<DataInput> dataInputs = event.getInputSet().getDataInputRefs();
for (DataInput di : dataInputs) {
if (di.getId().equals(event.getId() + "_" + fromPart + (fromPart.endsWith("InputX") ? "" : "InputX"))) {
dia.setTargetRef(di);
}
}
}
Assignment a = Bpmn2Factory.eINSTANCE.createAssignment();
FormalExpression fromExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
if (assignmentParts.length > 1) {
String replacer = decodeAssociationValue(assignmentParts[1]);
fromExpression.setBody(wrapInCDATABlock(replacer));
} else {
fromExpression.setBody("");
}
FormalExpression toExpression = Bpmn2Factory.eINSTANCE.createFormalExpression();
toExpression.setBody(dia.getTargetRef().getId());
a.setFrom(fromExpression);
a.setTo(toExpression);
dia.getAssignment().add(a);
event.getDataInputAssociation().add(dia);
} else if (assignment.contains("->")) {
String[] assignmentParts = assignment.split("->\\s*");
String fromPart = assignmentParts[0];
boolean isDataInput = false;
boolean isDataOutput = false;
if (fromPart.startsWith("[din]")) {
fromPart = fromPart.substring(5, fromPart.length());
isDataInput = true;
}
if (isDataInput) {
DataInputAssociation dia = Bpmn2Factory.eINSTANCE.createDataInputAssociation();
// association from process var to dataInput var
ItemAwareElement ie = Bpmn2Factory.eINSTANCE.createItemAwareElement();
ie.setId(fromPart);
dia.getSourceRef().add(ie);
List<DataInput> dataInputs = event.getInputSet().getDataInputRefs();
for (DataInput di : dataInputs) {
if (di.getId().equals(event.getId() + "_" + assignmentParts[1] + (assignmentParts[1].endsWith("InputX") ? "" : "InputX"))) {
dia.setTargetRef(di);
break;
}
}
event.getDataInputAssociation().add(dia);
}
} else {
// TODO throw exception here?
}
}
}
// signal scope metadata
if (properties.get("signalscope") != null && properties.get("signalscope").length() > 0 && !properties.get("signalscope").equals("default")) {
Utils.setMetaDataExtensionValue(event, "customScope", wrapInCDATABlock(properties.get("signalscope")));
}
try {
EventDefinition ed = event.getEventDefinitions().get(0);
if (ed instanceof TimerEventDefinition) {
applyTimerEventProperties((TimerEventDefinition) ed, properties);
} else if (ed instanceof SignalEventDefinition) {
if (properties.get("signalref") != null && !"".equals(properties.get("signalref"))) {
((SignalEventDefinition) ed).setSignalRef(properties.get("signalref"));
// ExtendedMetaData metadata = ExtendedMetaData.INSTANCE;
// EAttributeImpl extensionAttribute = (EAttributeImpl) metadata.demandFeature(
// "http://www.jboss.org/drools", "signalrefname", false, false);
// EStructuralFeatureImpl.SimpleFeatureMapEntry extensionEntry = new EStructuralFeatureImpl.SimpleFeatureMapEntry(extensionAttribute,
// properties.get("signalref"));
// ((SignalEventDefinition) event.getEventDefinitions().get(0)).getAnyAttribute().add(extensionEntry);
}
} else if (ed instanceof ErrorEventDefinition) {
if (properties.get("errorref") != null && !"".equals(properties.get("errorref"))) {
ExtendedMetaData metadata = ExtendedMetaData.INSTANCE;
EAttributeImpl extensionAttribute = (EAttributeImpl) metadata.demandFeature("http://www.jboss.org/drools", "erefname", false, false);
SimpleFeatureMapEntry extensionEntry = new SimpleFeatureMapEntry(extensionAttribute, properties.get("errorref"));
((ErrorEventDefinition) event.getEventDefinitions().get(0)).getAnyAttribute().add(extensionEntry);
}
} else if (ed instanceof ConditionalEventDefinition) {
applyConditionalEventProperties((ConditionalEventDefinition) ed, properties);
} else if (ed instanceof EscalationEventDefinition) {
if (properties.get("escalationcode") != null && !"".equals(properties.get("escalationcode"))) {
ExtendedMetaData metadata = ExtendedMetaData.INSTANCE;
EAttributeImpl extensionAttribute = (EAttributeImpl) metadata.demandFeature("http://www.jboss.org/drools", "esccode", false, false);
SimpleFeatureMapEntry extensionEntry = new SimpleFeatureMapEntry(extensionAttribute, properties.get("escalationcode"));
((EscalationEventDefinition) event.getEventDefinitions().get(0)).getAnyAttribute().add(extensionEntry);
}
} else if (ed instanceof MessageEventDefinition) {
if (properties.get("messageref") != null && !"".equals(properties.get("messageref"))) {
ExtendedMetaData metadata = ExtendedMetaData.INSTANCE;
EAttributeImpl extensionAttribute = (EAttributeImpl) metadata.demandFeature("http://www.jboss.org/drools", "msgref", false, false);
SimpleFeatureMapEntry extensionEntry = new SimpleFeatureMapEntry(extensionAttribute, properties.get("messageref"));
((MessageEventDefinition) event.getEventDefinitions().get(0)).getAnyAttribute().add(extensionEntry);
}
} else if (ed instanceof CompensateEventDefinition) {
if (properties.get("activityref") != null && !"".equals(properties.get("activityref"))) {
ExtendedMetaData metadata = ExtendedMetaData.INSTANCE;
EAttributeImpl extensionAttribute = (EAttributeImpl) metadata.demandFeature("http://www.jboss.org/drools", "actrefname", false, false);
SimpleFeatureMapEntry extensionEntry = new SimpleFeatureMapEntry(extensionAttribute, properties.get("activityref"));
((CompensateEventDefinition) event.getEventDefinitions().get(0)).getAnyAttribute().add(extensionEntry);
}
}
} catch (IndexOutOfBoundsException e) {
// TODO we dont want to barf here as test for example do not define event definitions in the bpmn2....
}
// simulation
if (properties.get("distributiontype") != null && properties.get("distributiontype").length() > 0) {
TimeParameters timeParams = BpsimFactory.eINSTANCE.createTimeParameters();
Parameter processingTimeParam = BpsimFactory.eINSTANCE.createParameter();
if (properties.get("distributiontype").equals("normal")) {
NormalDistributionType normalDistributionType = BpsimFactory.eINSTANCE.createNormalDistributionType();
normalDistributionType.setStandardDeviation(Double.valueOf(properties.get("standarddeviation")));
normalDistributionType.setMean(Double.valueOf(properties.get("mean")));
processingTimeParam.getParameterValue().add(normalDistributionType);
} else if (properties.get("distributiontype").equals("uniform")) {
UniformDistributionType uniformDistributionType = BpsimFactory.eINSTANCE.createUniformDistributionType();
uniformDistributionType.setMax(Double.valueOf(properties.get("max")));
uniformDistributionType.setMin(Double.valueOf(properties.get("min")));
processingTimeParam.getParameterValue().add(uniformDistributionType);
// random distribution type not supported in bpsim 1.0
// } else if(properties.get("distributiontype").equals("random")) {
// RandomDistributionType randomDistributionType = DroolsFactory.eINSTANCE.createRandomDistributionType();
// randomDistributionType.setMax(Double.valueOf(properties.get("max")));
// randomDistributionType.setMin(Double.valueOf(properties.get("min")));
// processingTimeParam.getParameterValue().add(randomDistributionType);
} else if (properties.get("distributiontype").equals("poisson")) {
PoissonDistributionType poissonDistributionType = BpsimFactory.eINSTANCE.createPoissonDistributionType();
poissonDistributionType.setMean(Double.valueOf(properties.get("mean")));
processingTimeParam.getParameterValue().add(poissonDistributionType);
}
// no specific time unit available in 1.0 bpsim - use global
// if(properties.get("timeunit") != null) {
// timeParams.setTimeUnit(TimeUnit.getByName(properties.get("timeunit")));
// }
timeParams.setProcessingTime(processingTimeParam);
if (_simulationElementParameters.containsKey(event.getId())) {
_simulationElementParameters.get(event.getId()).add(timeParams);
} else {
List<EObject> values = new ArrayList<EObject>();
values.add(timeParams);
_simulationElementParameters.put(event.getId(), values);
}
}
}
Aggregations