Как настроить активность в повторно размещенном конструкторе Workflow 4?

В этой статье показано, как создать настраиваемое действие в повторно размещенном конструкторе рабочих процессов ( с Workflow Foundation 4). В этом примере MyDelayActivity создается путем реализации интерфейса IActivityTemplateFactory и указания значения по умолчанию для входов Delay.

Однако можно ли также изменить входные данные действия? Например, предположим, что я хочу добавить новое StartProcess действие, которое принимает строку и запускает процесс, указанный в строке. Я могу реализовать это с помощью собственных действий, добавив действие InvokeMethod, указав Process.Start в качестве метода и коллекцию, содержащую строку в качестве параметра.

Могу ли я упростить все это, просто имея поле StartProcess с вводом только строки?


person Louis Rhys    schedule 26.10.2010    source источник


Ответы (2)


Конечно, просто создайте действие для выполнения работы и добавьте свойства InArgument для предоставления необходимых данных. Когда вы перетаскиваете действие в область конструктора, вы можете использовать страницу свойств для установки аргументов. В качестве альтернативы вы можете создать конструктор действий, который будет делать то же самое в области конструктора, например, действие WriteLine.

Пример:

public sealed class MyWriteLine : CodeActivity
{
    public InArgument<string> Text { get; set; }

    protected override void Execute(CodeActivityContext context)
    {
        string text = context.GetValue(this.Text);
        Console.WriteLine(text);
    }
}
person Maurice    schedule 26.10.2010
comment
хммм .. не могли бы вы дать еще намек, где я должен добавить InArgument? - person Louis Rhys; 26.10.2010
comment
Спасибо! но еще один вопрос. Теперь MyWriteLine отображается в дизайнере графического интерфейса пользователя как действие без ввода. Чтобы изменить текст, пользователь должен использовать страницу свойств. Можно ли сделать так, чтобы в представлении графического интерфейса был текстовый ввод, как в обычном VS WriteLine? - person Louis Rhys; 27.10.2010
comment
да. Добавьте ActivityDesigner. Это элемент управления WPF с поддержкой рабочего процесса, который WorkflowDesigner использует для визуализации вашей активности. Вы можете включить элементы управления, такие как TextBox, и привязать их к своей деятельности InArguments. - person Maurice; 27.10.2010

Дополнительная информация. На веб-сайте MSDN есть два очень полезных видеоурока: Разработка настраиваемых действий и конструкторы действий, и я предполагаю, что говорящий тот же Морис как принятый ответчик :)

person Louis Rhys    schedule 28.10.2010