Шаблоны элементов рабочего процесса

Оценить
(0 голоса)

Элементы в рабочий процесс добавляются точно так же, как и в любой другой проект (надо щелкнуть по файлу проекта правой кнопкой мыши и выбрать пункт Add | New Item). При этом откроется диалог Add New Item с выделенным узлом Workflow (рис. 20.5).

В этом диалоговом окне вы можете добавить новое действие, последовательный рабочий процесс, а также рабочий процесс типа конечного автомата. Эти рабочие процессы будут дополнительными рабочими процессами в проекте (как мы это уже обсуждали). Элемент действия позволяет вам создать нестандартное действие для вашего рабочего процесса. Есть также и библиотека для создания совместно используемых действий (это похоже на пользо­вательский или нестандартный элемент управления). Описание: image541

Для каждого типа элемента имеются две версии. Одна версия каждого шаблона элемента помечена текстом "(with code separation)" (с разделением кода). Вы можете видеть это в вы­деленном на рисунке элементе. Эти шаблоны элементов позволяют вам выразить рабочий процесс в виде кода разметки XAML (вместо сгенерированного визуальным конструктором C# или VB). Выраженный в виде XAML рабочий процесс имеет расширение xoml (для того чтобы не путать его с хат1-файлами в WPF). Для создания рабочего процесса на XAML вы также используете визуальный конструктор. Однако некоторым разработчикам может ока­заться легче работать с разметкой (если им нужно редактировать рабочий процесс в коде). В конечном итоге все рабочие процессы компилируются в сборку. Далее показана сгенери­рованная визуальным конструктором разметка XAML для простого последовательного ра­бочего процесса:

<SequentialWorkflowActivity х:Class="TravelRequestWf.Workflowl" x:Name="Workflowl"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns=Mhttp://schemas.microsoft.com/winfx/2006/xaml/workflow">

<CodeActivity x:Name="codeActivityl" />

<IfElseActivity x:Name="ifElseActivitylM>

<IfElseBranchActivity x:Name="ifElseBranchActivityl">

<CallExternalMethodActivity x:Name="callExternalMethodActivityl" /> </IfElseBranchActivity>

<IfElseBranchActivity x:Name=,,ifElseBranchActivity2">

<CodeActivity x:Name="codeActivity2" />

</IfElseBranchActivity>

</IfElseActivity>

</SequentialWorkflowActivity>Описание: image542

В виде частичного класса визуальный конструктор генерирует этот же самый рабочий про­цесс следующим образом (в файле <HMfl_pa6o4ero_npouecca>.Designer.cs (или vb)):

namespace TravelRequestWf {

partial class TravelRequestProcess {

private  IfElseBranchActivity ifElseBranchActivity2;

private  IfElseBranchActivity ifElseBranchActivityl;

private  IfElseActivity ifElseActivityl;

private  CodeActivity codeActivity2;

private  CallExternalMethodActivity callExternalMethodActivityl;

private  CodeActivity codeActivityl;

[System.Diagnostics.DebuggerNonUserCode] private void InitializeComponent() { this.CanModifyActivities = true;

this.codeActivity2 = new System.Workflow.Activities.CodeActivity(); this.callExternalMethodActivityl =

new System.Workflow.Activities.CallExternalMethodActivity(); this.ifElseBranchActivity2 =

new System.Workflow.Activities.IfElseBranchActivity(); this.ifElseBranchActivityl =

new System.Workflow.Activities.IfElseBranchActivity(); this.ifElseActivityl =

new System.Workflow.Activities.IfElseActivity(); this.codeActivityl =

new System.Workflow.Activities.CodeActivity();

//

// codeActivity2 //

this.codeActivity2.Name = "codeActivity2";

//

// callExternalMethodActivityl //

this.callExternalMethodActivityl.Name =ncallExternalMethodActivityl";

//

// ifElseBranchActivity2 //

this.ifElseBranchActivity2.Activities.Add(this.codeActivity2); this.ifElseBranchActivity2.Name = MifElseBranchActivity2";

//

// ifElseBranchActivityl

//

this.ifElseBranchActivityl.Activities.Add

(this.callExternalMethodActivityl); this.ifElseBranchActivityl.Name = "ifElseBranchActivityl";

//

// ifElseActivityl //

this.ifElseActivityl.Activities.Add(this.ifElseBranchActivityl) ; this. ifElseActivityl.Activities.Add(this.ifElseBranchActivity2); this.ifElseActivityl.Name = "ifElseActivityl";

//

// codeActivityl

//

this.codeActivityl.Name = "codeActivityl";

//

// TravelRequestProcess

//

this.Activities.Add(this.codeActivityl); this.Activities.Add(this.ifElseActivityl); this.Name = "TravelRequestProcess";

i

this.CanModifyActivities = false;

}

}

}

Совет

Те, кто хочет вести разработку в коде и не хочет пользоваться визуальными инстру­ментами, уже поняли, что это вполне возможно. Фактически вы можете совместить объявления действий и метод initializeComponents в одном файле (как это было показано ранее с вашим классом рабочего процесса). Точно так же компилятор посту­пает при компиляции двух частичных классов.

Действия рабочих процессов
Создание последовательного рабочего процесса
Конструирование рабочего процесса
Настройка действий CallExternalMethod
Настройка действия CodeActivity

Добавить комментарий


Защитный код
Обновить

© 2018 www.visualstudios.ru. Все права защищены.