, , , . , . CompositeEvent .
AllDataImported MarkImportCompletedForLocation. , - .
, :
During(ImportingData,
When(DataImported)
.Then(MarkImportCompletedForLocation),
When(AllDataImported)
.TransitionTo(CleaningUp)
.Then(CleanUpSources)
);
IsAllDataImported .
Locations:
public Dictionary<Uri, bool> Locations { get; set; }
MarkImportCompletedForLocation :
private void MarkImportCompletedForLocation(BehaviorContext<DataImportSagaState, DataImportedEvent> ctx)
{
lock (ctx.Instance.Locations)
{
ctx.Instance.Locations[ctx.Data.ImportSource] = true;
if (ctx.Instance.Locations.Values.All(x => x))
{
var allDataImported = new AllDataImportedEvent {CorrelationId = ctx.Instance.CorrelationId};
this.CreateEventLift(AllDataImported).Raise(ctx.Instance, allDataImported);
}
}
}
( , , , , MarkImportCompletedForLocation , , .)