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

Appel du service Web REST de la MetaServlet pour exécuter une tâche

Dans le scénario suivant, un Job créé dans le Studio Talend invoque le service Web REST de la MetaServlet pour exécuter une tâche spécifique dans Talend Administration Center.

Avant de commencer

Assurez-vous qu'une tâche existante est disponible dans la page Job Conductor de Talend Administration Center.

Capture d'écran du Job dans l'espace de modélisation graphique.

Déposer et relier les composants

Procedure

  1. Placez les composants suivants de la Palette dans l'espace de modélisation graphique :
    • un tSetGlobalVar,
    • un tREST,
    • et un tLogRow.
  2. Reliez le composant tREST au composant tLogRow à l'aide d'un lien de type Row > Main.
  3. Reliez le composant tSetGlobalVar au composant tREST à l'aide d'un lien de type Trigger > OnSubjobOK.

Configurer les variables de contexte

Vous devez définir les variables qui seront utilisées pour appeler le service Web REST de la MetaServlet.

Procedure

  1. Dans la vue Context, cliquez sur le bouton [+] à quatre reprises pour ajouter quatre variables.
  2. Nommez ces variables tac_url, tac_user, tac_pwd et task_id.
  3. Dans le champ Value, sous le contexte Default, saisissez les valeurs des variables :
    • Pour la variable tac_url, saisissez l'URL de l'application Web Talend Administration Center, http://localhost:8080/org.talend.administrator par exemple.
    • Pour la variable tac_user, saisissez le nom utilisateur administrateur de l'application Web Talend Administration Center, admin@company.com par exemple.
    • Pour la variable tac_pwd, saisissez le mot de passe administrateur de l'application Web Talend Administration Center, admin par exemple.
    • Pour la variable task_id, saisissez l'identifiant de la tâche que vous souhaitez générer, 1 par exemple.
  4. Appuyez sur les touches Ctrl+S pour enregistrer vos modifications.

Configurer la Routine

Vous devez définir une routine personnalisée qui encode les paramètres de la MetaServlet en base64 afin de les transmettre à l'API REST. Cette routine sera appelée dans le Job.

Procedure

  1. Dans la vue Repository, cliquez sur Code pour accéder aux Routines.
  2. Puis cliquez-droit sur Routines et sélectionnez Create Routine.
  3. La boîte de dialogue New routine s'ouvre. Saisissez les informations requises pour créer la routine, puis cliquez sur Finish pour aller à l'étape suivante.

    La nouvelle routine apparaît dans l'arborescence du Repository, directement sous le nœud Routines. L'espace de travail s'ouvre sur un modèle de routine contenant par défaut un exemple simple, composé d'un commentaire en bleu, suivi du code correspondant.

  4. Au début, juste après la ligne de code package routines, ajoutez ce qui suit :

    import com.sun.org.apache.xml.internal.security.utils.Base64;

    Pour ce faire, commencez à saisir ce qui suit et appuyez sur Ctrl+Espace pour ouvrir la liste des modèles, puis sélectionnez com.sun.org.apache.xml.internal.security.utils.*; et remplacez le signe * par Base64.

  5. Modifiez la fin du modèle avec votre propre code :
    public static String base64Encode(String message) {
    
        	return message==null ? null : "" + Base64.encode(message.getBytes()).replace("\n", "");
        }
    public static void main(String[] args) {
        	String tmp = "{\"actionName\":\"runTask\",\"taskId\":\"1\",\"mode\":\"synchronous\",
    \"authPass\":\"talend\",\"authUser\":\"talend@talend.com\"}";
    
        	System.out.println("Base 64: " + base64Encode(tmp));
        }
    }

    Ceci vous permet d'encoder l'action runTask de la MetaServlet en base64.

    Pour plus d'informations concernant les paramètres et les actions disponibles dans la MetaServlet, consultez Commandes de l'API de la MetaServlet de Talend Administration Center.

Configurer les composants pour appeler le service Web REST de la MetaServlet pour exécuter une tâche

Procedure

  1. Double-cliquez sur le composant tSetGlobalVar pour afficher sa vue Basic settings dans l'onglet Component.
  2. Cliquez sur le bouton [+] pour ajouter une ligne dans le tableau Variables :
    • Dans le champ Key, saisissez jsonEncoded

    • Dans les champs Value, saisissez :

      MetaServlet.base64Encode("{\"actionName\":\"runTask\",\"taskId\":\"" + context.task_id + "\",\"mode\"
      :\"synchronous\",\"context\":{\"Default\":\"" + ((String)globalMap.get("tMsgBox_1_RESULT")) + "\"},
      \"authPass\":\"" + context.tac_pwd + "\",\"authUser\":\"" + context.tac_user + "\"}") 

      pour appeler la routine précédemment créée.

  3. Double-cliquez sur le composant tREST pour afficher sa vue Basic settings.
  4. Renseignez le champ URL avec l'URL du service Web que vous souhaitez invoquer. Pour ce scénario, saisissez :
    context.tac_url + "/metaServlet?" +((String)globalMap.get("jsonEncoded"))

    pour appeler le service et encoder les paramètres de la MetaServlet au format JSON.

  5. Dans la liste HTTP Method, sélectionnez GET pour envoyer la requête HTTP pour générer une tâche.
    Ainsi, la MetaServlet est invoquée via l'API REST de Talend Administration Center avec les paramètres requis.
  6. Dans la vue Basic settings du composant tLogRow, sélectionnez l'option Basic pour afficher le résultat dans la console Run.
  7. Enregistrez votre Job et appuyez sur F6 pour l'exécuter.

Results

La console indique que le composant tREST a envoyé une requête HTTP côté serveur pour exécuter la tâche spécifiée et que cette tâche a été exécutée sans erreur.

Capture d'écran de la console après l'exécution réussie du Job.

Dans la page Job Conductor de Talend Administration Center, le statut de la tâche est ready to run.

Capture d'écran de la page Job Conductor.

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 – faites-le-nous savoir.