public void setValues(SignalEventDefinition otherDefinition) { super.setValues(otherDefinition); setSignalRef(otherDefinition.getSignalRef()); setSignalExpression(otherDefinition.getSignalExpression()); setAsync(otherDefinition.isAsync()); } }
@Override public void parseChildElement(XMLStreamReader xtr, BaseElement parentElement, BpmnModel model) throws Exception { if (!(parentElement instanceof Event)) return; SignalEventDefinition eventDefinition = new SignalEventDefinition(); BpmnXMLUtil.addXMLLocation(eventDefinition, xtr); eventDefinition.setSignalRef(xtr.getAttributeValue(null, ATTRIBUTE_SIGNAL_REF)); eventDefinition.setSignalExpression(BpmnXMLUtil.getAttributeValue(ATTRIBUTE_SIGNAL_EXPRESSION, xtr)); if (StringUtils.isNotEmpty(BpmnXMLUtil.getAttributeValue(ATTRIBUTE_ACTIVITY_ASYNCHRONOUS, xtr))) { eventDefinition.setAsync(Boolean.parseBoolean(BpmnXMLUtil.getAttributeValue(ATTRIBUTE_ACTIVITY_ASYNCHRONOUS, xtr))); } BpmnXMLUtil.parseChildElements(ELEMENT_EVENT_SIGNALDEFINITION, eventDefinition, xtr, model); ((Event) parentElement).getEventDefinitions().add(eventDefinition); } }
@Override public SignalEventDefinition clone() { SignalEventDefinition clone = new SignalEventDefinition(); clone.setValues(this); return clone; }
public IntermediateThrowSignalEventActivityBehavior(ThrowEvent throwEvent, SignalEventDefinition signalEventDefinition, Signal signal) { if (signal != null) { signalEventName = signal.getName(); if (Signal.SCOPE_PROCESS_INSTANCE.equals(signal.getScope())) { this.processInstanceScope = true; } } else if (StringUtils.isNotEmpty(signalEventDefinition.getSignalRef())) { signalEventName = signalEventDefinition.getSignalRef(); } else { signalExpression = signalEventDefinition.getSignalExpression(); } this.signalEventDefinition = signalEventDefinition; }
SignalEventDefinition signalDef = (SignalEventDefinition) eventDef; eventNode.put("type", "signal"); if (StringUtils.isNotEmpty(signalDef.getSignalRef())) { eventNode.put("signalRef", signalDef.getSignalRef());
if (bpmnParse.getBpmnModel().containsSignalId(signalDefinition.getSignalRef())) { signal = bpmnParse.getBpmnModel().getSignal(signalDefinition.getSignalRef()); String signalName = signal.getName(); signalDefinition.setSignalRef(signalName); EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(signalDefinition.getSignalRef(), "signal"); eventSubscriptionDeclaration.setActivityId(activity.getId()); eventSubscriptionDeclaration.setStartEvent(true); EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(signalDefinition.getSignalRef(), "signal"); EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(signalDefinition.getSignalRef(), "signal"); eventSubscriptionDeclaration.setAsync(signalDefinition.isAsync()); EventSubscriptionDeclaration eventSubscriptionDeclaration = new EventSubscriptionDeclaration(signalDefinition.getSignalRef(), "signal"); eventSubscriptionDeclaration.setActivityId(activity.getId());
BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(eventSubProcessExecution.getProcessDefinitionId()); Signal signal = null; if (bpmnModel.containsSignalId(signalEventDefinition.getSignalRef())) { signal = bpmnModel.getSignal(signalEventDefinition.getSignalRef()); signalEventDefinition.setSignalRef(signal.getName()); signalExecution.setEventScope(true); signalExecution.setActive(false); SignalEventSubscriptionEntity signalSubscription = CommandContextUtil.getEventSubscriptionEntityManager(commandContext).insertSignalEvent(signalEventDefinition.getSignalRef(), signal, signalExecution); CommandContextUtil.getProcessEngineConfiguration(commandContext).getEventDispatcher() .dispatchEvent(FlowableEventBuilder.createSignalEvent(FlowableEngineEventType.ACTIVITY_SIGNAL_WAITING, signalSubscription.getActivityId(),
protected void writeSignalDefinition(Event parentEvent, SignalEventDefinition signalDefinition, XMLStreamWriter xtw) throws Exception { xtw.writeStartElement(ELEMENT_EVENT_SIGNALDEFINITION); writeDefaultAttribute(ATTRIBUTE_SIGNAL_REF, signalDefinition.getSignalRef(), xtw); if (parentEvent instanceof ThrowEvent && signalDefinition.isAsync()) { BpmnXMLUtil.writeQualifiedAttribute(ATTRIBUTE_ACTIVITY_ASYNCHRONOUS, "true", xtw); } boolean didWriteExtensionStartElement = BpmnXMLUtil.writeExtensionElements(signalDefinition, false, xtw); if (didWriteExtensionStartElement) { xtw.writeEndElement(); } xtw.writeEndElement(); }
protected void convertJsonToSignalDefinition(JsonNode objectNode, Event event) { String signalRef = getPropertyValueAsString(PROPERTY_SIGNALREF, objectNode); SignalEventDefinition eventDefinition = new SignalEventDefinition(); eventDefinition.setSignalRef(signalRef); event.getEventDefinitions().add(eventDefinition); }
SignalEventDefinition signalDef = (SignalEventDefinition) eventDef; eventNode.put("type", "signal"); if (StringUtils.isNotEmpty(signalDef.getSignalRef())) { eventNode.put("signalRef", signalDef.getSignalRef());
protected void handleSignalEventDefinition(BpmnModel bpmnModel, Process process, Event event, EventDefinition eventDefinition, List<ValidationError> errors) { SignalEventDefinition signalEventDefinition = (SignalEventDefinition) eventDefinition; if (StringUtils.isEmpty(signalEventDefinition.getSignalRef())) { if (StringUtils.isEmpty(signalEventDefinition.getSignalExpression())) { addError(errors, Problems.SIGNAL_EVENT_MISSING_SIGNAL_REF, process, event, "signalEventDefinition does not have mandatory property 'signalRef'"); } } else if (!bpmnModel.containsSignalId(signalEventDefinition.getSignalRef())) { addError(errors, Problems.SIGNAL_EVENT_INVALID_SIGNAL_REF, process, event, "Invalid 'signalRef': no signal with that id can be found in the model"); } }
BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(parentExecution.getProcessDefinitionId()); Signal signal = null; if (bpmnModel.containsSignalId(signalEventDefinition.getSignalRef())) { signal = bpmnModel.getSignal(signalEventDefinition.getSignalRef()); signalEventDefinition.setSignalRef(signal.getName()); signalExecution.setActive(false); signalEventSubscriptions.add(CommandContextUtil.getEventSubscriptionEntityManager(commandContext).insertSignalEvent(signalEventDefinition.getSignalRef(), signal, signalExecution));
@Override public SignalEventDefinition clone() { SignalEventDefinition clone = new SignalEventDefinition(); clone.setValues(this); return clone; }
public void setValues(SignalEventDefinition otherDefinition) { super.setValues(otherDefinition); setSignalRef(otherDefinition.getSignalRef()); setSignalExpression(otherDefinition.getSignalExpression()); setAsync(otherDefinition.isAsync()); } }
if (StringUtils.isNotEmpty(signalDefinition.getSignalRef())) { propertiesNode.put(PROPERTY_SIGNALREF, signalDefinition.getSignalRef());
@Override public void execute(DelegateExecution execution) { CommandContext commandContext = Context.getCommandContext(); ExecutionEntity executionEntity = (ExecutionEntity) execution; String signalName = null; if (StringUtils.isNotEmpty(signalEventDefinition.getSignalRef())) { signalName = signalEventDefinition.getSignalRef(); } else { Expression signalExpression = CommandContextUtil.getProcessEngineConfiguration(commandContext).getExpressionManager() .createExpression(signalEventDefinition.getSignalExpression()); signalName = signalExpression.getValue(execution).toString(); } CommandContextUtil.getEventSubscriptionEntityManager(commandContext).insertSignalEvent(signalName, signal, executionEntity); if (CommandContextUtil.getProcessEngineConfiguration(commandContext).getEventDispatcher().isEnabled()) { CommandContextUtil.getProcessEngineConfiguration(commandContext).getEventDispatcher() .dispatchEvent(FlowableEventBuilder.createSignalEvent(FlowableEngineEventType.ACTIVITY_SIGNAL_WAITING, executionEntity.getActivityId(), signalName, null, executionEntity.getId(), executionEntity.getProcessInstanceId(), executionEntity.getProcessDefinitionId())); } }
protected ExecutionEntity deleteSignalEventSubscription(DelegateExecution execution) { ExecutionEntity executionEntity = (ExecutionEntity) execution; String eventName = null; if (signal != null) { eventName = signal.getName(); } else { eventName = signalEventDefinition.getSignalRef(); } EventSubscriptionEntityManager eventSubscriptionEntityManager = CommandContextUtil.getEventSubscriptionEntityManager(); List<EventSubscriptionEntity> eventSubscriptions = executionEntity.getEventSubscriptions(); for (EventSubscriptionEntity eventSubscription : eventSubscriptions) { if (eventSubscription instanceof SignalEventSubscriptionEntity && eventSubscription.getEventName().equals(eventName)) { eventSubscriptionEntityManager.delete(eventSubscription); } } return executionEntity; } }
@Override public void execute(DelegateExecution execution) { CommandContext commandContext = Context.getCommandContext(); ExecutionEntity executionEntity = (ExecutionEntity) execution; String signalName = null; if (StringUtils.isNotEmpty(signalEventDefinition.getSignalRef())) { signalName = signalEventDefinition.getSignalRef(); } else { Expression signalExpression = CommandContextUtil.getProcessEngineConfiguration(commandContext).getExpressionManager() .createExpression(signalEventDefinition.getSignalExpression()); signalName = signalExpression.getValue(execution).toString(); } CommandContextUtil.getEventSubscriptionEntityManager(commandContext).insertSignalEvent(signalName, signal, executionEntity); if (CommandContextUtil.getProcessEngineConfiguration(commandContext).getEventDispatcher().isEnabled()) { CommandContextUtil.getProcessEngineConfiguration(commandContext).getEventDispatcher() .dispatchEvent(FlowableEventBuilder.createSignalEvent(FlowableEngineEventType.ACTIVITY_SIGNAL_WAITING, executionEntity.getActivityId(), signalName, null, executionEntity.getId(), executionEntity.getProcessInstanceId(), executionEntity.getProcessDefinitionId())); } }
if (eventDefinition instanceof SignalEventDefinition) { SignalEventDefinition signalEvent = (SignalEventDefinition) eventDefinition; if (StringUtils.isNotEmpty(signalEvent.getSignalRef())) { if (!model.containsSignalId(signalEvent.getSignalRef())) { Signal signal = new Signal(signalEvent.getSignalRef(), signalEvent.getSignalRef()); model.addSignal(signal);