XMLStreamingBuilder - Dans le champ d’application

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 6 minutes de lecture
  • Crée un objet de générateur pour générer une charge utile XML volumineuse à utiliser dans une demande REST ou SOAP pour envoyer des données en bloc à une API tierce. Vous pouvez également créer la charge utile sous la forme d’une chaîne XML pour une option autre que la diffusion en continu.

    Utilisez ces méthodes dans une Studio de workflow étape de script avec l’identificateur d’espace de noms sn_ih. Par exemple, vous pouvez utiliser cette API pour créer une charge utile XML dans l’étape Studio de workflow Script et transmettre la valeur renvoyée à l’étape REST pour envoyer la demande à un service tiers. Pour plus d’informations, reportez-vous à Studio de workflow l’étape Script.
    Remarque :
    Vous ne pouvez utiliser cette API que dans l’environnement Studio de workflow .

    Ordre d’appel d’API

    Générez des charges utiles XML en instanciant d’abord un objet de générateur avec XMLStreamingBuilder , puis en appelant les méthodes de la classe XMLStreamingAPI :

    1. XMLStreamingBuilder : Crée un objet de générateur
    Utilisez ces méthodes dans l’ordre suivant pour créer un objet de générateur :
    1. XMLStreamingBuilder() : instancie l’objet XMLStreamingBuilder.
    2. withAttachment() : Facultatif. Crée un document XML en tant que pièce jointe et le stocke dans la table Pièces jointes en continu [streaming_attachment]. Si vous n’appelez pas cette méthode, l’API génère la charge utile sous la forme d’une chaîne XML.
    3. expiresAt() : Optionnel. Définit une heure à laquelle la pièce jointe expire. False est la valeur par défaut. Doit également appeler la méthode withAttachment().
    4. build() : Renvoie un objet XMLStreamingAPI.
    2. XMLStreamingAPI : construit la charge utile XML
    Utilisez ces méthodes dans l’ordre suivant pour créer la charge utile XML :
    1. startDocument() : crée l’élément parent de niveau supérieur dans le document XML.
    2. Méthodes permettant de générer des éléments enfants dans le document XML, telles que writeTextElement(),startElement() et writeArray().
    3. Méthodes permettant de générer des attributs pour un élément, telles que writeAttribute(),writeNamespace() et writeDtd().
    4. endElement() : ferme un élément XML.
    5. endDocument : ferme l’élément parent de niveau supérieur.
    6. getXMLString() ou getAttachmentId() : renvoie la chaîne XML ou l’ID de pièce jointe que vous avez créé.
    7. close() : ferme l’objet XMLStreamingAPI.

    Limites de taille

    Les charges utiles générées via cette API ne peuvent pas dépasser ces limites de taille :

    • Pièces jointes : 200 Mo
    • Chaînes : 5 Mo

    L’exemple suivant montre comment créer un document XML et le stocker dans la table Pièces jointes en continu [streaming_attachment] avec une date d’expiration définie.

    
    try {
      var ttl = new GlideDateTime("2011-01-01 12:00:00");
      var builder = new sn_ih.XMLStreamingBuilder()
        .withAttachment() // Creates the XML document in streaming mode within an attachment.
        .expiresAt(ttl) // Sets an expiration date for the attachment.
        .build(); // Creates the XMLStreamingAPI object.
    
      builder.startDocument("Employee") // Begins generating the XML document.
        .writeTextElement("firstName","John") // Writes a "firstName" element and value.
        .writeTextElement("lastName","Smith")
        .writeTextElement("age","25")
        .startElement("address") // Adds an "address" parent element.
          .writeTextElement("streetAddress", "21 2nd Street") // Writes a child element and value.
          .writeTextElement("city", "Santa Clara")
          .writeTextElement("state", "CA")
          .writeTextElement("postalCode", "11111")
        .endElement() // Adds a closing tag for the "address" element.
        .startElement("phoneNumber")
          .writeTextElement("type","home")
          .writeTextElement("number","212 555-1234")
          .writeTextElement("type","fax")
          .writeTextElement("number","646 555-4567")
        .endElement()
      .endDocument() // Stops generating the XML document.
          
      gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
    } catch (err) {
      gs.log(err);
    } finally {
      builder.close();
    }

    Cet exemple montre également comment utiliser l’API dans l’étape Script et créer la charge utile en tant que chaîne XML. Vous pouvez utiliser cette option pour créer des charges utiles de moins de 5 Mo.

    (function execute(inputs, outputs) {
    
      var builder = new sn_ih.XMLStreamingBuilder().build();
      
      builder.startDocument("Employee")
        .enablePrettyPrint()
        .writeTextElement("firstName","John")
        .writeTextElement("lastName","Smith")
        .writeTextElement("age","25")
        .startElement("address")
          .writeTextElement("streetAddress", "21 2nd Street")
          .writeTextElement("city", "Santa Clara")
          .writeTextElement("state", "CA")
          .writeTextElement("postalCode", "11111")
        .endElement()
        .startElement("phoneNumber")
          .writeTextElement("type","home")
          .writeTextElement("number","212 555-1234")
          .writeTextElement("type","fax")
          .writeTextElement("number","646 555-4567")
        .endElement()
      .endDocument()
    
      outputs.payload = builder.getXMLString();
      
    })(inputs, outputs);

    Sortie :

    <?xml version="1.0" encoding="UTF-8"?>
    <firstName>John</firstName>
    <lastName>Smith</lastName>
    <age>25</age>
    <address>
      <streetAddress>21 2nd Street</streetAddress>
      <city>Santa Clara</city>
      <state>CA</state>
      <postalCode>11111</postalCode>
    </address>
    <phoneNumber>
      <type>home</type>
      <number>212 555-1234</number>
      <type>fax</type>
      <number>646 555-4567</number>
    </phoneNumber>

    XMLStreamingBuilder : XMLStreamingBuilder()

    Instancie l’objet XMLStreamingBuilder.

    Tableau 1. Paramètres
    Nom Type Description
    Aucun

    Cet exemple montre comment instancier un objet de générateur .

    var builder = new sn_ih.XMLStreamingBuilder()

    XMLStreamingBuilder : build()

    Renvoie un objet XMLStreamingAPI.

    Tableau 2. Paramètres
    Nom Type Description
    Aucun
    Tableau 3. Renvoie
    Type Description
    XMLStreamingAPI Objet XML de diffusion en continu pour la construction de la charge utile.

    L’exemple suivant montre comment créer un document XML et le stocker dans la table Pièces jointes en continu [streaming_attachment] avec une date d’expiration définie.

    
    try {
      var ttl = new GlideDateTime("2011-01-01 12:00:00");
      var builder = new sn_ih.XMLStreamingBuilder()
        .withAttachment() // Creates the XML document in streaming mode within an attachment.
        .expiresAt(ttl) // Sets an expiration date for the attachment.
        .build(); // Creates the XMLStreamingAPI object.
    
      builder.startDocument("Employee") // Begins generating the XML document.
        .writeTextElement("firstName","John") // Writes a "firstName" element and value.
        .writeTextElement("lastName","Smith")
        .writeTextElement("age","25")
        .startElement("address") // Adds an "address" parent element.
          .writeTextElement("streetAddress", "21 2nd Street") // Writes a child element and value.
          .writeTextElement("city", "Santa Clara")
          .writeTextElement("state", "CA")
          .writeTextElement("postalCode", "11111")
        .endElement() // Adds a closing tag for the "address" element.
        .startElement("phoneNumber")
          .writeTextElement("type","home")
          .writeTextElement("number","212 555-1234")
          .writeTextElement("type","fax")
          .writeTextElement("number","646 555-4567")
        .endElement()
      .endDocument() // Stops generating the XML document.
          
      gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
    } catch (err) {
      gs.log(err);
    } finally {
      builder.close();
    }

    XMLStreamingBuilder - expiresAt(Object expiresAt)

    Définit une heure à laquelle la pièce jointe expire. Doit également appeler la méthode withAttachment().

    Tableau 4. Paramètres
    Nom Type Description
    expire à GlideDateTime Objet défini à l’expiration de la pièce jointe.
    • Valeur minimale : 7 200 secondes, ou deux heures, à partir du moment où la pièce jointe est créée. Il s’agit de la valeur par défaut si vous n’appelez pas la méthode expiresAt().
    • Valeur maximale : 172 800 secondes, soit 48 heures, à partir du moment où la pièce jointe est créée.
    Tableau 5. Renvoie
    Type Description
    XMLStreamingBuilder Objet de générateur utilisé pour initier la charge utile XML.

    L’exemple suivant montre comment créer un document XML et le stocker dans la table Pièces jointes en continu [streaming_attachment] avec une date d’expiration définie.

    
    try {
      var ttl = new GlideDateTime("2011-01-01 12:00:00");
      var builder = new sn_ih.XMLStreamingBuilder()
        .withAttachment() // Creates the XML document in streaming mode within an attachment.
        .expiresAt(ttl) // Sets an expiration date for the attachment.
        .build(); // Creates the XMLStreamingAPI object.
    
      builder.startDocument("Employee") // Begins generating the XML document.
        .writeTextElement("firstName","John") // Writes a "firstName" element and value.
        .writeTextElement("lastName","Smith")
        .writeTextElement("age","25")
        .startElement("address") // Adds an "address" parent element.
          .writeTextElement("streetAddress", "21 2nd Street") // Writes a child element and value.
          .writeTextElement("city", "Santa Clara")
          .writeTextElement("state", "CA")
          .writeTextElement("postalCode", "11111")
        .endElement() // Adds a closing tag for the "address" element.
        .startElement("phoneNumber")
          .writeTextElement("type","home")
          .writeTextElement("number","212 555-1234")
          .writeTextElement("type","fax")
          .writeTextElement("number","646 555-4567")
        .endElement()
      .endDocument() // Stops generating the XML document.
          
      gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
    } catch (err) {
      gs.log(err);
    } finally {
      builder.close();
    }

    XMLStreamingBuilder : withAttachment()

    Crée un document XML en tant que pièce jointe et le stocke dans la table Pièces jointes en continu [streaming_attachment]. Si vous n’appelez pas cette méthode, l’API crée le document XML sous forme de chaîne.

    Tableau 6. Paramètres
    Nom Type Description
    Aucun
    Tableau 7. Renvoie
    Type Description
    XMLStreamingBuilder Objet de générateur utilisé pour initier la charge utile XML.

    L’exemple suivant montre comment créer un document XML et le stocker dans la table Pièces jointes en continu [streaming_attachment] avec une date d’expiration définie.

    
    try {
      var ttl = new GlideDateTime("2011-01-01 12:00:00");
      var builder = new sn_ih.XMLStreamingBuilder()
        .withAttachment() // Creates the XML document in streaming mode within an attachment.
        .expiresAt(ttl) // Sets an expiration date for the attachment.
        .build(); // Creates the XMLStreamingAPI object.
    
      builder.startDocument("Employee") // Begins generating the XML document.
        .writeTextElement("firstName","John") // Writes a "firstName" element and value.
        .writeTextElement("lastName","Smith")
        .writeTextElement("age","25")
        .startElement("address") // Adds an "address" parent element.
          .writeTextElement("streetAddress", "21 2nd Street") // Writes a child element and value.
          .writeTextElement("city", "Santa Clara")
          .writeTextElement("state", "CA")
          .writeTextElement("postalCode", "11111")
        .endElement() // Adds a closing tag for the "address" element.
        .startElement("phoneNumber")
          .writeTextElement("type","home")
          .writeTextElement("number","212 555-1234")
          .writeTextElement("type","fax")
          .writeTextElement("number","646 555-4567")
        .endElement()
      .endDocument() // Stops generating the XML document.
          
      gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
    } catch (err) {
      gs.log(err);
    } finally {
      builder.close();
    }

    Cet exemple montre comment construire la charge utile XML et l’enregistrer en tant que chaîne.

    (function execute(inputs, outputs) {
    
      var builder = new sn_ih.XMLStreamingBuilder().build();
      
      builder.startDocument("Employee")
        .enablePrettyPrint()
        .writeTextElement("firstName","John")
        .writeTextElement("lastName","Smith")
        .writeTextElement("age","25")
        .startElement("address")
          .writeTextElement("streetAddress", "21 2nd Street")
          .writeTextElement("city", "Santa Clara")
          .writeTextElement("state", "CA")
          .writeTextElement("postalCode", "11111")
        .endElement()
        .startElement("phoneNumber")
          .writeTextElement("type","home")
          .writeTextElement("number","212 555-1234")
          .writeTextElement("type","fax")
          .writeTextElement("number","646 555-4567")
        .endElement()
      .endDocument()
    
      outputs.payload = builder.getXMLString();
      
    })(inputs, outputs);

    Sortie :

    <?xml version="1.0" encoding="UTF-8"?>
    <firstName>John</firstName>
    <lastName>Smith</lastName>
    <age>25</age>
    <address>
      <streetAddress>21 2nd Street</streetAddress>
      <city>Santa Clara</city>
      <state>CA</state>
      <postalCode>11111</postalCode>
    </address>
    <phoneNumber>
      <type>home</type>
      <number>212 555-1234</number>
      <type>fax</type>
      <number>646 555-4567</number>
    </phoneNumber>