Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés

Flujos de trabajo del diagrama de flujo

.NET Framework (current version)
 

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.

Una actividad de diagrama de flujo es una actividad que contiene una colección de actividades que se ejecutarán.Los diagramas de flujo también contienen elementos de control de flujo como FlowDecision y T:System.Activities.Statements.FlowSwitch que dirigen la ejecución entre las actividades contenidas según los valores de las variables.

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: crea una bifurcación de la ejecución basándose en una condición booleana, similar a If.

  • FlowSwitch: crea una bifurcación de la ejecución basándose en un modificador exclusivo, similar a Switch<T>.

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 actual finalice la ejecución.

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>    
  <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="[&quot;Hello, &quot; &amp; result]"/>
</FlowStep>
    </FlowStep.Next>
  </FlowStep>
</Flowchart>

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 una expresión que define la condición, y las propiedades True y False están establecidas en instancias de FlowNode que se ejecutarán 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>

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<T>.La propiedad Expression se establece en Activity<TResult> con un parámetro de tipo de Object que define el valor con el que se van a hacer coincidir las opciones.La propiedad Cases define un diccionario de claves y objetos FlowNode para hacer coincidir con la expresión condicional, y un conjunto de objetos FlowNode que definen cómo debe fluir la ejecución si el caso especificado coincide con la expresión condicional. FlowSwitch<T> 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<T>.

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

Mostrar: