Exemplo n.º 1
0
        internal NextActivityKey Execute(WorkflowExecutionContext context, ActivityParameterDictionary parameters)
        {
            var execParameters = new ActivityParameterDictionary();

            foreach (var param in parameters.Values)
            {
                execParameters.Add(param);
            }
            foreach (var param in Parameters)
            {
                if (!execParameters.ContainsKey(param.Name))
                {
                    execParameters.Add(param);
                }
            }
            return(_Execute(context, execParameters));
        }
Exemplo n.º 2
0
        private Activity GetStartActivity(WorkflowExecutionContext context)
        {
            if (context.Restoring)
            {
                return(Activities[context.GetActivityNameToRestore()]);
            }
            if (StartActivity == null)
            {
                return(Activities.Values.First());
            }
            var startActivityFullName = WorkflowSchemeParser.CreateFullActivityName(StartActivity, Name);

            if (!Activities.ContainsKey(startActivityFullName))
            {
                throw new ActivityExecutionException(
                          "Начальное действие не найдено: " + startActivityFullName, this, context);
            }
            return(Activities[startActivityFullName]);
        }
Exemplo n.º 3
0
        internal NextActivityKey ExecuteNestedActivity(
            WorkflowExecutionContext context, ActivityParameterDictionary parameters)
        {
            InitProperties(context, parameters);
            var nextActivityKey          = context.DefaultNextActivityKey;
            var currentExecutingActivity = GetStartActivity(context);

            while (currentExecutingActivity != null)
            {
                var returnActivity = currentExecutingActivity as ReturnActivity;
                if (returnActivity != null)
                {
                    return(returnActivity.Result);
                }
                try
                {
                    nextActivityKey = currentExecutingActivity.Execute(context);
                }
                catch (ActivityExecutionInterruptException ex)
                {
                    currentExecutingActivity = context.GetToggledActivity(ex);
                    continue;
                }
                catch (Exception ex)
                {
                    throw new ActivityExecutionException(
                              "Ошибка выполнения действия", ex, currentExecutingActivity, context);
                }
                currentExecutingActivity = GetNextActivity(currentExecutingActivity, nextActivityKey);
                if (currentExecutingActivity == null)
                {
                    return(context.DefaultNextActivityKey);
                }
            }
            return(nextActivityKey);
        }
Exemplo n.º 4
0
 public ActivityExecutionException(string message, Activity activity, WorkflowExecutionContext context)
     : this(message, null, activity, context)
 {
 }
Exemplo n.º 5
0
 private static string FormatMessage(string message, Activity activity, WorkflowExecutionContext context)
 {
     return(string.Format("[действие: {0}; контекст: {1}] {2}", activity, context, message));
 }
Exemplo n.º 6
0
 public ActivityExecutionException(
     string message, Exception innerEx, Activity activity, WorkflowExecutionContext context)
     : base(FormatMessage(message, activity, context), innerEx)
 {
     Activity = activity;
 }
 public NextActivityKey Call(WorkflowExecutionContext context, ActivityParameterDictionary parameters)
 {
     return((NextActivityKey)Call(new object[] { context, parameters }));
 }
Exemplo n.º 8
0
 internal NextActivityKey MonitorExit( 
     WorkflowExecutionContext context, ActivityParameterDictionary parameters) 
 { 
     context.MonitorExit(LockName); 
     return context.DefaultNextActivityKey; 
 } 
Exemplo n.º 9
0
 protected override void Initialize(WorkflowExecutionContext context)
 {
     base.Initialize(context);
     StartActivity = null;
 }
Exemplo n.º 10
0
 internal NextActivityKey SubscribeToEvent(
     WorkflowExecutionContext context, ActivityParameterDictionary parameters)
 {
     context.SubscribeToEvent(Event, Handler, HandlingType);
     return(context.DefaultNextActivityKey);
 }
Exemplo n.º 11
0
 public void Call(WorkflowExecutionContext context)
 {
     Call(new object[] { context });
 }
Exemplo n.º 12
0
 internal NextActivityKey ExecuteReferencedActivity(
     WorkflowExecutionContext context, ActivityParameterDictionary parameters)
 {
     return(ActivityForExecute.Execute(context, parameters));
 }
Exemplo n.º 13
0
 internal NextActivityKey Execute(WorkflowExecutionContext context)
 {
     return(_Execute(context, Parameters));
 }
Exemplo n.º 14
0
 public static void Save(WorkflowExecutionContext context, Stream stream) 
 { 
     s_formatter.Serialize(stream, context.GetState()); 
 } 
Exemplo n.º 15
0
 internal NextActivityKey UnsubscribeFromEvent(
     WorkflowExecutionContext context, ActivityParameterDictionary parameters)
 {
     context.UnsubscribeFromEvent(Event, Handler);
     return(context.DefaultNextActivityKey);
 }