1. I have created simple Activity
public class PublishLotActivity : Activity<LotSaga, SmLotPublishEvent>
{
private ILotManager _lotManager;
public PublishLotActivity(ILotManager lotManager)
{
_lotManager = lotManager;
}
public async Task Execute(BehaviorContext<LotSaga, SmLotPublishEvent> context, Behavior<LotSaga, SmLotPublishEvent> next)
{
await next.Execute(context).ConfigureAwait(false);
throw new NotImplementedException();
}
public async Task Faulted<TException>(BehaviorExceptionContext<LotSaga, SmLotPublishEvent, TException> context, Behavior<LotSaga, SmLotPublishEvent> next) where TException : Exception
{
throw new NotImplementedException();
}
public void Probe(ProbeContext context)
{
throw new NotImplementedException();
}
public void Accept(StateMachineVisitor visitor)
{
throw new NotImplementedException();
}
}
2. Registered it in IOC
.AddTransient<PublishLotActivity>()
3. Used in StateMachine (which worked fine before Activity adding)
During(Initial,
When(PublishEvent)
.TransitionTo(PreCreated)
.Activity(ctx => ctx.OfType<PublishLotActivity>())
Here is event declaration
Event(() => PublishEvent, x => x.CorrelateById(context => context.Message.Id));
Result: exception:
GreenPipes.PayloadNotFoundException: The payload was not found: Automatonymous.IStateMachineActivityFactory
at GreenPipes.PipeExtensions.GetPayload[TPayload](PipeContext context)
at Automatonymous.Activities.ContainerFactoryActivity`3.Automatonymous.Activity<TInstance,TData>.Execute(BehaviorContext`2 context, Behavior`2 next)
at Automatonymous.Activities.DataConverterActivity`2.Automatonymous.Activity<TInstance>.Execute[T](BehaviorContext`2 context, Behavior`2 next)
at Automatonymous.Behaviors.LastBehavior`1.Automatonymous.Behavior<TInstance>.Execute[T](BehaviorContext`2 context)
at Automatonymous.States.StateMachineState`1.Automatonymous.State<TInstance>.Raise[T](EventContext`2 context)
at Automatonymous.States.StateMachineState`1.Automatonymous.State<TInstance>.Raise[T](EventContext`2 context)
at Automatonymous.AutomatonymousStateMachine`1.Automatonymous.StateMachine<TInstance>.RaiseEvent[T](EventContext`2 context)
at Automatonymous.Pipeline.StateMachineSagaMessageFilter`2.Send(SagaConsumeContext`2 context, IPipe`1 next)
at MassTransit.EntityFrameworkCoreIntegration.Saga.EntityFrameworkSagaRepository`1.MassTransit.Saga.ISagaRepository<TSaga>.Send[T](ConsumeContext`1 context, ISagaPolicy`2 policy, IPipe`1 next)
Please help!
Thanks!