Show Menu
SUJETS×

Structure d'un schéma

La structure de base d’un <srcschema> est la suivante :
<srcSchema>
    <enumeration>
        ...          //definition of enumerations
    </enumeration>
   
    <element>         //definition of the root <element>    (mandatory)

        <compute-string/>  //definition of a compute-string
        <dbindex>
            ...        //definition of indexes
        </dbindex>
        <key>
            ...        //definition of keys
        </key>
        <sysFilter>
            ...           //definition of filters
        </sysFilter>
        <attribute>
            ...             //definition of fields
        </attribute>
    
            <element>           //definition of sub-<element> 
                  <attribute>           //(collection, links or XML)
                  ...                         //and additional fields
                  </attribute>
                ...
            </element>
      
    </element> 

        <methods>                 //definition of SOAP methods
            <method>
                ...
            </method>
            ...
    </methods>  
          
</srcSchema>

Le document XML d'un schéma de données doit contenir l'élément racine <srcschema> avec les attributs name et namespace pour renseigner respectivement le nom du schéma et son espace de nommage.
<srcSchema name="schema_name" namespace="namespace">
...
</srcSchema>

Pour illustrer la structure d'un schéma de données, nous partirons du contenu XML suivant :
<recipient email="John.doe@aol.com" created="2009/03/12" gender="1"> 
  <location city="London"/>
</recipient>

Avec son schéma de données correspondant :
<srcSchema name="recipient" namespace="cus">
  <element name="recipient">
    <attribute name="email"/>
    <attribute name="created"/>
    <attribute name="gender"/>
    <element name="location">
      <attribute name="city"/>
   </element>
  </element>
</srcSchema>

Description

Le point d'entrée du schéma est son élément principal. Il est facilement identifiable car son nom est identique à celui du schéma et il doit être fils de l'élément racine. C'est à partir de cet élément que commence la description du contenu.
Dans notre exemple, l'élément principal est représenté par la ligne :
<element name="recipient">

Les éléments <attribute> et <element> qui suivent l’élément principal permettent de définir l'emplacement et le nom des données dans la structure XML.
Soit dans notre schéma d'exemple :
<attribute name="email"/>
<attribute name="created"/>
<attribute name="gender"/>
<element name="location">
  <attribute name="city"/>
</element>

Les règles à respecter sont les suivantes :
  • Chaque <element> et <attribute> doit être identifié par son nom à partir de l'attribut name .
    Le nom de l'élément doit être concis, de préférence en anglais, et ne comprendre que des caractères autorisés conformes aux règles de nommage des noms XML.
  • Seuls les éléments <element> peuvent contenir des éléments <attribute> et des éléments <element> dans la structure XML.
  • Un élément <attribute> doit être unique par son nom dans un <element> .
  • L’utilisation des <elements> sur les données de type chaîne multi-lignes est préconisée.

Types des données

Le type de données est renseigné à partir de l'attribut type sur les éléments <attribute> et <element> .
Une liste complète est disponible dans la description de l' <attribute> et de l’ <element> .
Lorsque cet attribut n’est pas renseigné, string est le type de données par défaut, sauf si l’élément contient des éléments enfants. Si tel est le cas, il est utilisé uniquement pour structurer les éléments de manière hiérarchique (élément <location> dans notre exemple).
Les types de données supportés dans un schéma sont les suivants :
  • string : chaîne de caractères. Exemples : un prénom, une ville, etc.
    La taille peut être spécifiée via l'attribut length (optionnel, valeur par défaut "255").
  • boolean : champ booléen. Exemples de valeurs possibles : vrai/faux, 0/1, oui/non, etc.
  • byte , short , long : entiers (1 octet, 2 octets, 4 octets). Exemples : un age, un numéro de compte, un nombre de points, etc.
  • double : nombre flottant à double précision. Exemples : un prix, un taux, etc.
  • date , datetime : dates et dates + heures. Exemples : une date de naissance, une date d'achat, etc.
  • datetimenotz : date + heure sans données de fuseau horaire.
  • timespan : durée. Exemple : l'ancienneté.
  • memo : champ texte long (multi-lignes). Exemples : une description, un commentaire, etc.
  • uuid  : champ de type "uniqueidentifier" pour la prise en charge d’un GUID (pris en charge uniquement sous Microsoft SQL Server).
    Pour contenir un champ de type uuid sur les moteurs autres que Microsoft SQL Server, il faut ajouter et renseigner la fonction "newuuid()" dans sa valeur par défaut.
Notre schéma d'exemple complété avec les types :
<srcSchema name="recipient" namespace="cus">
  <element name="recipient">
    <attribute name="email" type="string" length="80"/>
    <attribute name="created" type="datetime"/>
    <attribute name="gender" type="byte"/>
    <element name="location">
      <attribute name="city" type="string" length="50"/>
   </element>
  </element>
</srcSchema>

Correspondance des types de données Adobe Campaign/SGBD

Le tableau suivant liste les correspondances des types de données générés par Adobe Campaign pour les différents systèmes de gestion de base de données.
Adobe Campaign PosgreSQL Oracle Teradata DB2 MS SQL
Chaîne VARCHAR(255) VARCHAR2 (NVARCHAR2 si unicode) VARCHAR (VARCHAR CHARACTER SET UNICODE si Unicode) VARCHAR VARCHAR (NVARCHAR si unicode)
Booléen SMALLINT NUMBER(3) NUMERIC(3) SMALLINT TINYINT
Octet SMALLINT NUMBER(3) NUMERIC(3) SMALLINT TINYINT
Court SMALLINT NUMBER(5) SMALLINT SMALLINT SMALLINT
Double DOUBLE PRECISION FLOAT FLOAT DOUBLE FLOAT
Long INTEGER NUMBER(10) INTEGER INTEGER INT
Int64 BIGINT NUMBER(20) NUMERIC(20) BIGINT BIGINT
Date DATE DATE TIMESTAMP DATE DATETIME
Time TIME FLOAT TIME TIME FLOAT
Datetime TIMESTAMPZ DATE TIMESTAMP TIMESTAMP MS SQL < 2008: DATETIME MS SQL >= 2012 : DATETIMEOFFSET
Datetimenotz TIMESTAMPZ DATE TIMESTAMP TIMESTAMP MS SQL < 2008: DATETIME MS SQL >= 2012 : DATETIME2
Timespan DOUBLE PRECISION FLOAT FLOAT DOUBLE FLOAT
Memo TEXT CLOB (NCLOB si Unicode) CLOB (CLOB CHARACTER SET UNICODE si Unicode) CLOB(6M) TEXT (NTEXT si Unicode)
Blob BLOB BLOB BLOB BLOB(4M) IMAGE

Propriétés

Les éléments <elements> et <attributes> du schéma de données peuvent être enrichis de diverses propriétés. Vous pouvez remplir un libellé afin de décrire l’élément actif.

Les libellés et les descriptions

  • La propriété label permet de saisir une description courte.
    Le libellé est associé à la langue courante de l'instance.
    Exemple :
    <attribute name="email" type="string" length="80" label="Email"/>
    
    
    Le libellé est visible à partir du formulaire de saisie de la console cliente Adobe Campaign :
  • La propriété desc permet de saisir une description longue.
    La description est visible à partir du formulaire de saisie dans la barre de statut de la fenêtre principale de la console cliente Adobe Campaign.
    La description est associée à la langue courante de l'instance.
    Exemple :
    <attribute name="email" type="string" length="80" label="Email" desc="Email of recipient"/>
    
    

Les valeurs par défaut

La propriété default permet de définir une expression retournant une valeur par défaut à la création du contenu.
La valeur doit être une expression conforme au langage XPath. Voir à ce propos la section Référencer avec XPath .
Exemple :
  • Date courante : default="GetDate()"
  • Compteur : default="'FRM'+CounterValue('myCounter')"
    Dans cet exemple, la valeur par défaut est construite à l’aide de la concaténation d’une chaîne et de l’appel de la fonction CounterValue avec un nom de compteur gratuit. Le nombre renvoyé est incrémenté d’une unité à chaque insertion.
    Dans la console cliente Adobe Campaign, le noeud Administration>Compteurs permet de gérer les compteurs.
Pour lier une valeur par défaut à un champ, vous pouvez utiliser le <default> or <sqldefault> field. </sqldefault> </default>
<default> : vous permet de préremplir le champ avec une valeur par défaut lors de la création d’entités. La valeur ne sera pas une valeur SQL par défaut.
<sqldefault>  : vous permet d’avoir une valeur ajoutée lors de la création d’un champ. Cette valeur s’affiche sous forme de résultat SQL. Lors de la mise à jour d’un schéma, seuls les nouveaux enregistrements seront affectés par cette valeur.

Enumérations

Enumération libre

La propriété userEnum permet de définir une énumération libre pour mémoriser et afficher les valeurs renseignées à partir de ce champ. La syntaxe est la suivante :
userEnum="nom de l'énumeration"
Le nom donné à l'énumération est libre et peut être partagé avec d'autres champs.
Une liste déroulante énumère la liste de ces valeurs à partir du formulaire de saisie :
Dans la console cliente Adobe Campaign, le nœud Administration > Enumérations permet de gérer les énumérations.

Enumération fixe

La propriété enum permet de définir une énumération fixe utilisée lorsque la liste des valeurs possibles est connue à l'avance.
L'attribut enum fait référence à la définition d'une classe d'énumération renseignée dans le schéma en dehors de l'élément principal.
Les énumérations permettent à l'utilisateur de sélectionner une valeur dans une liste déroulante au lieu de saisir cette valeur dans une zone de saisie classique :
Exemple de déclaration d'énumération dans le schéma de données :
<enumeration name="gender" basetype="byte" default="0">    
  <value name="unknown" label="Not specified" value="0"/>    
  <value name="male" label="male" value="1"/>   
  <value name="female" label="female" value="2"/>   
</enumeration>

Une énumération est déclarée en dehors de l'élément principal à partir de l'élément <enumeration> .
Les propriétés de l'énumération sont :
  • baseType : type de données associées aux valeurs,
  • label : description de l'énumération,
  • name : nom de l'énumération,
  • default : valeur par défaut de l'énumération.
Les valeurs de l’énumération sont déclarées dans l'élément <value> avec les attributs suivants :
  • name : nom de la valeur stockée en interne,
  • label : libellé affiché à partir de l'interface graphique.

Enumération dbenum

  • La propriété dbenum permet de définir une énumération dont les propriétés sont similaires à celles de la propriété enum .
    En revanche, l'attribut name ne stocke pas de valeur en interne, mais un code, ce qui permet d'étendre les tables concernées sans avoir à modifier leur schéma.
    Les valeurs sont définies depuis le noeud Administration>Enumérations .
    Cette énumération est utilisée par exemple, pour spécifier la nature des opérations.

Exemple

Notre schéma d'exemple complété avec les propriétés :
<srcSchema name="recipient" namespace="cus">
  <enumeration name="gender" basetype="byte">    
    <value name="unknown" label="Not specified" value="0"/>    
    <value name="male" label="male" value="1"/>   
    <value name="female" label="female" value="2"/>   
  </enumeration>

  <element name="recipient">
    <attribute name="email" type="string" length="80" label="Email" desc="Email of recipient"/>
    <attribute name="created" type="datetime" label="Date of creation" default="GetDate()"/>
    <attribute name="gender" type="byte" label="gender" enum="gender"/>
    <element name="location" label="Location">
      <attribute name="city" type="string" length="50" label="City" userEnum="city"/>
   </element>
  </element>
</srcSchema>

des collections.

Une collection est une liste d'éléments de même nom et de même niveau hiérarchique.
L'attribut unbound avec la valeur "true" permet de renseigner un élément de collection.
Exemple  : définition de l’élément de collection <group> dans le schéma.
<element name="group" unbound="true" label="List of groups">
  <attribute name="label" type="string" label="Label"/>
</element>

Avec la projection du contenu XML :
<group label="Group1"/>
<group label="Group2"/>

Référencer avec XPath

Le langage XPath est utilisé dans Adobe Campaign pour référencer un élément ou un attribut appartenant à un schéma de données.
XPath est une syntaxe permettant la localisation d'un noeud dans l'arbre d'un document XML.
Les éléments sont désignés par leur nom, les attributs sont désignés par leur nom précédé d'un caractère "@".
Exemple :
  • @email : sélectionne l'email,
  • Location/@city  : sélectionne l’attribut « city » sous l’élément <location> .
  • ../@email : sélectionne l'email sur l'élément parent de l'élément courant
  • group [1]/@label  : sélectionne l’attribut « label » fils du premier élément de collection <group>
  • group [@label='test1']  : sélectionne l’attribut « label », enfant de l’élément <group> et contenant la valeur « test1 »
Une contrainte supplémentaire a été ajoutée lorsque le chemin traverse un sous-élément. Dans ce cas, il faut mettre l'expression entre crochets :
  • Location/@city n’est pas valide ; veuillez utiliser [location/@city]
  • [@email] et @email sont équivalents
Il est aussi possible de définir des expressions complexes, telles que les opérations arithmétiques :
  • @gender+1 : ajoute 1 au contenu de l'attribut gender ,
  • @email + '('+@created+')' : construit une chaîne en prenant la valeur de l'email ajoutée à la date de création entre parenthèses (pour le type chaîne, il faut mettre la constante entre quotes).
Des fonctions de haut niveau ont été ajoutées aux expressions afin d'enrichir les possibilités offertes par ce langage.
La liste des fonctions disponibles est accessible à partir de n'importe quel éditeur d'expressions dans la console cliente Adobe Campaign :
Exemple :
  • GetDate() : retourne la date courante
  • Year(@created) : retourne l'année de la date contenue dans l'attribut "created"
  • GetEmailDomain(@email) : retourne le domaine de l'email

Construire une chaîne via la compute string

Une Compute string est une expression XPath utilisée pour construire une chaîne représentant un enregistrement de la table associée au schéma. La Compute string est surtout utilisée dans l'interface graphique pour afficher le libellé d'un enregistrement sélectionné.
La chaîne Compute string est définie via l’élément <compute-string> sous l’élément principal du schéma de données. Un attribut expr contient une expression XPath pour calculer l’affichage.
Exemple : compute string de la table des destinataires.
<srcSchema name="recipient" namespace="nms">  
  <element name="recipient">
    <compute-string expr="@lastName + ' ' + @firstName +' (' + @email + ')' "/>
    ...
  </element>
</srcSchema>

Résultat de la chaîne calculée sur un destinataire : Dupont René ( rene.dupont@aol.com )
Si le schéma ne contient pas de Compute string, une Compute string est renseignée par défaut avec les valeurs de la clé primaire du schéma.