Configurer un schéma pour un Job "Before Saving/Deleting" - 7.1

Guide utilisateur de Talend Data Fabric Studio

author
Talend Documentation Team
EnrichVersion
7.1
EnrichProdName
Talend Data Fabric
task
Création et développement
EnrichPlatform
Studio Talend

Les noms des Processus Before Saving/Before Deleting sont donnés selon une convention de nommage. Ils ne passent pas par le mécanisme habituel déclencheur > Processus. Un Job appelé via un Processus Before Saving ou Before Deleting reçoit un document différent de ceux appelés par un déclencheur. De plus, ils doivent retourner un rapport de statut et un message d'erreur (seulement pour le Processus Before Saving), que l'Interface Web peut utiliser pour effectuer ou annuler l'action.

Remarque : Le Processus doit toujours retourner une variable appelée output_report.

Input

Le document d'entrée comprend le rapport de mise à jour (update report) ainsi que l'enregistrement à sauvegarder ou à supprimer :

<exchange>
      <report>
      ... update report ...
      </report>
      <item>
      ... record ...
      </item>
</exchange>
Remarque : Vous pouvez toujours trouver la description exacte du schéma d'un rapport de mise à jour dans la vue MDM Repository dans Data Model > System > UpdateReport.

Dans le Job, vous pouvez définir des conditions similaires à celles des déclencheurs. Par exemple, vous pouvez utiliser exchange/report/Update/OperationType pour implémenter différentes conditions sur CREATE et UPDATE.

Sortie

Le Job est requis pour retourner un document conforme à l'un des formats suivants, en fonction du type de message que vous voulez afficher :

  • <report><message type="error">message</message></report>
  • <report><message type="warning">message</message></report>

    (seulement pour le Processus Befove Saving)

  • <report><message type="info">message</message></report>
Remarque : Lorsque vous souhaitez créer un Processus Before Saving qui vérifie une règle de validation et met à jour un enregistrement à la volée, vous devez définir un Processus en deux étapes, une retournant output_item et l'autre retournant output_report.

Les principes de travail pour les Processus Before Saving et Before Deleting peuvent être résumés comme décrit dans les trois cas ci-dessous.

Après l'achèvement du Processus Before Saving ou Before Deleting, le serveur MDM cherche une variable appelée output_report dans le pipeline du Processus.

Premier cas :

  • Si <report><message type="info">message</message></report> : le Processus de validation de l'enregistrement de données a été effectué avec succès et un message va s'afficher. L'enregistrement de données sera sauvegardé avec succès avec le Processus Before Saving, ou supprimé avec succès avec le Processus Before Deleting.

  • Si <report><message type="info">message</message></report> (seulement pour le Processus Before Saving) : le Processus de validation de l'enregistrement de données a été effectué avec succès et un message va s'afficher. Vous pouvez cliquer soit sur OK pour poursuivre le Processus et sauvegarder l'enregistrement, soit sur Cancel pour abandonner le Processus.

  • Si <report><message type="error">message</message></report> : le Processus de validation de l'enregistrement de données échoue et un message s'affiche. L'enregistrement de données ne sera pas sauvegardé avec le Processus Before Saving et ne sera pas supprimé avec le Processus Before Deleting.

Deuxième cas :

Le serveur MDM n'a pas trouvé la variable output_report ou le fragment <error>. Le Processus de validation de l'enregistrement de données a échoué et un message d'erreur va s'afficher pour le confirmer. L'enregistrement de données ne sera pas sauvegardé avec le Processus Before Saving et ne sera pas supprimé avec le Processus Before Deleting.

Troisième cas :

Le Processus présente une exception (l'une des étapes du Processus mène à une erreur technique : mauvaise configuration, erreur de syntaxe XSLT, Job introuvable ou impossible à appeler, etc.) Un message d'erreur technique va s'afficher et l'enregistrement de données ne sera pas sauvegardé avec le Processus Before Saving et ne sera pas supprimé avec le Processus Before Deleting.