Compartir a través de


Flujos de trabajo del diagrama de flujo

Este tema es aplicable a Windows Workflow Foundation 4.

Un diagrama de flujo es un paradigma conocido para diseñar programas. La actividad Flowchart se usa normalmente para implementar flujos de trabajo no secuenciales, aunque se puede usar para flujos de trabajo secuenciales si no se usa ningún nodo FlowDecision.

Estructura de flujo de trabajo de gráfico de flujo

Una actividad Flowchart es una actividad que contiene una colección de nodos de flujo que se heredan de FlowNode. Los nodos de flujo pueden contener actividades secundarias que se vayan a ejecutar y la ejecución directa de otros nodos de flujo.

Tipos de nodos de flujo

Se usan tipos diferentes de elementos en función del tipo de control de flujo necesario cuando el elemento se ejecuta. Los tipos de elemento del diagrama de flujo incluyen:

  • FlowStep: modela un paso de ejecución en el diagrama de flujo.

  • FlowDecision: la ejecución de bifurcaciones basada en una condición booleana, similar a If.

  • FlowSwitch: la ejecución de bifurcaciones basada en un modificador exclusivo, similar a Switch.

Cada vínculo tiene una propiedad Action que define una clase ActivityAction que se puede usar para ejecutar actividades secundarias, además de una o más propiedades Next que definen qué elemento o elementos ejecutar cuando el elemento finalice la ejecución.

Crear un secuencia de actividad básica con un nodo FlowStep

Para modelar una secuencia básica en la que dos actividades se ejecutan sucesivamente, se usa el elemento FlowStep. En el siguiente ejemplo, se usan dos elementos FlowStep para ejecutar dos actividades en secuencia.

<Flowchart>
  <FlowStep>
    <Read Result = "[result]"/>
    <FlowStep.Next>
<FlowStep>
        <Write Text="[Hello + result]"/>
</FlowStep>
    </FlowStep.Next>
  </FlowStep>
</Flowchart>

Crear un diagrama de flujo condicional con un nodo FlowDecision

Para modelar un nodo de flujo condicional en un flujo de trabajo de diagrama de flujo (es decir, para crear un vínculo que funcione como el símbolo de la decisión de un diagrama de flujo tradicional), se usa un nodo FlowDecision. La propiedad Condition del nodo está establecida en WorkflowElement que define la condición. Las propiedades False y True están establecidas en instancias de FlowNode para que se ejecuten si la expresión se evalúa como true o false. En el siguiente ejemplo se muestra cómo definir un flujo de trabajo que usa un nodo 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>

Crear modificadores exclusivos con un nodo FlowSwitch

Para modelar un diagrama de flujo en el que se selecciona una ruta de acceso exclusiva según un valor coincidente, se usa el nodo FlowSwitch. La propiedad Expression está establecida en WorkflowElement’1 con un parámetro de tipo de Object que define el valor con el que hacer coincidir las opciones. La propiedad Cases define un diccionario de claves y los objetos FlowNode para que coincidan con la expresión condicional y, además, define un conjunto de objetos FlowNode que establecen cómo debe fluir la ejecución si el caso especificado coincide con la expresión condicional. FlowSwitch también define una propiedad Default que define a su vez la manera en que debe fluir la ejecución si no hay casos que coincidan con la expresión de la condición. En el siguiente ejemplo se muestra cómo definir un flujo de trabajo que usa un elemento FlowSwitch.

<Flowchart>
    <FlowSwitch>
      <FlowSwitch.Expression>
        <ReadColor/>
      </FlowSwitch.Expression>
<FlowStep x:Key="Red">
        <WriteRed/>
      </FlowStep>
      <FlowStep x:Key="Blue">
        <WriteBlue/>
      </FlowStep>
      <FlowStep x:Key="Green">
        <WriteGreen/>
      </FlowStep>
      </FlowSwitch.Cases>
    </FlowSwitch>
</Flowchart>