Utilisation des filtres avec la forme Réception de messages
Une expression de filtre est un paramètre facultatif qu'il est possible d'appliquer à une forme de réception d'une orchestration spécifiant la valeur True pour la propriété Activer. Si vous définissez une expression de filtre, l'orchestration ne sera activée que si un message entrant remplit les conditions spécifiées dans l'expression de filtre. En l'absence d'expression de filtre, tout message entrant auquel est abonnée l'orchestration pourra activer cette dernière.
La création d'une expression de filtre permet de comparer la propriété d'un message entrant sur la partie gauche de l'expression avec une constante de la partie droite de l'expression. Vous pouvez également créer des expressions composées en appliquant des opérateurs AND et OR à deux ou plusieurs expressions. Enfin, vous avez la possibilité de ne pas définir d'expression de filtre, auquel cas tous les messages seront acceptés.
Une expression de filtre peut ressembler à ce qui suit :
InvoiceSchema.Quantity >= 1000
Dans cet exemple, un message entrant est présenté à l'orchestration. L’orchestration a une forme de réception d’activation (la propriété Activation est définie sur True afin que la réception d’un certain message entraîne l’exécution de l’orchestration) avec l’expression de filtre précédente qui lui a été appliquée. La propriété du message entrant doit être appelée Quantity dans l’espace de noms InvoiceSchema. L'orchestration n'acceptant que les factures portant sur au moins 1 000 articles, le moteur d'exécution vérifie le message entrant avant son exécution.
Le tableau suivant montre les opérateurs qu'il est possible d'utiliser dans les expressions de filtre.
Opérateur | Description | Exemple |
---|---|---|
== | égal à | ReqMsg(Total) == 100 |
!= | différent de | ReqMsg(Total) != 100 |
< | inférieur à | ReqMsg(Total) < 100 |
> | supérieur à | ReqMsg(Total) > 100 |
<= | inférieur ou égal à | ReqMsg(Total) <= 100 |
>= | supérieur ou égal à | ReqMsg(Total) >= 100 |
exists | exists | ReqMsg(Description) existe |
Notes
Les valeurs de chaîne dans les expressions de filtre sont placées entre guillemets, par exemple : ReqMsg(Description) = « État du bon de commande ». Les valeurs de caractère sont interdites dans une expression de filtre.
Notes
Si votre réception avec activation est associée à un port à liaison directe et que vous envoyez par la suite un message du même type doté de la même valeur pour la propriété testée dans votre filtre, vous allez créer une boucle infinie. Le message sera envoyé dans la base de données MessageBox, où il sera de nouveau récupéré, car il remplit les critères du filtre. Pour éviter ce problème, vous pouvez filtrer sur une autre propriété, envoyer un message d'un type différent ou penser à modifier la valeur de la propriété avant d'envoyer un message du même type.
Voir aussi
Configuration de la forme Réception
Utilisation des corrélations dans les orchestrations
Utilisation des champs distinctifs et des champs de propriété
Utilisation de messages passant par des orchestrations