Допустим, у меня рабочий процесс, созданный программно, как этот
ActivityBuilder<int> ab = new ActivityBuilder<int>();
ab.Name = "Add";
ab.Properties.Add(new DynamicActivityProperty {Name = "Operand1", Type = typeof (InArgument<int>)});
ab.Properties.Add(new DynamicActivityProperty {Name = "Operand2", Type = typeof (InArgument<int>)});
ab.Implementation = new Sequence
{
Activities =
{
new WriteLine
{
Text =
new VisualBasicValue<string>(
"Operand1.ToString() + \" + \" + Operand2.ToString()")
}
}
};
Один из способов его выполнения - сначала сериализовать объект ActivityBuilder
в XAML
. Затем загрузите сериализованный XAML
, используя ActivityXamlServices
. Создать словарь для параметров. Выполните его, используя WorkflowInvoker
или WorkflowApplication
Есть ли способ выполнить этот рабочий процесс без необходимости конвертировать / сериализовать построитель действий в XAML?
WorkflowApplication и WorkflowInvoker принимают Activity в качестве входных данных для выполнения. Можно ли каким-то образом использовать activityBuilder.Implementation
напрямую с WorkflowApplication
или WorkflowInvoker
?
Почему я этого хочу? Потому что у нас есть дизайнер рабочего процесса, который пользователь использует для создания и выполнения рабочего процесса. Пользователь также создает рабочий процесс программно. Рабочий процесс может иметь размер до 80 МБ. Это повреждает память приложения из-за сериализации и десериализации файлов размером 80 МБ в XAML
. Я хочу как-то пропустить этот шаг и напрямую выполнить действие.
Имеет ли это смысл?