Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Блок-схема — это общеизвестная парадигма разработки программ. Действие блок-схемы обычно используется для реализации непоследовательных рабочих процессов, но может использоваться для последовательных рабочих процессов, если узлы 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>