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)); } }
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); }