use of org.eclipse.bpmn2.Event in project kie-wb-common by kiegroup.
the class IntermediateCatchEventConverter method convertIntermediateCatchEvent.
public BpmnNode convertIntermediateCatchEvent(IntermediateCatchEvent event) {
CatchEventPropertyReader p = propertyReaderFactory.of(event);
List<EventDefinition> eventDefinitions = p.getEventDefinitions();
switch(eventDefinitions.size()) {
case 0:
throw new UnsupportedOperationException("An intermediate catch event should contain exactly one definition");
case 1:
return Match.of(EventDefinition.class, BpmnNode.class).when(TimerEventDefinition.class, e -> timerEvent(event, e)).when(SignalEventDefinition.class, e -> signalEvent(event, e)).when(MessageEventDefinition.class, e -> messageEvent(event, e)).when(ErrorEventDefinition.class, e -> errorEvent(event, e)).missing(EscalationEventDefinition.class).missing(CompensateEventDefinition.class).missing(ConditionalEventDefinition.class).apply(eventDefinitions.get(0)).value();
default:
throw new UnsupportedOperationException("Multiple definitions not supported for intermediate catch event");
}
}
use of org.eclipse.bpmn2.Event in project kie-wb-common by kiegroup.
the class Bpmn2JsonMarshaller method setCatchEventProperties.
private void setCatchEventProperties(CatchEvent event, Map<String, Object> properties, Definitions def) {
if (event.getOutputSet() != null) {
List<DataOutput> dataOutputs = event.getOutputSet().getDataOutputRefs();
StringBuffer doutbuff = new StringBuffer();
for (DataOutput dout : dataOutputs) {
doutbuff.append(dout.getName());
String dtype = getAnyAttributeValue(dout, "dtype");
if (dtype != null && !dtype.isEmpty()) {
doutbuff.append(":").append(dtype);
}
doutbuff.append(",");
}
if (doutbuff.length() > 0) {
doutbuff.setLength(doutbuff.length() - 1);
}
String dataoutput = doutbuff.toString();
properties.put(DATAOUTPUT, dataoutput);
List<DataOutputAssociation> outputAssociations = event.getDataOutputAssociation();
StringBuffer doutassociationbuff = new StringBuffer();
for (DataOutputAssociation doa : outputAssociations) {
String doaName = ((DataOutput) doa.getSourceRef().get(0)).getName();
if (doaName != null && doaName.length() > 0) {
doutassociationbuff.append("[dout]" + ((DataOutput) doa.getSourceRef().get(0)).getName());
doutassociationbuff.append("->");
doutassociationbuff.append(doa.getTargetRef().getId());
doutassociationbuff.append(",");
}
}
if (doutassociationbuff.length() > 0) {
doutassociationbuff.setLength(doutassociationbuff.length() - 1);
}
String assignments = doutassociationbuff.toString();
properties.put(DATAOUTPUTASSOCIATIONS, assignments);
setAssignmentsInfoProperty(null, null, dataoutput, null, assignments, properties);
}
// event definitions
List<EventDefinition> eventdefs = event.getEventDefinitions();
for (EventDefinition ed : eventdefs) {
if (ed instanceof TimerEventDefinition) {
setTimerEventProperties((TimerEventDefinition) ed, properties);
} else if (ed instanceof SignalEventDefinition) {
if (((SignalEventDefinition) ed).getSignalRef() != null) {
// find signal with the corresponding id
boolean foundSignalRef = false;
List<RootElement> rootElements = def.getRootElements();
for (RootElement re : rootElements) {
if (re instanceof Signal) {
if (re.getId().equals(((SignalEventDefinition) ed).getSignalRef())) {
properties.put("signalref", ((Signal) re).getName());
foundSignalRef = true;
}
}
}
if (!foundSignalRef) {
properties.put(SIGNALREF, "");
}
} else {
properties.put(SIGNALREF, "");
}
} else if (ed instanceof ErrorEventDefinition) {
if (((ErrorEventDefinition) ed).getErrorRef() != null && ((ErrorEventDefinition) ed).getErrorRef().getErrorCode() != null) {
properties.put(ERRORREF, ((ErrorEventDefinition) ed).getErrorRef().getErrorCode());
} else {
properties.put(ERRORREF, "");
}
} else if (ed instanceof ConditionalEventDefinition) {
FormalExpression conditionalExp = (FormalExpression) ((ConditionalEventDefinition) ed).getCondition();
if (conditionalExp != null) {
setConditionExpressionProperties(conditionalExp, properties, "drools");
}
} else if (ed instanceof EscalationEventDefinition) {
if (((EscalationEventDefinition) ed).getEscalationRef() != null) {
Escalation esc = ((EscalationEventDefinition) ed).getEscalationRef();
if (esc.getEscalationCode() != null && esc.getEscalationCode().length() > 0) {
properties.put(ESCALATIONCODE, esc.getEscalationCode());
} else {
properties.put(ESCALATIONCODE, "");
}
}
} else if (ed instanceof MessageEventDefinition) {
if (((MessageEventDefinition) ed).getMessageRef() != null) {
Message msg = ((MessageEventDefinition) ed).getMessageRef();
properties.put(MESSAGEREF, msg.getName());
}
} else if (ed instanceof CompensateEventDefinition) {
if (((CompensateEventDefinition) ed).getActivityRef() != null) {
Activity act = ((CompensateEventDefinition) ed).getActivityRef();
properties.put(ACTIVITYREF, act.getName());
}
}
}
}
use of org.eclipse.bpmn2.Event in project kie-wb-common by kiegroup.
the class Bpmn2JsonMarshaller method marshallBoundaryEvent.
protected void marshallBoundaryEvent(BoundaryEvent boundaryEvent, BPMNPlane plane, JsonGenerator generator, float xOffset, float yOffset, Map<String, Object> catchEventProperties) throws JsonGenerationException, IOException {
List<EventDefinition> eventDefinitions = boundaryEvent.getEventDefinitions();
if (boundaryEvent.isCancelActivity()) {
catchEventProperties.put(BOUNDARYCANCELACTIVITY, "true");
} else {
catchEventProperties.put(BOUNDARYCANCELACTIVITY, "false");
}
// simulation properties
setSimulationProperties(boundaryEvent.getId(), catchEventProperties);
if (eventDefinitions.size() == 1) {
EventDefinition eventDefinition = eventDefinitions.get(0);
if (eventDefinition instanceof SignalEventDefinition) {
marshallNode(boundaryEvent, catchEventProperties, "IntermediateSignalEventCatching", plane, generator, xOffset, yOffset);
} else if (eventDefinition instanceof EscalationEventDefinition) {
marshallNode(boundaryEvent, catchEventProperties, "IntermediateEscalationEvent", plane, generator, xOffset, yOffset);
} else if (eventDefinition instanceof ErrorEventDefinition) {
marshallNode(boundaryEvent, catchEventProperties, "IntermediateErrorEvent", plane, generator, xOffset, yOffset);
} else if (eventDefinition instanceof TimerEventDefinition) {
marshallNode(boundaryEvent, catchEventProperties, "IntermediateTimerEvent", plane, generator, xOffset, yOffset);
} else if (eventDefinition instanceof CompensateEventDefinition) {
marshallNode(boundaryEvent, catchEventProperties, "IntermediateCompensationEventCatching", plane, generator, xOffset, yOffset);
} else if (eventDefinition instanceof ConditionalEventDefinition) {
marshallNode(boundaryEvent, catchEventProperties, "IntermediateConditionalEvent", plane, generator, xOffset, yOffset);
} else if (eventDefinition instanceof MessageEventDefinition) {
marshallNode(boundaryEvent, catchEventProperties, "IntermediateMessageEventCatching", plane, generator, xOffset, yOffset);
} else {
throw new UnsupportedOperationException("Event definition not supported: " + eventDefinition);
}
} else {
throw new UnsupportedOperationException("None or multiple event definitions not supported for boundary event");
}
}
use of org.eclipse.bpmn2.Event in project kie-wb-common by kiegroup.
the class Bpmn2JsonUnmarshaller method applyEventProperties.
protected void applyEventProperties(Event event, Map<String, String> properties) {
if (properties.get("name") != null) {
event.setName(StringEscapeUtils.escapeXml(properties.get("name")).replaceAll("\\r\\n|\\r|\\n", " "));
// add unescaped and untouched name value as extension element as well
Utils.setMetaDataExtensionValue(event, "elementname", wrapInCDATABlock(properties.get("name").replaceAll("\\\\n", "\n")));
} else {
event.setName("");
}
if (properties.get("auditing") != null && !"".equals(properties.get("auditing"))) {
Auditing audit = Bpmn2Factory.eINSTANCE.createAuditing();
audit.getDocumentation().add(createDocumentation(properties.get("auditing")));
event.setAuditing(audit);
}
if (properties.get("monitoring") != null && !"".equals(properties.get("monitoring"))) {
Monitoring monitoring = Bpmn2Factory.eINSTANCE.createMonitoring();
monitoring.getDocumentation().add(createDocumentation(properties.get("monitoring")));
event.setMonitoring(monitoring);
}
}
use of org.eclipse.bpmn2.Event in project kie-wb-common by kiegroup.
the class Bpmn2JsonUnmarshaller method revisitSignalRef.
/**
* Updates the signal ref on catch and throw event definitions (including boundary)
* @param def Definitions
*/
public void revisitSignalRef(Definitions def) {
revisitSignalIds(def);
List<RootElement> rootElements = def.getRootElements();
for (RootElement root : rootElements) {
if (root instanceof Process) {
setSignalRefForCatchEvents((Process) root, def);
setSignalRefForThrowEvents((Process) root, def);
setSignalRefForBoundaryEvents((Process) root, def);
}
}
}
Aggregations