public virtual ISignalEventSubscriptionEntity InsertSignalEvent(string signalName, Signal signal, IExecutionEntity execution) { ISignalEventSubscriptionEntity subscriptionEntity = CreateSignalEventSubscription(); subscriptionEntity.Execution = execution; if (signal != null) { subscriptionEntity.EventName = signal.Name; if (!(signal.Scope is null)) { subscriptionEntity.Configuration = signal.Scope; } } else { subscriptionEntity.EventName = signalName; } subscriptionEntity.ActivityId = execution.CurrentActivityId; subscriptionEntity.ProcessDefinitionId = execution.ProcessDefinitionId; if (!(execution.TenantId is null)) { subscriptionEntity.TenantId = execution.TenantId; } Insert(subscriptionEntity); execution.EventSubscriptions.Add(subscriptionEntity); return(subscriptionEntity); }
protected internal virtual void restoreSignalStartEvent(IProcessDefinition previousProcessDefinition, BpmnModel bpmnModel, StartEvent startEvent, EventDefinition eventDefinition) { SignalEventDefinition signalEventDefinition = (SignalEventDefinition)eventDefinition; ISignalEventSubscriptionEntity subscriptionEntity = EventSubscriptionEntityManager.CreateSignalEventSubscription(); Signal signal = bpmnModel.GetSignal(signalEventDefinition.SignalRef); if (signal != null) { subscriptionEntity.EventName = signal.Name; } else { subscriptionEntity.EventName = signalEventDefinition.SignalRef; } subscriptionEntity.ActivityId = startEvent.Id; subscriptionEntity.ProcessDefinitionId = previousProcessDefinition.Id; if (!ReferenceEquals(previousProcessDefinition.TenantId, null)) { subscriptionEntity.TenantId = previousProcessDefinition.TenantId; } EventSubscriptionEntityManager.Insert(subscriptionEntity); }
protected internal virtual void AddSignalEventSubscriptions(ICommandContext commandContext, IProcessDefinitionEntity processDefinition, Process process, BpmnModel bpmnModel) { if (CollectionUtil.IsNotEmpty(process.FlowElements)) { foreach (FlowElement element in process.FlowElements) { if (element is StartEvent startEvent) { if (CollectionUtil.IsNotEmpty(startEvent.EventDefinitions)) { EventDefinition eventDefinition = startEvent.EventDefinitions[0]; if (eventDefinition is SignalEventDefinition signalEventDefinition) { ISignalEventSubscriptionEntity subscriptionEntity = commandContext.EventSubscriptionEntityManager.CreateSignalEventSubscription(); Signal signal = bpmnModel.GetSignal(signalEventDefinition.SignalRef); if (signal != null) { subscriptionEntity.EventName = signal.Name; } else { subscriptionEntity.EventName = signalEventDefinition.SignalRef; } subscriptionEntity.ActivityId = startEvent.Id; subscriptionEntity.ProcessDefinitionId = processDefinition.Id; if (processDefinition.TenantId is object) { subscriptionEntity.TenantId = processDefinition.TenantId; } Context.CommandContext.EventSubscriptionEntityManager.Insert(subscriptionEntity); } } } } } }