Example #1
0
        public virtual Execution <TContext> ResumeFrom(
            TContext context,
            string node,
            IActivityInputProvider inputProvider)
        {
            var execution = m_Persister.Load(context);
            var executor  = new ResumeFromWorkflowExecutor <TContext>(
                execution,
                context,
                this,
                m_ActivityFactory,
                m_ExecutionObserver,
                inputProvider);

            try
            {
                Accept(executor, node);
            }
            catch (Exception e)
            {
                execution.Error = e.ToString();
                execution.State = WorkflowState.Corrupted;
            }
            m_Persister.Save(context, execution);
            return(execution);
        }
Example #2
0
        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 Execute(
     Guid activityExecutionId,
     IActivityFactory factory,
     TContext context,
     IActivityInputProvider inputProvider,
     out object activityOutput,
     Action <object> beforeExecute)
 {
     beforeExecute(null);
     activityOutput = null;
     return(ActivityResult.Succeeded);
 }
 public ResumeFromWorkflowExecutor(
     Execution execution,
     TContext context,
     Workflow <TContext> workflow,
     IActivityFactory factory,
     IExecutionObserver observer,
     IActivityInputProvider inputProvider)
     : base(
         execution,
         context,
         workflow,
         factory,
         observer)
 {
     m_InputProvider = inputProvider;
 }
Example #5
0
 public ResumeFromWorkflowExecutor(
     Execution <TContext> execution,
     TContext context,
     INodesResolver <TContext> nodes,
     IActivityFactory factory,
     IExecutionObserver observer,
     IActivityInputProvider inputProvider)
     : base(
         execution,
         context,
         nodes,
         factory,
         observer)
 {
     m_InputProvider = inputProvider;
 }