public ActivityResult Execute( Guid activityExecutionId, IActivityFactory factory, TContext context, IActivityInputProvider inputProvider, out object activityOutput, Action <object> beforeExecute) { IActivity <TInput, TOutput, TFailOutput> activity = null; try { activity = m_ActivityCreation(factory); object actout = null; TInput activityInput = null; try { if (inputProvider != null) { activityInput = inputProvider.GetInput <TInput>(); } if (activityInput == null) { activityInput = m_GetActivityInput(context); } beforeExecute(activity.IsInputSerializable ? activityInput : null); } catch (Exception e) { beforeExecute("Failed to get activity input: " + e); throw; } var result = activity.Execute( activityExecutionId, activityInput, output => { actout = output; m_ProcessOutput(context, output); }, output => { actout = output; m_ProcessFailOutput(context, output); }); activityOutput = actout; return(result); } finally { if (activity != null) { factory.Release(activity); } } }
public ActivityResult Resume <TClosure>( Guid activityExecutionId, IActivityFactory factory, TContext context, TClosure closure, out object activityOutput) { IActivity <TInput, TOutput, TFailOutput> activity = null; try { activity = m_ActivityCreation(factory); object actout = null; var result = activity.Resume( activityExecutionId, output => { actout = output; m_ProcessOutput(context, output); }, output => { actout = output; m_ProcessFailOutput(context, output); }, closure); activityOutput = actout; return(result); } finally { if (activity != null) { factory.Release(activity); } } }