Пример #1
0
        public override void Trigger <T>(TriggerContext <T> triggerContext)
        {
            ProducerBlock <T> producer = null;

            if (triggerContext.Id != null)
            {
                Guid value = triggerContext.Id.Value;

                if (!_blockContainer.TryGetProducer(value, out producer))
                {
                    throw new Exception($"Cannot find producer with id {value}. Unable to trigger flow plan.");
                }
            }
            else
            {
                producer = (ProducerBlock <T>)_blockContainer.Entrypoints.First();
            }

            producer.Trigger(triggerContext.Item);
        }
Пример #2
0
        protected void AddProducer <T>(FlowProducerDefinition <T> definition, ProducerBlockActionBase <T> action)
        {
            BlockHeader header = new BlockHeader(definition.BlockInfo, Definition.ServiceInfo);

            action.Header  = header;
            action.Context = definition.Settings.Context;

            definition.Settings.Type       = _flowType;
            definition.Settings.Iterations = _iterations;

            if (action.Logger == null)
            {
                action.Logger = Logger;
            }

            LinkRouterBase <T> router = GetLinkFromProducerType <T>(definition.Settings.ProducerType);
            ProducerBlock <T>  block  = new ProducerBlock <T>(header, router, action, definition);

            AssignLoggers(block);
            _blockContainer.AddProducer(block);
        }
Пример #3
0
 internal bool TryGetProducer <T>(Guid id, out ProducerBlock <T> block)
 {
     return(TryGetBlock(id, out block));
 }
Пример #4
0
 internal void AddProducer <T>(ProducerBlock <T> producer)
 {
     _entrypoints.Add(producer.Header.BlockInfo.Id, producer);
     _blocks.Add(producer.Header.BlockInfo.Id, producer);
 }