public ActivityContext(Guid sagaId, IGrainFactory grainFactory, IGrainActivationContext grainContext, Dictionary <string, string> existingProperties) { SagaId = sagaId; GrainFactory = grainFactory; GrainContext = grainContext; SagaProperties = new SagaPropertyBag(existingProperties); }
public async Task Execute(IEnumerable <ActivityDefinition> activities, ISagaPropertyBag sagaProperties) { if (State.Status == SagaStatus.NotStarted) { State.Activities = activities.ToList(); State.Properties = sagaProperties is null ? new Dictionary <string, string>() : ((SagaPropertyBag)sagaProperties).ContextProperties; State.Status = SagaStatus.Executing; await WriteStateAsync(); await RegisterReminderAsync(); } await ResumeAsync(); }
public ActivityDefinition(Type type, ISagaPropertyBag properties) { Type = type; Properties = properties; }
public ISagaBuilder AddActivity <TActivity>(ISagaPropertyBag properties) where TActivity : IActivity { // todo: serialize dynamic activity config safely. activities.Add(new ActivityDefinition(typeof(TActivity), properties)); return(this); }