Flödesschemaarbetsflöden

Ett flödesschema är ett välkänt paradigm för att utforma program. Flödesschemaaktiviteten används vanligtvis för att implementera icke-sekventiella arbetsflöden, men kan användas för sekventiella arbetsflöden om inga FlowDecision noder används.

Flödesschemats arbetsflödesstruktur

En flödesschemaaktivitet är en aktivitet som innehåller flera aktiviteter att köra. Flödesscheman innehåller också flödeskontrollelement som FlowDecision och FlowSwitch<T> som styr körningen mellan inneslutna aktiviteter beroende på variablernas värden.

Typer av flödesnoder

Olika typer av element används beroende på vilken typ av flödeskontroll som krävs när elementet körs. Typer av flödesschemaelement är:

  • FlowStep – Modellerar ett steg i körningen i flödesschemat.

  • FlowDecision – Exekverar grenar baserat på ett booleskt villkor som liknar If.

  • FlowSwitch – Branchanvändning baserat på en exklusiv brytare, liknande Switch<T>.

Varje länk har en Action egenskap som definierar en ActivityAction som kan användas för att köra underordnade aktiviteter och en eller flera Next egenskaper som definierar vilket element eller element som ska köras när det aktuella elementet slutför körningen.

Skapa en grundläggande aktivitetssekvens med en FlowStep-nod

För att modellera en grundläggande sekvens där två aktiviteter körs i tur och ordning används elementet FlowStep . I följande exempel används två FlowStep element för att köra två aktiviteter i följd.

<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>

Skapa ett villkorsstyrt flödesschema med en FlowDecision-nod

Om du vill modellera en nod för villkorsstyrt flöde i ett flödesschemaarbetsflöde (dvs. för att skapa en länk som fungerar som ett traditionellt flödesschemas beslutssymbol) används en FlowDecision nod. Egenskapen Condition för noden är inställd på ett uttryck som definierar villkoret, och egenskaperna True och False är inställda på FlowNode-instanser som ska köras om uttrycket utvärderas till true eller false. I följande exempel visas hur du definierar ett arbetsflöde som använder en FlowDecision nod.

<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>

Skapa en exklusiv växel med en FlowSwitch-nod

För att modellera ett flödesschema där en exklusiv sökväg väljs baserat på ett matchande värde FlowSwitch<T> används noden. Egenskapen Expression är inställd på en Activity<TResult> med en typparameter Object som definierar värdet som ska matcha val mot. Egenskapen Cases definierar en ordlista med nycklar och FlowNode objekt som ska matchas mot villkorsuttrycket och en uppsättning FlowNode objekt som definierar hur körningen ska flöda om det angivna fallet matchar villkorsuttrycket. FlowSwitch<T> Definierar också en Default egenskap som definierar hur körningen ska flöda om inga fall matchar villkorsuttrycket. I följande exempel visas hur du definierar ett arbetsflöde som använder ett FlowSwitch<T> element.

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