Example #1
0
 public ActivityContext(Guid sagaId, IGrainFactory grainFactory, IGrainActivationContext grainContext, Dictionary <string, string> existingProperties)
 {
     SagaId         = sagaId;
     GrainFactory   = grainFactory;
     GrainContext   = grainContext;
     SagaProperties = new SagaPropertyBag(existingProperties);
 }
Example #2
0
        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;
 }
Example #4
0
 public ISagaBuilder AddActivity <TActivity>(ISagaPropertyBag properties) where TActivity : IActivity
 {
     // todo: serialize dynamic activity config safely.
     activities.Add(new ActivityDefinition(typeof(TActivity), properties));
     return(this);
 }