Rubrique précédente: Procédure d'utilisation du protocole de données de copybookRubrique suivante: Logique de correspondance


Fichier de mappage de charges utiles

Le fichier de mappage de charges utiles est un document XML qui décrit la mise en correspondance des charges utiles entrantes avec leur copybook correspondant. Le fichier de mappages de charges utiles est également appelé payload copybook mapping (mappage de copybook de charge utile) et payload to copybook file definition map (mappage de charges utiles vers les définitions de fichier de copybook). Ce fichier fournit également des conseils sur la structure du XML obtenu à des fins de clarification pour l'utilisateur.

Exemple

Un exemple de fichier de mappage est disponible ici. Ce fichier contient des exemples de différentes configurations et de commentaires, décrivant chacun des attributs sur chaque noeud. Cet exemple de fichier est fourni à titre de référence pour la création de vos fichiers de mappage de copybook.

Structure

L'exemple suivant illustre la structure du fichier de mappage de charges utiles de base. Par souci de simplicité, cet exemple ne contient aucun attribut de valeurs.

<payloads>
  <payload>
    <key></key> 
    <section>
      <copybook></copybook>
      ...
    </section>
    ...     
  </payload>
  <payload>
    ...
  </payload>     
</payloads>
 
<payloads>

Noeud XML racine du document. Vous ne pouvez pas répéter ce noeud.

<payload>

L'ensemble de cet élément décrit de manière complète une charge utile correspondante. Lorsqu'une charge utile est déterminée comme correspondant à un élément <payload> dans ce document, l'élément <payload> est utilisé pour décrire la charge utile entrante.

<key>

(Facultatif) Cette option rend le document XML plus lisible. Tous les détails que vous spécifiez dans cet élément peuvent également être spécifiés comme attributs dans l'élément <payload>.

<section>

Groupement logique de copybooks qui définit une partie de la charge utile. S'il existe plusieurs éléments <section>, ils seront traités dans l'ordre sans répétition.

<copybook>

Copybook unique qui décrit ou non un enregistrement dans la charge utile. Un élément <section> peut contenir plusieurs éléments <copybook>.

 <payload>

Un élément <payload> peut contenir les attributs suivants :

<payload name="TEST" type="request" matchType="all" key="reqKey" value="reqVal" keyStart="3" keyEnd="6" headerBytes="0" footerBytes="0" saveHeaderFooter="false" definesResponse="false">
    ...
</payload>

Attribute (Attribut)

Requis/facultatif

Description

name

Obligatoire

Définit un nom unique permettant d'identifier le type de demande décrite ici. Name doit être unique parmi l'ensemble des charges utiles du même type (à savoir, demande ou réponse).

type

Obligatoire

Spécifie le type de charge utile.

Valeur - il s'agira de l'une des options suivantes :

  • requête
  • response

matchType

Facultatif

L'attribut matchType s'applique différemment aux définitions de charge utile de type réponse. Par exemple, les réponses ne contiennent pas d'arguments ni de noms d'opération. Si une définition de charge utile de type réponse définit cet attribut sur argument, attribute ou operation, elle ne correspondra jamais à aucun élément (sauf si la demande correspondant définit definesResponse sur true, qui remplace cet attribut). Si une définition de charge utile de type réponse définit cet attribut sur all (tout), les phases argument, attribute et operation de correspondance seront ignorées.

Valeur - il s'agira de l'une des options suivantes :

  • argument : tentative de correspondance avec l'argument spécifié uniquement
  • attribute : tentative de correspondance avec l'attribut spécifié uniquement
  • metaData : tentative de correspondance avec les métadonnées spécifiées uniquement
  • operation : tentative de correspondance avec le nom d'opération uniquement
  • payload : tentative de correspondance avec le corps de la demande
  • all : tentative de correspondance dans l'ordre suivant : argument, attribut, metaData, operation et payload

Valeur par défaut : payload (charge utile)

clé

Obligatoire

Le comportement de cet attribut change selon le matchType (Type de correspondance) :

  • Si matchType (Type de correspondance) est operation ou payload (charge utile), la valeur de cet attribut sera utilisée pour la correspondance.
  • Si matchType (Type de correspondance) est argument, attribute, metaData (Métadonnées), ou all (tout), la valeur de cet attribut est considérée comme la clé d'une entrée argument, attribute, ou metaData (Métadonnées). Si la valeur de matchType est all (tout), la valeur key (clé) ne sera pas utilisée pour correspondre avec operationName (nom de l'opération) ou le corps de charge utile. L'attribut value (valeur) sera utilisé à la place.

valeur

Optional/Required

matchType définit le comportement de cet attribut et indique s'il est requis ou non :

  • Si matchType est défini sur operation ou payload (charge utile), la valeur de cet attribut sera ignorée et peut être exclue.
  • Si matchType est défini sur argument, attribute, ou metaData, cet attribut sera considéré comme la valeur d'une entrée argument, attribute, ou metaData et sera requis pour la correspondance.
  • Si matchType est all (tout), cet attribut sera requis et son comportement sera identique à celui décrit pour les phases de correspondance argument, attribute et metaData. Toutefois, pendant les phases de correspondance operation et payload (charge utile), la valeur de cet attribut sera utilisée pour la correspondance (par opposition à l'utilisation de la valeur de l'attribut key comme c'est le cas lorsque matchType est défini sur operation ou payload).

keyStart

Facultatif

Désigne la position de démarrage de la recherche de la clé dans la charge utile (index démarrant à partir de 1). La recherche inclut cette valeur.

  • Si vous définissez keyStart sur 1, la recherche commencera par le premier octet.
  • Si vous ne définissez pas keyStart, la recherche sera effectuée dans la charge utile complète et keyEnd sera ignorée.
  • Si KeyStart est défini sur un nombre inférieur à 1, la valeur sera traitée comme 1.
  • Si KeyStart est défini sur un nombre supérieur à la longueur de la charge utile, la recherche sera effectuée dans la charge utile complète et la valeur de keyEnd sera ignorée.
  • Si KeyStart est défini sur une valeur égale ou supérieure à keyEnd, la recherche sera effectuée dans la charge utile complète.
  • Si le résultat de keyEnd - keyStart est inférieur à la longueur de la clé, la recherche sera effectuée dans la charge utile complète.

keyEnd

Facultatif

Désigne la position de fin de la recherche de la clé dans la charge utile (index démarrant à partir de 1). La recherche exclut cette valeur.

  • Si vous définissez keyEnd sur 3, seuls les octets 1 et 2 seront recherchés.
  • Si cette valeur n'est pas fournie, la recherche démarrera à partir de la valeur de keyStart et se terminera à la fin de la charge utile.
  • Si cette valeur est supérieure à la longueur de la charge utile, la recherche se terminera à la fin de la charge utile.
  • Si cette valeur est égale ou inférieure à keyStart la recherche sera effectuée dans la charge utile complète.
  • Si le résultat de keyEnd - keyStart est inférieur à la longueur de la clé, la recherche sera effectuée dans la charge utile complète.

headerBytes

Facultatif

Désigne le nombre d'octets à supprimer à partir du début de la charge utile. Par défaut, cette valeur est définie sur 0, si vous ne fournissez aucune valeur. Si l'attribut est présent, sa valeur doit être un nombre entier valide.

footerBytes

Facultatif

Désigne le nombre d'octets à supprimer à partir de la fin de la charge utile. Par défaut, cette valeur est définie sur 0, si vous ne fournissez aucune valeur. Si l'attribut est présent, sa valeur doit être un nombre entier valide.

saveHeaderFooter

Facultatif

Spécifie si les octets de l'en-tête et du pied de page supprimés seront conservés dans la version XML de la demande sous forme de chaînes hexadécimales sous les balises rawHeader et rawFooter.

Valeurs :

  • true : conserve les octets de l'en-tête et du pied de page supprimés.
  • false : ne conserve pas les octets de l'en-tête et du pied de page supprimés.

Valeur par défaut : false

definesResponse

Facultatif

Si cet attribut est défini sur true, la réponse pour cette demande recherchera un élément de charge utile avec un nom identique, mais de type response. Cet attribut sera ignoré si le type est response.

Valeur par défaut : false

Vous pouvez utiliser l'élément <key> facultatif pour remplacer les attributs liés aux clés. Pour améliorer la lisibilité, l'exemple de l'élément <payload> précédemment décrit peut également être écrit de la manière suivante :

<payload name="TEST" type="request" headerBytes="0" footerBytes="0" saveHeaderFooter="false" definesResponse="false">
    <key matchType="all" value="reqVal" keyStart="3" keyEnd="6">reqKey</key>
    ...
</payload>

 

<section>

Exemple : Voici un exemple d'élément de section, avec tous les attributs qu'il contient ainsi que leur description.

...
<section name="Body">
    ...
</section>
...     

 

Attribute (Attribut)

Obligatoire

Description

name

Obligatoire

Définit le nom d'un élément XML de groupement dans la version de sortie XML de la charge utile. Un ou plusieurs éléments de copybook convertis figureront dessous.

 

<copybook>

Exemple : Voici un exemple d'élément de copybook, avec tous les attributs qu'il contient ainsi que leur description.

...
<copybook key="cpk" order="1" max="1" name="TESTRECORD" length-field="SOME-ID">TESTIN.CPY.TXT</copybook>
...

 

Attribute (Attribut)

Obligatoire

Description

clé

Obligatoire

Définit la chaîne unique dans l'enregistrement qui identifie le copybook. Techniquement, cet attribut est facultatif. Toutefois, si une clé n'est pas fournie, cela signifie que ce copybook sera le seul attribut qui pourra être appliqué à la charge utile. Il sera appliqué en continue jusqu'à ce que la charge utile ne contienne plus d'octets. Si plusieurs éléments de copybook ne disposent d'aucune clé, le premier sera toujours utilisé, sauf si l'attribut max est spécifié.

order

Facultatif

Définit un indice sur l'ordre de recherche des enregistrements dans la charge utile. Les numéros utilisés sont inappropriés, mais d'autres enregistrements ultérieurs dans la charge utile utiliseront un nombre entier supérieur. Vous pouvez baliser plusieurs copybooks avec le même numéro d'ordre, pour indiquer que ces enregistrements peuvent être présentés dans un ordre quelconque. Lorsqu'un enregistrement est détecté avec un numéro d'ordre donné, les recherches ultérieures concerneront uniquement des copybooks portant ce numéro d'ordre et un numéro supérieur. Il est possible d'inclure des copybooks dans un groupe qui ne correspondra jamais à la charge utile. Ils seront simplement ignorés. Toutefois, cela affecte les performances, car chaque copybook doit être vérifié.

Valeur par défaut : 0

max

Facultatif

Définit le nombre d'applications d'un copybook à la charge utile. Les valeurs vides, les nombres négatifs, les valeurs autres qu'un nombre ou inexistantes et 0 seront considérés comme aucune limite.

name

Facultatif

Définit une valeur pour remplacer le nom d'un enregistrement (c'est-à-dire, le niveau racine dans le copybook).

  • Si cette valeur est définie, le noeud généré dans le XML pour ce copybook utilisera ce nom au lieu du nom d'enregistrement dans la définition du copybook.
  • Si vous ne définissez pas cette valeur, par défaut le nom d'enregistrement sera recherché dans la définition du copybook et utilisé.
  • Si vous définissez cette valeur sur le nom de l'enregistrement dans la définition de copybook, seule la lisibilité de ce fichier sera affectée.

length-field

Facultatif

Définit la méthode de fractionnement de la charge utile de sorte que la recherche de l'enregistrement suivant commence à l'endroit correct.

Si cet attribut n'est pas présent, le processeur tente de déterminer la longueur du copybook à partir de la définition. Si, pour une quelconque raison, la longueur ne peut pas être déterminée, le processeur considérera que le reste de la charge utile s'applique à ce copybook et mettra fin au traitement après l'application de ce copybook. S'il ne s'agit pas d'un champ numérique d'affichage non signé, le processeur l'ignorera.