ExpressionEvaluator

Effectue un calcul mathématique sur une expression composée de fonctions d'entité FME, de fonctions de chaîne, de fonctions mathématiques et d'opérateurs mathématiques. Les opérandes et les arguments de fonction sont constitués d'attributs de l'entité d'entrée, de littéraux constants, de paramètres publiés et privés, ainsi que de fonctions et d'opérateurs. Vous pouvez utiliser l'interface graphique pour configurer une expression, mais vous pouvez également modifier une expression manuellement. Les résultats de l'expression sont stockés dans les attributs spécifiés par l'utilisateur.

Il y a deux principales utilisations de ExpressionEvaluator :

  1. Appliquer un expression sur un attribut
    • Définit Mode d'évaluation sur soit Créer un nouvel attribut soit Ecraser des attributs existants mais écrase seulement un attribut.
    • l'expression peut utiliser la fonction @Value() mais n'utilise pas la fonction @CurrentAttribute().
    • Par exemple, si vous voulez ajouter 1 à la valeur d'un attribut, utilisez l'expression @Value(attr) + 1, définissez la méthode de calcul à Ecraser les attributs existants, et définissez les attributs à écraser à attr.
  2. Appliquer un expression sur plusieurs attributs
    • définit le Mode d'évaluation sur Ecraser les attributs existants et sélectionne seulement les attributs qui seront écrasés par de nouvelles valeurs. Les attributs non sélectionnés conserveront leurs valeurs d'origine.
    • l'expression peut utiliser la fonction @CurrentAttribute() mais n'utilisera généralement pas la fonction @Value().
    • Par exemple, si vous souhaitez ajouter 1 aux valeurs de quelques attributs, utilisez l'expression @CurrentAttribute() + 1, définissez la Méthode de calcul à Ecraser les attributs existants, et sélectionnez les attributs.

Note: Note : si vous souhaitez appliquer différentes expressions à différents attributs, vous pouvez utiliser plusieurs ExpressionEvaluator ou utiliser un seul AttributeCreator.

Les opérateurs pris en charge sont un sous-ensemble des opérateurs autorisés dans les expressions C. Ils ont la même signification et la même préséance que les opérateurs C correspondants, à une exception notable près : ils supportent les nuls numériques.

Les expressions sont censées produire des résultats numériques. FME prend en charge les nuls numériques, qui permettent aux expressions de renvoyer un résultat nul. Par exemple, l'expression 8.2 + 6 renvoie 14.2 , alors que l'expression @Value(nullAttr) * 1 renvoie null.

Note: Il est courant de construire des expressions invalides, il est donc souhaitable de les contrôler particulièrement si vous utilisez @Value(attr) puisque certains attributs peuvent avoir des valeurs invalides. Si une expression n'est pas valide, l'attribut de résultat correspondant sera défini comme nul. Lorsque le résultat est nul, les attributs suivants sont définis pour indiquer ce qui n'a pas fonctionné et où :
fme_expression_warnings{}.attrName
fme_expression_warnings{}.message
fme_expression_warnings{}.transformerName

Dans l'ExpressionEvaluator, les attributs null, missing et empty string sont tous considérés comme nuls. Ainsi, @Value(attr) * 1 aura pour résultat null si attr n'est pas présent dans l'entité ou est une chaîne vide.

Paramètres

Général

Expression arithmétique

Une expression consiste en une combinaison d'opérateurs et d'opérandes, de fonctions et d'arguments, et de parenthèses. Les espaces peuvent être utilisés entre les opérandes, les opérateurs, les fonctions et les parenthèses, mais sont ignorés par le processeur d'expression.

Les opérandes peuvent être spécifiés de la façon suivante :

  • En tant que valeur numérique constante, entière ou à virgule flottante.
  • En tant que valeur d'un attribut d'entité FME, utilisant les standards et les notations @Value() ou @CurrentAttribute(). La valeur de l'attribut est utilisée comme opérande ou argument.
  • Comme une entité FME ou une fonction mathématique, telle que @Area() ou @sin(1). La fonction est évaluée et le résultat est utilisé comme opérande ou argument.

Les valeurs numériques peuvent être spécifiées en décimales, comme 123 ou 12.3, en octal si les deux premiers caractères de l'opérande sont 0o (zéro suivi de la lettre o) ou en hexadécimal si les deux premiers caractères de l'opérante sont 0x.

Les nombres à virgule flottante peuvent être spécifiés de n'importe quelle manière acceptée par un compilateur C conforme à la norme ANSI, sauf que les suffixes "f", "F", "l" et "L" ne sont pas autorisés. Par exemple, tous les nombres suivants sont des nombres à virgule flottante valides : 2.1, 3., 6e4, 7.91e+16. Si aucune interprétation numérique n'est possible, un opérande est considéré comme nul.

Pour plus d'informations sur les éléments de l'éditeur GUI, voir Éditeur arithmétique.

Fonctions d'entités

Pour plus d'informations, consulter la section Fonctions d'entités.

Fonctions chaînes de caractères

Pour plus d'information, consulter la section Fonctions chaînes de caractères.

Fonctions mathématiques

Pour plus d'information consulter la section Fonctions mathématiques.

Opérateurs mathématiques

Pour plus d'information consulter la section Opérateurs mathématiques.

Exemples

FME Community propose de bons exemples sur ExpressionEvaluator.

Transformers liés

Si vous paramétrez plus d'un attribut, pensez à utiliser AttributeCreator qui comporte les mêmes fonctionnalités.

Éditer les paramètres des Transformers

À l'aide d'un ensemble d'options de menu, les paramètres du Transformer peuvent être attribués en faisant référence à d'autres éléments du traitement. Des fonctions plus avancées, telles qu'un éditeur avancé et un éditeur arithmétique, sont également disponibles dans certains Transformers. Pour accéder à un menu de ces options, cliquez sur à côté du paramètre applicable. Pour plus d'informations, voir Options de menus et paramètres de Transformer.

Définir les valeurs

Il existe plusieurs façons de définir une valeur à utiliser dans un Transformer. La plus simple est de simplement taper une valeur ou une chaîne de caractères, qui peut inclure des fonctions de différents types comme des références d'attributs, des fonctions mathématiques et de chaînes de caractères, et des paramètres d'espace de travail. Il existe un certain nombre d'outils et de raccourcis qui peuvent aider à construire des valeurs, généralement disponibles dans le menu contextuel déroulant adjacent au champ de valeur.

Options - Tables

Les Transformers avec des paramètres de style table possèdent des outils additionnels pour remplir et manipuler des valeurs.

Implémentation

Les opérateurs mathématiques sont basés sur les commandes Tool Command Language TCL.1Tcl et sa documentation sont protégés par les droits d'auteur des Regents of the University of California, de Sun Microsystems, Inc. et d'autres parties. Cependant, les auteurs ont accordé la permission à toute partie de réutiliser et de modifier le code et la documentation, à condition que les détenteurs originaux des droits d'auteur soient reconnus.

arithmetic

FME Community

FME Community iest l'endroit où trouver des démos, des tutoriaux, des articles, des FAQ et bien plus encore. Obtenez des réponses à vos questions, apprenez des autres utilisateurs et suggérez, votez et commentez de nouvelles entités.

Rechercher des exemples et informations à propos de ce Transformer dans FME Community.

Hasklig-Bold.ttf

Hasklig-BoldIt.ttf

Hasklig-Regular.ttf

OpenSans-Bold.ttf

OpenSans-BoldItalic.ttf

OpenSans-Italic.ttf

OpenSans-Regular.ttf

SourceSansPro-Bold.ttf

SourceSansPro-BoldItalic.ttf

SourceSansPro-Italic.ttf

SourceSansPro-Regular.ttf