PARSE

La fonction PARSE analyse un objet de données et le valide par rapport aux métadonnées d'un type de composant. La structure de données en résultant est disponible pour la mappe d'appel en vue d'un traitement approfondi.

L'entrée dans la fonction PARSE peut être n'importe quelle donnée pouvant être traitée en tant qu'objet BLOB de texte, par exemple, le résultat d'un appel de mappe fonctionnelle, une fonction GET ou une mappe RUN.

Syntaxe
PARSE (general_expression)
Signification
PARSE (data_to_parse)
Renvoie
Objet de données mappé dans un fichier de travail

Exemples

La structure de données résultant de la fonction PARSE est disponible pour la mappe d'appel. Lorsque vous utilisez une mappe RUN pour analyser les données, la structure de données en résultant est disponible pour la mappe RUN et non pour la mappe d'appel. En utilisant la fonction PARSE et non l'implémentation de mappe RUN, vous avez moins de mappes à configurer et gérer.

Les exemples suivants :
  1. reçoivent un document d'entrée de l'adaptateur SPE
  2. extraient les objets de données de l'enveloppe de document
  3. renvoient une réponse

Exemple 1 : RUN implémentation de mappe

Dans cet exemple, la mappe DEENVELOPE appelle la mappe RUN nommée DUMPRESPONSE pour extraire les données du document.

La mappe DUMPRESPONSE inclut deux cartes en entrée :
  • SpeResponse (Réponse globale XSD)
  • Test Root (racine de texte)
La carte en sortie de la mappe DUMPRESPONSE inclut la règle suivante :
=WriteDocument(Document:sequence:Documents:sequence:SpeResponse, 
TestRoot;
TEXT(INDEX(Document:sequence:Documents:sequence:SpeResponse))) + "<NL>"
La mappe DEENVELOPE a deux cartes en entrée :
  • DataIn (racine de texte)
  • Test Root (racine de texte)
La mappe DEENVELOPE a deux cartes en sortie :
  • DOCOUTPUT:
    = RUN ("DumpResponse", ECHOIN( 1 , Deenvelope ) + ECHOIN( 2 , TestRoot ) + " -OE1" )
  • DEENVELOPE:
    =VALID(GET("SPE", "-DURL jdbc:derby://localhost:1527/spe2 
    -DBUSER derbyuser -DBPSWD derbypw 
    -DBDRIVER org.apache.derby.jdbc.ClientDriver -DENV", DataIn),
    FAIL ("SPE Deenvelope failed: " + LASTERRORMSG() ))
    
    /*
    =VALID(GET("SPE", "-DURL jdbc:db2://bobdb9.bcr.ibm.com:50000/spetest  
    -DBDRIVER com.ibm.db2.jcc.DB2Driver  -DBUSER spetest  -DBPSWD Seer5r12  
    -DENV  -T ", DataIn),
    FAIL ("SPE Deenvelope failed: " + LASTERRORMSG() ))
    */
    
    /*
    =VALID(GET("SPE", "-DURL jdbc:db2://localhost:60000/SPETEST 
    -DBDRIVER  com.ibm.db2.jcc.DB2Driver -DBUSER fred -DBPSWD org13asd  
    -DENV -T ", DataIn),
    FAIL ("SPE Deenvelope failed: " + LASTERRORMSG() ))
    */

Exemple 2 : PARSE implémentation de fonction

Dans cet exemple, une mappe unique utilise la fonction PARSE pour traiter les deux mappes de l'exemple 1.

La mappe DEENVELOPE_PARSE a deux cartes en entrée :
  • DataIn (racine de texte)
  • Test Root (racine de texte)
La mappe DEENVELOPE_PARSE a deux cartes en sortie :
  • RESPONSEINFO:
    = WriteDocument( Document:sequence:Documents:sequence:SpeResponse, 
    TestRoot, 
    TEXT( INDEX( Document:sequence:Documents:sequence:SpeResponse ) ) ) + "<NL>"
    
    = "Response - Status: " + Status:sequence:SpeResponse + ", 
    Advanced status: " + AdvancedStatus:sequence:SpeResponse + "<NL>"
  • SPERESPONSE (Response Global XSD):
    =PARSE( VALID(GET("SPE", "-DURL jdbc:derby://localhost:1527/spe2 
    -DBUSER derbyuser -DBPSWD derbypw 
    -DBDRIVER org.apache.derby.jdbc.ClientDriver -DENV", DataIn),
    FAIL ("SPE Deenvelope failed: " + LASTERRORMSG() )) )