Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Блок-схема — это общеизвестная парадигма разработки программ. Действие блок-схемы обычно используется для реализации непоследовательных рабочих процессов, но может использоваться для последовательных рабочих процессов, если узлы FlowDecision
не используются.
Блок-схема структуры рабочего процесса
Активность блок-схемы — это активность, содержащая набор действий для выполнения. Блок-схемы также содержат такие элементы управления потоком, как FlowDecision и FlowSwitch<T>, которые регулируют выполнение между содержащимися действиями на основе значений переменных.
Типы узлов потока
Различные типы элементов используются в зависимости от типа элемента управления потоками, необходимого при выполнении элемента. К типам элементов блок-схемы относятся:
FlowStep
— Моделирует один шаг выполнения в блок-схеме.FlowDecision
— выполнение ветвей на основе логического условия, аналогичного If.FlowSwitch
— выполнение ветвлений на основе исключительного переключателя, аналогичного Switch<T>.
Каждая ссылка имеет свойство Action
, определяющее ActivityAction, которое может использоваться для выполнения дочерних операций, а также одно или несколько свойств Next
, определяющих, какой элемент или элементы необходимо выполнить, когда выполнение текущего элемента завершится.
Создание базовой последовательности действий с узлом FlowStep
Для моделирования базовой последовательности, в которой два действия выполняются поочередно, используется элемент FlowStep
. В следующем примере используются два элемента FlowStep
, чтобы последовательно выполнить два действия.
<Flowchart>
<FlowStep>
<Assign DisplayName="Get Name">
<Assign.To>
<OutArgument x:TypeArguments="x:String">[result]</OutArgument>
</Assign.To>
<Assign.Value>
<InArgument x:TypeArguments="x:String">["User"]</InArgument>
</Assign.Value>
</Assign>
<FlowStep.Next>
<FlowStep>
<WriteLine Text="Hello, " & [result]/>
</FlowStep>
</FlowStep.Next>
</FlowStep>
</Flowchart>
Создание условной блок-схемы с узлом FlowDecision
Для моделирования узла условного потока в рабочем процессе блок-схемы (т. е. для создания ссылки, которая выполняет функцию традиционного символа принятия решений блок-схемы), используется узел FlowDecision. Для Condition свойства узла задано выражение, определяющее условие, и True и False свойства задаются FlowNode экземплярами, которые будут выполняться, если выражение оценивается как true
или false
. В следующем примере показано, как определить рабочий процесс, использующий узел FlowDecision.
<Flowchart>
<FlowStep>
<Read Result="[s]"/>
<FlowStep.Next>
<FlowDecision>
<IsEmpty Input="[s]" />
<FlowDecision.True>
<FlowStep>
<Write Text="Empty"/>
</FlowStep>
</FlowDecision.True>
<FlowDecision.False>
<FlowStep>
<Write Text="Non-Empty"/>
</FlowStep>
</FlowDecision.False>
</FlowDecision>
</FlowStep.Next>
</FlowStep>
</Flowchart>
Создание эксклюзивного коммутатора с помощью узла FlowSwitch
Для моделирования блок-схемы, в которой выбирается один из эксклюзивных путей на основании определенного значения, используется узел FlowSwitch<T>. Для свойства Expression задан Activity<TResult> с параметром типа Object, который определяет значение для сопоставления вариантов выбора. Свойство Cases определяет словарь ключей и FlowNode объектов, соответствующих условному выражению, и набор объектов, определяющих FlowNode порядок выполнения, если данный случай соответствует условному выражению. Кроме того, FlowSwitch<T> определяется свойство Default, определяющее, как должен протекать поток выполнения, если ни один из вариантов не соответствует условному выражению. В следующем примере показано, как задать рабочий процесс, использующий элемент FlowSwitch<T>.
<Flowchart>
<FlowSwitch>
<FlowStep x:Key="Red">
<WriteRed/>
</FlowStep>
<FlowStep x:Key="Blue">
<WriteBlue/>
</FlowStep>
<FlowStep x:Key="Green">
<WriteGreen/>
</FlowStep>
</FlowSwitch>
</Flowchart>