Activités de collection dans le WF
Cette rubrique s'applique à Windows Workflow Foundation 4.
Les activités de collection servent à utiliser des objets de collection dans un flux de travail. .NET Framework version 4 comprend des activités fournies par le système permettant d'ajouter des éléments à une collection et de les supprimer, de vérifier l'existence d'un élément dans une collection et d'effacer une collection. Toutes les activités de collection sont des classes génériques qui héritent des objets CodeActivity ou CodeActivity. Les objets ExistsInCollection et RemoveFromCollection ont un objet OutArgument de type Boolean qui indique le résultat.
Remarque : |
---|
Si une activité de collection est exécutée avant de définir l'objet de collection sous-jacent, un objet InvalidOperationException est levé et l'activité émet une erreur. |
Activités de collection
Ajoute un élément à une collection spécifiée. |
|
Efface tous les éléments d'une collection spécifiée. |
|
ExistsInCollection |
Retourne true si un élément existe dans une collection. |
RemoveFromCollection |
Supprime un élément d'une collection spécifiée et retourne true si celui-ci a correctement été supprimé. |
Utilisation d'activités de collection
L'exemple de code suivant montre comment interagir avec une collection déclarée comme une variable de workflow. La collection utilisée est un objet List’1 d'objets String, nommée fruitList
.
Variable<ICollection<string>> fruitList = new Variable<ICollection<string>>
{
Default = new List<string>
{
"Apple",
"Orange",
},
Name = "FruitList",
};
Variable<bool> result = new Variable<bool>
{
Name = "Result",
}
Sequence seq1 = new Sequence
{
Variables = { fruitList, result },
Activities =
{
new If
{
Condition = new ExistsInCollection<string>
{
Collection = fruitList,
Item = "Pear",
},
Then = new AddToCollection<string>
{
Collection = fruitList,
Item = "Pear",
},
Else = new RemoveFromCollection<string>
{
Collection = fruitList,
Item = “Apple”,
},
new RemoveFromCollection<string>
{
Collection = fruitList,
Item = "Apple",
Result = result,
},
new If
{
Condition = result,
Then = new ClearCollection<string>
{
Collection = fruitList,
}
}
}
};
<Sequence xmlns="https://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">
<Sequence.Variables>
<Variable x:TypeArguments="scg:ICollection(x:String)" Name="FruitList">
<Variable.Default>
<Literal x:TypeArguments="scg:ICollection(x:String)" Result="{x:Null}">
<scg:List x:TypeArguments="x:String" Capacity="4">
<x:String>Orange</x:String>
</scg:List>
</Literal>
</Variable.Default>
</Variable>
<Variable x:TypeArguments="x:Boolean" Name="Result" />
</Sequence.Variables>
<If>
<If.Condition>
<InArgument x:TypeArguments="x:Boolean">
<ExistsInCollection x:TypeArguments="x:String" Item="Pear" Result="{x:Null}">[FruitList]</ExistsInCollection>
</InArgument>
</If.Condition>
<If.Else>
<RemoveFromCollection x:TypeArguments="x:String" Item="Apple" Result="{x:Null}">[FruitList]</RemoveFromCollection>
</If.Else>
<If.Then>
<AddToCollection x:TypeArguments="x:String" Item="Pear">[FruitList]</AddToCollection>
</If.Then>
</If>
<RemoveFromCollection x:TypeArguments="x:String" Item="Apple" Result="[Result]">[FruitList]</RemoveFromCollection>
<If Condition="[Result]">
<If.Then>
<ClearCollection x:TypeArguments="x:String">[FruitList]</ClearCollection>
</If.Then>
</If>
</Sequence>