public Task <TReturn> Perform(IActivityBase <TReturn> r, IOrchestrationState orchestrationState) { var request = (TRequest)r; return(orchestrationState.Activity( (originalInstanceId) => RunWithTimeout(request, originalInstanceId == process.InstanceId), request.ToString())); }
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 }); }