コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
                            }
                        }
                    }
                }
            }
        }