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; }
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"); } }
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(); }
SignalEventDefinition signalDef = (SignalEventDefinition) eventDef; eventNode.put("type", "signal"); if (StringUtils.isNotEmpty(signalDef.getSignalRef())) { eventNode.put("signalRef", signalDef.getSignalRef());
SignalEventDefinition signalDef = (SignalEventDefinition) eventDef; eventNode.put("type", "signal"); if (StringUtils.isNotEmpty(signalDef.getSignalRef())) { eventNode.put("signalRef", signalDef.getSignalRef());
if (StringUtils.isNotEmpty(signalDefinition.getSignalRef())) { propertiesNode.put(PROPERTY_SIGNALREF, signalDefinition.getSignalRef());
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; } }
public void setValues(SignalEventDefinition otherDefinition) { super.setValues(otherDefinition); setSignalRef(otherDefinition.getSignalRef()); setSignalExpression(otherDefinition.getSignalExpression()); setAsync(otherDefinition.isAsync()); } }
public void setValues(SignalEventDefinition otherDefinition) { super.setValues(otherDefinition); setSignalRef(otherDefinition.getSignalRef()); setSignalExpression(otherDefinition.getSignalExpression()); setAsync(otherDefinition.isAsync()); } }
@Override public void trigger(DelegateExecution execution, String triggerName, Object triggerData) { ExecutionEntity executionEntity = (ExecutionEntity) execution; BoundaryEvent boundaryEvent = (BoundaryEvent) execution.getCurrentFlowElement(); if (boundaryEvent.isCancelActivity()) { 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); } } } super.trigger(executionEntity, triggerName, triggerData); } }
@Override protected void executeParse(BpmnParse bpmnParse, ThrowEvent intermediateEvent) { EventDefinition eventDefinition = null; if (!intermediateEvent.getEventDefinitions().isEmpty()) { eventDefinition = intermediateEvent.getEventDefinitions().get(0); } if (eventDefinition instanceof SignalEventDefinition) { SignalEventDefinition signalEventDefinition = (SignalEventDefinition) eventDefinition; intermediateEvent.setBehavior(bpmnParse.getActivityBehaviorFactory().createIntermediateThrowSignalEventActivityBehavior(intermediateEvent, signalEventDefinition, bpmnParse.getBpmnModel().getSignal(signalEventDefinition.getSignalRef()))); } else if (eventDefinition instanceof CompensateEventDefinition) { CompensateEventDefinition compensateEventDefinition = (CompensateEventDefinition) eventDefinition; intermediateEvent.setBehavior(bpmnParse.getActivityBehaviorFactory().createIntermediateThrowCompensationEventActivityBehavior(intermediateEvent, compensateEventDefinition)); } else if (eventDefinition == null) { intermediateEvent.setBehavior(bpmnParse.getActivityBehaviorFactory().createIntermediateThrowNoneEventActivityBehavior(intermediateEvent)); } else { LOGGER.warn("Unsupported intermediate throw event type for throw event {}", intermediateEvent.getId()); } } }
@Override protected void executeParse(BpmnParse bpmnParse, SignalEventDefinition signalDefinition) { Signal signal = null; if (bpmnParse.getBpmnModel().containsSignalId(signalDefinition.getSignalRef())) { signal = bpmnParse.getBpmnModel().getSignal(signalDefinition.getSignalRef()); } if (bpmnParse.getCurrentFlowElement() instanceof IntermediateCatchEvent) { IntermediateCatchEvent intermediateCatchEvent = (IntermediateCatchEvent) bpmnParse.getCurrentFlowElement(); intermediateCatchEvent.setBehavior(bpmnParse.getActivityBehaviorFactory().createIntermediateCatchSignalEventActivityBehavior(intermediateCatchEvent, signalDefinition, signal)); } else if (bpmnParse.getCurrentFlowElement() instanceof BoundaryEvent) { BoundaryEvent boundaryEvent = (BoundaryEvent) bpmnParse.getCurrentFlowElement(); boundaryEvent.setBehavior(bpmnParse.getActivityBehaviorFactory().createBoundarySignalEventActivityBehavior(boundaryEvent, signalDefinition, signal, boundaryEvent.isCancelActivity())); } } }
@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())); } }
@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 void restoreSignalStartEvent(ProcessDefinition previousProcessDefinition, BpmnModel bpmnModel, StartEvent startEvent, EventDefinition eventDefinition) { SignalEventDefinition signalEventDefinition = (SignalEventDefinition) eventDefinition; SignalEventSubscriptionEntity subscriptionEntity = getEventSubscriptionEntityManager().createSignalEventSubscription(); Signal signal = bpmnModel.getSignal(signalEventDefinition.getSignalRef()); if (signal != null) { subscriptionEntity.setEventName(signal.getName()); } else { subscriptionEntity.setEventName(signalEventDefinition.getSignalRef()); } subscriptionEntity.setActivityId(startEvent.getId()); subscriptionEntity.setProcessDefinitionId(previousProcessDefinition.getId()); if (previousProcessDefinition.getTenantId() != null) { subscriptionEntity.setTenantId(previousProcessDefinition.getTenantId()); } getEventSubscriptionEntityManager().insert(subscriptionEntity); }
protected void addSignalEventSubscriptions(CommandContext commandContext, ProcessDefinitionEntity processDefinition, org.flowable.bpmn.model.Process process, BpmnModel bpmnModel) { if (CollectionUtil.isNotEmpty(process.getFlowElements())) { for (FlowElement element : process.getFlowElements()) { if (element instanceof StartEvent) { StartEvent startEvent = (StartEvent) element; if (CollectionUtil.isNotEmpty(startEvent.getEventDefinitions())) { EventDefinition eventDefinition = startEvent.getEventDefinitions().get(0); if (eventDefinition instanceof SignalEventDefinition) { SignalEventDefinition signalEventDefinition = (SignalEventDefinition) eventDefinition; SignalEventSubscriptionEntity subscriptionEntity = CommandContextUtil.getEventSubscriptionEntityManager(commandContext).createSignalEventSubscription(); Signal signal = bpmnModel.getSignal(signalEventDefinition.getSignalRef()); if (signal != null) { subscriptionEntity.setEventName(signal.getName()); } else { subscriptionEntity.setEventName(signalEventDefinition.getSignalRef()); } subscriptionEntity.setActivityId(startEvent.getId()); subscriptionEntity.setProcessDefinitionId(processDefinition.getId()); if (processDefinition.getTenantId() != null) { subscriptionEntity.setTenantId(processDefinition.getTenantId()); } CommandContextUtil.getEventSubscriptionEntityManager(commandContext).insert(subscriptionEntity); } } } } } }
eventName = signal.getName(); } else { eventName = signalEventDefinition.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());
SignalEventDefinition signalDefinition = (SignalEventDefinition) eventDefinition; Signal signal = null; if (bpmnParse.getBpmnModel().containsSignalId(signalDefinition.getSignalRef())) { signal = bpmnParse.getBpmnModel().getSignal(signalDefinition.getSignalRef());
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));