use of org.eclipse.bpmn2.EventDefinition 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.EventDefinition in project kie-wb-common by kiegroup.
the class Bpmn2JsonUnmarshaller method copyBoundaryEvent.
private BoundaryEvent copyBoundaryEvent(BoundaryEvent beEntry) {
EventDefinition ed = null;
if (beEntry.getEventDefinitions() != null && beEntry.getEventDefinitions().size() > 0) {
ed = beEntry.getEventDefinitions().get(0);
}
BoundaryEvent be = Bpmn2Factory.eINSTANCE.createBoundaryEvent();
if (ed instanceof ErrorEventDefinition) {
be.setCancelActivity(true);
} else {
Iterator<FeatureMap.Entry> iter = beEntry.getAnyAttribute().iterator();
while (iter.hasNext()) {
FeatureMap.Entry entry2 = iter.next();
if (entry2.getEStructuralFeature().getName().equals("boundaryca")) {
String boundaryceVal = (String) entry2.getValue();
be.setCancelActivity(Boolean.parseBoolean(boundaryceVal));
}
}
}
if (beEntry.getDataOutputs() != null) {
be.getDataOutputs().addAll(beEntry.getDataOutputs());
}
if (beEntry.getDataOutputAssociation() != null) {
be.getDataOutputAssociation().addAll(beEntry.getDataOutputAssociation());
}
if (beEntry.getOutputSet() != null) {
be.setOutputSet(beEntry.getOutputSet());
}
if (beEntry.getEventDefinitions() != null) {
be.getEventDefinitions().addAll(beEntry.getEventDefinitions());
}
if (beEntry.getEventDefinitionRefs() != null) {
be.getEventDefinitionRefs().addAll(beEntry.getEventDefinitionRefs());
}
if (beEntry.getProperties() != null) {
be.getProperties().addAll(beEntry.getProperties());
}
if (beEntry.getAnyAttribute() != null) {
be.getAnyAttribute().addAll(beEntry.getAnyAttribute());
}
if (beEntry.getOutgoing() != null) {
be.getOutgoing().addAll(beEntry.getOutgoing());
}
if (beEntry.getIncoming() != null) {
be.getIncoming().addAll(beEntry.getIncoming());
}
if (beEntry.getExtensionValues() != null) {
be.getExtensionValues().addAll(beEntry.getExtensionValues());
}
be.getDocumentation().addAll(beEntry.getDocumentation());
be.setName(beEntry.getName());
be.setId(beEntry.getId());
be.setAttachedToRef(beEntry.getAttachedToRef());
return be;
}
use of org.eclipse.bpmn2.EventDefinition in project kie-wb-common by kiegroup.
the class Bpmn2JsonUnmarshaller method setThrowEventsInfoForLanes.
public void setThrowEventsInfoForLanes(Lane lane, Definitions def, List<RootElement> rootElements, List<Signal> toAddSignals, Set<Error> toAddErrors, Set<Escalation> toAddEscalations, Set<Message> toAddMessages, Set<ItemDefinition> toAddItemDefinitions) {
List<FlowNode> laneFlowNodes = lane.getFlowNodeRefs();
for (FlowNode fe : laneFlowNodes) {
if (fe instanceof ThrowEvent) {
if (((ThrowEvent) fe).getEventDefinitions().size() > 0) {
EventDefinition ed = ((ThrowEvent) fe).getEventDefinitions().get(0);
if (ed instanceof SignalEventDefinition) {
SignalEventDefinition sed = (SignalEventDefinition) ed;
if (sed.getSignalRef() != null && sed.getSignalRef().length() > 0) {
String signalRef = sed.getSignalRef();
boolean shouldAddSignal = true;
for (RootElement re : rootElements) {
if (re instanceof Signal) {
if (((Signal) re).getName().equals(signalRef)) {
shouldAddSignal = false;
break;
}
}
}
if (toAddSignals != null) {
for (Signal s : toAddSignals) {
if (s.getName().equals(signalRef)) {
shouldAddSignal = false;
break;
}
}
}
if (shouldAddSignal) {
Signal signal = Bpmn2Factory.eINSTANCE.createSignal();
signal.setName(signalRef);
toAddSignals.add(signal);
}
}
} else if (ed instanceof ErrorEventDefinition) {
String errorCode = null;
String errorId = null;
Iterator<FeatureMap.Entry> iter = ed.getAnyAttribute().iterator();
while (iter.hasNext()) {
FeatureMap.Entry entry = iter.next();
if (entry.getEStructuralFeature().getName().equals("erefname")) {
errorId = (String) entry.getValue();
errorCode = (String) entry.getValue();
}
}
Error err = this._errors.get(errorCode);
if (err == null) {
err = Bpmn2Factory.eINSTANCE.createError();
err.setId(errorId);
err.setErrorCode(errorCode);
this._errors.put(errorCode, err);
}
toAddErrors.add(err);
((ErrorEventDefinition) ed).setErrorRef(err);
} else if (ed instanceof EscalationEventDefinition) {
String escalationCode = null;
Iterator<FeatureMap.Entry> iter = ed.getAnyAttribute().iterator();
while (iter.hasNext()) {
FeatureMap.Entry entry = iter.next();
if (entry.getEStructuralFeature().getName().equals("esccode")) {
escalationCode = (String) entry.getValue();
break;
}
}
Escalation escalation = this._escalations.get(escalationCode);
if (escalation == null) {
escalation = Bpmn2Factory.eINSTANCE.createEscalation();
escalation.setEscalationCode(escalationCode);
this._escalations.put(escalationCode, escalation);
}
toAddEscalations.add(escalation);
((EscalationEventDefinition) ed).setEscalationRef(escalation);
} else if (ed instanceof MessageEventDefinition) {
((MessageEventDefinition) ed).setMessageRef(extractMessage(ed, toAddMessages, toAddItemDefinitions));
} else if (ed instanceof CompensateEventDefinition) {
Iterator<FeatureMap.Entry> iter = ed.getAnyAttribute().iterator();
while (iter.hasNext()) {
FeatureMap.Entry entry = iter.next();
if (entry.getEStructuralFeature().getName().equals("actrefname")) {
String activityNameRef = (String) entry.getValue();
// we have to iterate again through all flow
// elements
// in order to find our activity name
List<RootElement> re = def.getRootElements();
for (RootElement r : re) {
if (r instanceof Process) {
Process p = (Process) r;
List<FlowElement> fes = p.getFlowElements();
for (FlowElement f : fes) {
if (f instanceof Activity && ((Activity) f).getName().equals(activityNameRef)) {
((CompensateEventDefinition) ed).setActivityRef((Activity) f);
((Activity) f).setIsForCompensation(true);
}
}
}
}
}
}
}
}
} else if (fe instanceof FlowElementsContainer) {
setThrowEventsInfo((FlowElementsContainer) fe, def, rootElements, toAddSignals, toAddErrors, toAddEscalations, toAddMessages, toAddItemDefinitions);
}
}
}
use of org.eclipse.bpmn2.EventDefinition in project kie-wb-common by kiegroup.
the class Bpmn2JsonUnmarshaller method revisitCatchEVentsConvertToBoundaryExecute.
private void revisitCatchEVentsConvertToBoundaryExecute(Process process, FlowElementsContainer subContainer, List<CatchEvent> catchEventsToRemove, Map<BoundaryEvent, List<String>> boundaryEventsToAdd) {
FlowElementsContainer container = subContainer != null ? subContainer : process;
List<FlowElement> flowElements = container.getFlowElements();
for (FlowElement fe : flowElements) {
if (fe instanceof CatchEvent) {
// check if we have an outgoing connection to this catch event from an activity
for (Entry<Object, List<String>> entry : _outgoingFlows.entrySet()) {
for (String flowId : entry.getValue()) {
if (entry.getKey() instanceof Activity && flowId.equals(fe.getId())) {
CatchEvent ce = (CatchEvent) fe;
EventDefinition ed = null;
if (ce.getEventDefinitions() != null && ce.getEventDefinitions().size() > 0) {
ed = ce.getEventDefinitions().get(0);
}
BoundaryEvent be = Bpmn2Factory.eINSTANCE.createBoundaryEvent();
if (ed != null && ed instanceof ErrorEventDefinition) {
be.setCancelActivity(true);
} else {
Iterator<FeatureMap.Entry> iter = ce.getAnyAttribute().iterator();
while (iter.hasNext()) {
FeatureMap.Entry entry2 = iter.next();
if (entry2.getEStructuralFeature().getName().equals("boundaryca")) {
String boundaryceVal = (String) entry2.getValue();
be.setCancelActivity(Boolean.parseBoolean(boundaryceVal));
}
}
}
if (ce.getDataOutputs() != null) {
be.getDataOutputs().addAll(ce.getDataOutputs());
}
if (ce.getDataOutputAssociation() != null) {
be.getDataOutputAssociation().addAll(ce.getDataOutputAssociation());
}
if (ce.getOutputSet() != null) {
be.setOutputSet(ce.getOutputSet());
}
if (ce.getEventDefinitions() != null) {
be.getEventDefinitions().addAll(ce.getEventDefinitions());
}
if (ce.getEventDefinitionRefs() != null) {
be.getEventDefinitionRefs().addAll(ce.getEventDefinitionRefs());
}
if (ce.getProperties() != null) {
be.getProperties().addAll(ce.getProperties());
}
if (ce.getAnyAttribute() != null) {
be.getAnyAttribute().addAll(ce.getAnyAttribute());
}
if (ce.getOutgoing() != null) {
be.getOutgoing().addAll(ce.getOutgoing());
}
if (ce.getIncoming() != null) {
be.getIncoming().addAll(ce.getIncoming());
}
if (ce.getProperties() != null) {
be.getProperties().addAll(ce.getProperties());
}
be.getDocumentation().addAll(ce.getDocumentation());
be.setName(ce.getName());
String ceElementName = Utils.getMetaDataValue(ce.getExtensionValues(), "elementname");
if (ceElementName != null) {
Utils.setMetaDataExtensionValue(be, "elementname", ceElementName);
}
be.setId(ce.getId());
be.setAttachedToRef(((Activity) entry.getKey()));
((Activity) entry.getKey()).getBoundaryEventRefs().add(be);
catchEventsToRemove.add(ce);
boundaryEventsToAdd.put(be, _outgoingFlows.get(ce));
}
}
}
} else if (fe instanceof FlowElementsContainer) {
revisitCatchEVentsConvertToBoundaryExecute(process, (FlowElementsContainer) fe, catchEventsToRemove, boundaryEventsToAdd);
}
}
if (catchEventsToRemove.size() > 0) {
for (CatchEvent ce : catchEventsToRemove) {
boolean removed = container.getFlowElements().remove(ce);
_outgoingFlows.remove(ce);
}
}
if (boundaryEventsToAdd.size() > 0) {
Iterator<BoundaryEvent> boundaryToAddIterator = boundaryEventsToAdd.keySet().iterator();
while (boundaryToAddIterator.hasNext()) {
BoundaryEvent bToAdd = boundaryToAddIterator.next();
container.getFlowElements().add(bToAdd);
_outgoingFlows.put(bToAdd, boundaryEventsToAdd.get(bToAdd));
}
}
}
use of org.eclipse.bpmn2.EventDefinition in project kie-wb-common by kiegroup.
the class Bpmn2JsonUnmarshaller method setCatchEventsInfo.
public void setCatchEventsInfo(FlowElementsContainer container, Definitions def, List<Signal> toAddSignals, Set<Error> toAddErrors, Set<Escalation> toAddEscalations, Set<Message> toAddMessages, Set<ItemDefinition> toAddItemDefinitions) {
List<FlowElement> flowElements = container.getFlowElements();
for (FlowElement fe : flowElements) {
if (fe instanceof CatchEvent) {
if (((CatchEvent) fe).getEventDefinitions().size() > 0) {
EventDefinition ed = ((CatchEvent) fe).getEventDefinitions().get(0);
if (ed instanceof SignalEventDefinition) {
SignalEventDefinition sed = (SignalEventDefinition) ed;
if (sed.getSignalRef() != null && sed.getSignalRef().length() > 0) {
String signalRef = sed.getSignalRef();
boolean shouldAddSignal = true;
List<RootElement> rootElements = def.getRootElements();
for (RootElement re : rootElements) {
if (re instanceof Signal) {
if (((Signal) re).getName().equals(signalRef)) {
shouldAddSignal = false;
break;
}
}
}
if (toAddSignals != null) {
for (Signal s : toAddSignals) {
if (s.getName().equals(signalRef)) {
shouldAddSignal = false;
break;
}
}
}
if (shouldAddSignal) {
Signal signal = Bpmn2Factory.eINSTANCE.createSignal();
signal.setName(signalRef);
toAddSignals.add(signal);
}
}
} else if (ed instanceof ErrorEventDefinition) {
String errorCode = null;
String errorId = null;
Iterator<FeatureMap.Entry> iter = ed.getAnyAttribute().iterator();
while (iter.hasNext()) {
FeatureMap.Entry entry = iter.next();
if (entry.getEStructuralFeature().getName().equals("erefname")) {
errorId = (String) entry.getValue();
errorCode = (String) entry.getValue();
}
}
Error err = this._errors.get(errorCode);
if (err == null) {
err = Bpmn2Factory.eINSTANCE.createError();
err.setId(errorId);
err.setErrorCode(errorCode);
this._errors.put(errorCode, err);
}
toAddErrors.add(err);
((ErrorEventDefinition) ed).setErrorRef(err);
} else if (ed instanceof EscalationEventDefinition) {
String escalationCode = null;
Iterator<FeatureMap.Entry> iter = ed.getAnyAttribute().iterator();
while (iter.hasNext()) {
FeatureMap.Entry entry = iter.next();
if (entry.getEStructuralFeature().getName().equals("esccode")) {
escalationCode = (String) entry.getValue();
break;
}
}
Escalation escalation = this._escalations.get(escalationCode);
if (escalation == null) {
escalation = Bpmn2Factory.eINSTANCE.createEscalation();
escalation.setEscalationCode(escalationCode);
this._escalations.put(escalationCode, escalation);
}
toAddEscalations.add(escalation);
((EscalationEventDefinition) ed).setEscalationRef(escalation);
} else if (ed instanceof MessageEventDefinition) {
((MessageEventDefinition) ed).setMessageRef(extractMessage(ed, toAddMessages, toAddItemDefinitions));
} else if (ed instanceof CompensateEventDefinition) {
Iterator<FeatureMap.Entry> iter = ed.getAnyAttribute().iterator();
while (iter.hasNext()) {
FeatureMap.Entry entry = iter.next();
if (entry.getEStructuralFeature().getName().equals("actrefname")) {
String activityNameRef = (String) entry.getValue();
// we have to iterate again through all flow elements
// in order to find our activity name
List<RootElement> re = def.getRootElements();
for (RootElement r : re) {
if (r instanceof Process) {
Process p = (Process) r;
List<FlowElement> fes = p.getFlowElements();
for (FlowElement f : fes) {
if (f instanceof Activity && ((Activity) f).getName().equals(activityNameRef)) {
((CompensateEventDefinition) ed).setActivityRef((Activity) f);
((Activity) f).setIsForCompensation(true);
}
}
}
}
}
}
}
}
} else if (fe instanceof FlowElementsContainer) {
setCatchEventsInfo((FlowElementsContainer) fe, def, toAddSignals, toAddErrors, toAddEscalations, toAddMessages, toAddItemDefinitions);
}
}
}
Aggregations