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); }
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); }
internal bool TryGetProducer <T>(Guid id, out ProducerBlock <T> block) { return(TryGetBlock(id, out block)); }
internal void AddProducer <T>(ProducerBlock <T> producer) { _entrypoints.Add(producer.Header.BlockInfo.Id, producer); _blocks.Add(producer.Header.BlockInfo.Id, producer); }