Я хотел бы проверить рабочий процесс в области дизайна (в данном случае, Visual Studio) из одного из дизайнеров дочерних действий.Я бы хотел запретить пользователям двигаться вперед, пока другие ошибки не будут исправлены, чтобы упростить процесс проектирования в будущем.
Реализация naiive не работает:
var activity = (this.ModelItem.Root.GetCurrentValue() as ActivityBuilder)
.Implementation as Activity;
var validationResult = ActivityValidationServices.Validate(activity);
if (validationResult.Errors.Count > 0))
{
MessageBox.Show("The Workflow is invalid. Fix it.", "Derp");
return;
}
Проблема заключается в том, что ActivityBuilder (который не a Activity и не может быть передан в Validate
) содержит все переменные и аргументы , определенные в корне рабочего процесса.Поэтому, когда вы пытаетесь проверить первый дочерний элемент корня (Implementation
), вы получаете недопустимые ошибки, так как любые привязки к ним не выполняются.
Я видел предложенные хаки, в которых вы добавляете Implementation
кОператор перевозчика (скажем, Последовательность) и затем добавьте все Переменные и аргументы , найденные в ActivityBuilder, к перевозчику.
Это воняет.
Есть ли лучший способ?