Accéder au contenu principal Passer au contenu complémentaire

Utiliser des beans et des routines dans une map DSQL

Availability-noteBêta
Utilisez la fonction java:call pour appeler des routines globales et personnalisées dans une map DSQL. Cet exemple n'utilise que des routines, mais vous pouvez utiliser la même méthode pour appeler des beans.

Avant de commencer

  • Vous avez créé des structures d'entrée et de sortie. Vous pouvez utiliser les échantillons JSON ci-dessous pour créer vos structures.

Pourquoi et quand exécuter cette tâche

Dans cet exemple, vous avez un tableau d'objets contenant chacun deux chaînes de caractères. La chaîne de caractères untrimmed contient des espaces en trop devant être supprimés par une routine globale. Pour la chaîne de caractères ordered, vous allez créer une routine personnalisée pour inverser l'ordre des lettres.

Les données d'entrée ressemblent à ceci :
[
    {
        "untrimmed": " extra spaces before and after  ",
        "ordered": "abcdefgh"
    },
    {
        "untrimmed": " extra spaces before",
        "ordered": "ijklmno"
    },
    {
        "untrimmed": "extra spaces after     ",
        "ordered": "pqrstuvwxyz"
    }
]
La structure de sortie ressemble à ceci :
[
    {
        "trimmed": "",
        "reversed": ""
    }
]

Procédure

  1. Créer une routine personnalisée pour inverser une chaîne de caractères :
    1. Ouvrez la perspective Integration et développez le nœud Code dans l'onglet Repository (Référentiel).
    2. Cliquez-droit sur Custom Routine Jars (JAR de routines personnalisées), cliquez sur Create Routine Jar (Créer un JAR de routine) et nommez le fichier dsqlmap.
    3. Cliquez-droit sur dsqlmap, sélectionnez Create routine (Créer une routine) et nommez la routine StringUtils.
    4. Remplacez la méthode pour l'échantillon helloExample dans la routine par le code suivant et sauvegardez.
      public static String reverse(String s) {
          return new StringBuilder(s).reverse().toString();
          }
  2. Ouvrez le menu Window (Fenêtre) > Preferences (Préférences) > Mapping et cochez la case Enable java function calls in DSQL Maps (Activer les appels de fonctions Java dans les maps DSQL).
    Cette option est désactivée par défaut pour des raisons de sécurité.
  3. Créez une DSQL Map (Map DSQL) et ajoutez les structures d'entrée et de sortie.
  4. Cliquez sur l'élément de sortie trimmed et saisissez l'expression suivante pour appeler la méthode TRIM dans la routine globale StringHandling.
    java:call('routines.StringHandling', 'TRIM', untrimmed)
    Cette fonction nécessite au moins deux paramètres :
    • le nom complet de la classe de la routine,
    • la méthode à appeler.
    En plus de ces paramètres, vous pouvez ajouter tout paramètre attendu par la méthode. Dans ce cas, la méthode attend une chaîne de caractères, vous pouvez donc ajouter une référence à l'élément d'entrée untrimmed.
  5. Cliquez sur l'élément de sortie reversed et ajoutez l'expression suivante pour appeler votre routine personnalisée :
    java:call('org.example.<yourproject>.routinesjar.dsqlmap.StringUtils', 'reverse', ordered)

    Dans cet appel, <yourproject> doit être remplacé par le nom de votre projet dans le Studio Talend. Vous pouvez également examiner la ligne au début de votre routine pour voir son nom de classe complet.

Résultats

La map est configurée pour appeler les deux fonctions Java. Vous pouvez utiliser la fonction Test Run (Exécution de test) afin de tester la map. Dans ce cas, le résultat suivant est retourné :
[
   {
      "trimmed": "extra spaces before and after",
      "reversed": "hgfedcba"
   },
   {
      "trimmed": "extra spaces before",
      "reversed": "onmlkji"
   },
   {
      "trimmed": "extra spaces after",
      "reversed": "zyxwvutsrqp"
   }
]

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !