Altova MapForce 2024 Enterprise Edition

Lorsque vous créez une FDU, vous devez spécifier quels paramètres d'entrée celle-ci doit prendre (le cas échéant) et quelle sortie elle doit retourner. Alors que des paramètres d'entrée ne sont pas toujours nécessaires, un paramètre de sortie est obligatoire dans tous les cas, c'est-à-dire qu'une fonction doit toujours retourner quelque chose. Les paramètres de fonction peuvent être de type simple (par ex., string ou integer) ou posséder une structure complexe. Par exemple, la fonction définie par l'utilisateur FindArticle illustrée ci-dessous a deux paramètres d'entrée et un de sortie :

 

POArtNr est un paramètre d’entrée de type simple string;

Amount est un paramètre d’entrée de type integer.

CompletePO est un paramètre de sortie de structure complexe XML.

mf_udf_23

Ordre du paramètre

Lorsqu'une FDU a plusieurs paramètres d'entrée ou de sortie, vous pouvez modifier l'ordre dans lequel les paramètres doivent apparaître aux appelants de cette fonction. L’ordre des paramètres dans le mappage de la fonction (en commençant par le haut) dicte l’ordre dans lequel il apparaît aux appelants de la fonction.

 

Important

 

Les paramètres d'entrée et de sortie sont triés par leur position du haut au bas. C'est pourquoi, si vous déplacez le paramètre input3 en haut du mappage de la fonction, il deviendra le premier paramètre de cette fonction.

Si deux paramètres ont la même position verticale, le paramètre le plus à gauche prend la précédence.

Dans le cas inhabituel que deux paramètres ont exactement la même position, l'ID de composant interne est utilisé automatiquement.

 

Structures de type complexe

Les structures sur lesquelles un paramètre dans les FDU peut être basé sont résumées dans la liste ci-dessous.

 

MapForce Basic Edition

Structure de schéma XML

MapForce Professional Edition

Structure de schéma XML

Structure de base de données

MapForce Enterprise Edition

Structure de schéma XML

Structure de base de données

Structure EDI

Structure FlexText

Structure de schéma JSON

 

UDF basées sur les structures de base de données (éditions Professional et Enterprise)

MapForce vous permet de créer des paramètres UDF basés sur BD avec une arborescence de tables associées. L’arborescence de tables associées représente une structure in-memory qui n’a pas de connexion vers la base de données lors de l’exécution. Ceci signifie également qu’il n’y a pas de gestion automatique de la clé étrangère et pas d’actions de table dans les paramètres ou variables.

 

Ajouter des paramètres

Pour ajouter un paramètre d'entrée ou de sortie, suivez les étapes suivantes :

 

1.Créer une FDU ou ouvrir une tâche existante.

2.Exécuter la commande de menu Fonction | Insérer entrée, ou Fonction | Insérer sortie, respectivement (voir la capture d’écran ci-dessous). De manière alternative, cliquez sur mf_ic_udf_input (Insérer entrée) ou mf_ic_udf_output (Insérer sortie) dans la barre d’outils.

mf_udf_08

3.Choisissez si les paramètres d’entrée ou de sortie doivent être de type simple ou complexe (voir la boite de dialogue ci-dessus). Voir la liste des structures complexes disponibles ci-dessous. Par exemple, pour créer un paramètre qui est de type XML complexe, cliquez sur Choisir à côté de Structure et cherchez le schéma XML qui décrit la structure requise.

 

Si le mappage de la fonction contient déjà des schémas XML, ils sont disponibles pour la sélection en tant que structures. Sinon, vous pouvez sélectionner un nouveau schéma qui fournira la structure du paramètre. La même chose vaut pour les bases de données ou autres structures complexes si elles sont prises en charge par votre édition de MapForce. Avec des structures XML, il est possible de sélectionner un élément root pour votre structure, si le schéma XML le permet. Afin de spécifier un élément root, cliquez sur Choisir à côté de Root et sélectionner l'élément root à partir duquel le dialogue qui s'ouvre.

 

Une fois cochée, la case Enregistrer le chemin de fichier de la structure relatif au fichier MFD modifiera le chemin absolu du fichier de structure en un chemin relatif au mappage actuel, lorsque vous enregistrez le mappage. Pour plus d'informations, voir Chemins relatifs et absolus. Les cases à cocher Entrée requise et Entrée est une séquence sont expliquées dans les sous-sections suivantes.

 

L’entrée est requise

Pour rendre un paramètre obligatoire dans une FDU, sélectionnez la case Entrée est requise (voir la boîte de dialogue ci-dessus). Si vous effacez la case à cocher Entrée requise, le paramètre deviendra optionnel et aura une bordure en pointillés dans le mappage.

 

Vous pouvez aussi spécifier une valeur de paramètre par défaut en la connectant à l'entrée par default d'un paramètre (voir l’exemple ci-dessous). La valeur par défaut sera uniquement appliquée s'il n'y a pas d'autre valeur. Si le paramètre optionnel reçoit une valeur lorsque la fonction est appelée, alors cette valeur prend le dessus sur le défaut.

mf_udf_18

L’entrée est une séquence

En option, vous pouvez définir si un paramètre de fonction doit être traité en tant que valeur simple (option par défaut) ou en tant que séquence. Une séquence est une plage de zéro ou de plusieurs valeurs. Une séquence peut être utile quand votre fonction définie par l’utilisateur s’attend à des données d’entrée en tant que séquence afin de calculer les valeurs dans cette séquence, par exemple, en appelant les fonctions telles que avg, min, max. Pour traiter l’entrée du paramètre en tant que séquence, sélectionnez la case à cocher Entrée est une séquence. Veuillez noter que cette boîte à cocher est activée uniquement si la FDU est regular.

 

L’usage d’une séquence est illustrée dans le mappage suivant : MapForceExamples\InputIsSequence.mfd. Dans l’extrait de ce mappage (voir la capture d’écran ci-dessous), le filtre des données est connecté à la FDU appelée Calculer. La sortie du filtre est une séquence d’items. C’est la raison pour laquelle le paramètre d’entrée de la fonction est défini en tant que séquence.

mf_udf_11

Vous trouverez ci-dessous l’illustration de la fonction Calculer qui agrège toutes les valeurs de séquence : Elle exécute toutes les fonctions avg, min, et max dans la séquence d’entrée. Pour voir la structure interne de la fonction Calculer, double-cliquez sur l’en-tête du composant Calculer dans le mappage ci-dessus.

mf_udf_12

En règle générale, les données d'entrée, soit séquence, (séquence ou non séquence) détermine combien de fois la fonction est appelée :

 

Lorsque les données d’entrée sont connectées à un paramètre séquence, la fonction définie par l'utilisateur est appelée uniquement une seule fois et la séquence complète est passée dans la fonction définie par l'utilisateur.

Lorsque les données d’entrée sont connectées à un paramètre non-sequence, la fonction définie par l'utilisateur est appelée une seule fois dans chaque item unique dans la séquence.

Si vous connectez une séquence vide dans un paramètre de non-séquence la fonction ne sera pas appelée du tout. Cela peut se produire si la structure de source dispose d'items optionnels ou si une condition de filtre ne retourne pas d'items correspondants. Pour éviter ceci, utilisez la fonction substitute-missing avant l’entrée de fonction pour assurer que la séquence n’est jamais vide. En alternative, spécifiez le paramètre comme a séquence et ajoutez la gestion pour la séquence vide à l’intérieur de la fonction.

 

La case à cocher Sortie est une séquence peut aussi être nécessaire pour des paramètres de sortie. Lorsqu'une fonction passe une séquence de plusieurs valeurs dans son composant de sortie, et que le composant de sortie n'est pas défini sur séquence, la fonction ne retournera que le premier item dans la séquence.

 

© 2018-2024 Altova GmbH