Пример #1
0
 private void AddNextActivity(Activity activity, NextActivityKey nextActivityKey, string nextActivityKeyValue)
 {
     if (activity.NextActivities.ContainsKey(nextActivityKey))
         throw new WorkflowSchemeParserException(string.Format(
             "Ключ следующего действия {0} уже добавлен ранее", nextActivityKey.Name), this);
     if (string.IsNullOrEmpty(nextActivityKeyValue))
         throw new WorkflowSchemeParserException(string.Format(
             "Не задано значение ключа следующего действия {0}", nextActivityKey.Name), this);
     if (nextActivityKeyValue.StartsWith("@@"))
     {
         nextActivityKeyValue = nextActivityKeyValue.Substring(2);
         if (string.IsNullOrEmpty(nextActivityKeyValue))
             throw new WorkflowSchemeParserException(string.Format(
                 "Некорректное значение ключа следующего действия {0}: {1}",
                 nextActivityKey.Name, nextActivityKeyValue), this);
         ReturnActivity returnActivity;
         try
         {
             returnActivity = WorkflowBuiltinFunctions.GetReturnActivity(nextActivityKeyValue);
         }
         catch (Exception ex)
         {
             throw new WorkflowSchemeParserException(string.Format(
                 "Ошибка получения встроенной функции по выражению {0}", nextActivityKeyValue), ex, this);
         }
         activity.NextActivities.Add(nextActivityKey, returnActivity);
     }
     else
     {
         var nextActivityFullName = CreateFullActivityName(nextActivityKeyValue, activity.Parent);
         activity.NextActivities.Add(
             nextActivityKey,
             Scheme.Activities.ContainsKey(nextActivityFullName)
                 ? Scheme.Activities[nextActivityFullName]
                 : new UnevaluatedActivity(nextActivityKeyValue, activity.Parent));
     }
 }
Пример #2
0
 private void AddNextActivity(Activity activity, string nextActivityKeyName, string nextActivityKeyValue)
 {
     if (nextActivityKeyName == null)
         throw new WorkflowSchemeParserException("Не задан ключ следующего действия", this);
     var nextActivityKey = new NextActivityKey(nextActivityKeyName);
     AddNextActivity(activity, nextActivityKey, nextActivityKeyValue);
 }