我正在尝试使用公共交通创建一个状态机,在其中等待 3 个状态更改为“已完成”。然后当我确定所有 3 个都已完成时,我想调用一些最终代码或其他代码。怎么做?使用下面的代码我重新标记状态可以。然后我尝试了不同的方法来使用注释部分,但没有任何效果。也许这很微不足道,但不知何故我无法让它发挥作用。谢谢你
Initially(
When(ImportDataCheckFinished)
.TransitionTo(ImportDataCheckFinishedState),
When(BusinessDataCheckFinished)
.TransitionTo(BusinessDataCheckFinishedState),
When(TestMessage)
.TransitionTo(TestMessageState));
//During(ImportDataCheckFinishedState,
//When(BusinessDataCheckFinished),
//When(TestMessage)
// .Then(x =>
// {
// ;
// }));
编辑:
我更改了代码并尝试使用复合事件,但它从未触发。我有断点。
InstanceState(x => x.CurrentState);
Event(() => ImportDataCheckFinished, x => x.CorrelateById(context => context.Message.RequestId));
Event(() => BusinessDataCheckFinished, x => x.CorrelateById(context => context.Message.RequestId));
Initially(
When(ImportDataCheckFinished)
.TransitionTo(ImportState),
When(BusinessDataCheckFinished)
.TransitionTo(BusinessState)
);
During(ImportState,
When(BusinessDataCheckFinished)
.TransitionTo(BusinessState));
CompositeEvent(() => Finished, x => x.ReadyEventStatus, ImportDataCheckFinished, BusinessDataCheckFinished);
DuringAny(
When(Finished)
.Then(x =>
{
;
})
);
您可以像这样使用大众运输状态机的 WhenEnter
this.WhenEnter(this.Final, x => x
.Publish(ctx => new CompletedEvent(ctx.Saga.Source.UserId)));