Esempio n. 1
0
        public Task <TReturn> Perform(IActivityBase <TReturn> r, IOrchestrationState orchestrationState)
        {
            var request = (TRequest)r;

            return(orchestrationState.Activity(
                       (originalInstanceId) => RunWithTimeout(request, originalInstanceId == process.InstanceId),
                       request.ToString()));
        }
Esempio n. 2
0
        public Task <T> PerformActivity <T>(IActivityBase <T> activity)
        {
            if (!process.Activities.TryGetValue(activity.GetType(), out var activityInfo))
            {
                throw new BuilderException($"undefined activity type {activity.GetType().FullName}.");
            }

            if (LockSet != null)
            {
                //TODO : check if the activity declares any affinities
            }

            return(((IActivityInfo <T>)activityInfo).Perform(activity, this));
        }
 public static void ScheduleActivity <TReturn>(this IContextWithForks context, TimeSpan delay, IActivityBase <TReturn> activity)
 {
     CheckTimeArgument(delay);
     context.ForkOrchestration(new Extensions.ForkedActivity <TReturn>()
     {
         Delay    = delay,
         Activity = activity
     });
 }