v7

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 noms.

<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 enfant 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.

    IMPORTANT

    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 de 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>élément et de l’<element>élément).

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).

    REMARQUE

    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 répertorie 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
MS SQL
Chaîne
VARCHAR(255)
VARCHAR2 (NVARCHAR2 si unicode)
VARCHAR (NVARCHAR si unicode)
Booléen
SMALLINT
NUMBER(3)
TINYINT
Octet
SMALLINT
NUMBER(3)
TINYINT
Court
SMALLINT
NUMBER(5)
SMALLINT
Double
DOUBLE PRECISION
FLOAT
FLOAT
Long
INTEGER
NUMBER(10)
INT
Int64
BIGINT
NUMBER(20)
BIGINT
Date
DATE
DATE
DATETIME
Time
TIME
FLOAT
FLOAT
Datetime
TIMESTAMPZ
DATE
MS SQL < 2008: DATETIME
MS SQL >= 2012 : DATETIMEOFFSET
Datetimenotz
TIMESTAMPZ
DATE
MS SQL < 2008: DATETIME
MS SQL >= 2012 : DATETIME2
Timespan
DOUBLE PRECISION
FLOAT
FLOAT
Memo
TEXT
CLOB (NCLOB si Unicode)
TEXT (NTEXT si Unicode)
Blob
BLOB
BLOB
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.

    REMARQUE

    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.

    REMARQUE

    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. Pour plus d'informations, consultez 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.

    REMARQUE

    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.

Énumérations

Énumé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 :

REMARQUE

Dans la console cliente Adobe Campaign, le nœud Administration > Enumérations permet de gérer les énumérations.

Énumé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 nœud Administration > Énumé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 nœud 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’adresse e-mail dans l’élément parent de l’élément courant
  • group[1]/@label : sélectionne l'attribut "label" enfant 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”
REMARQUE

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’adresse e-mail ajoutée à la date de création entre parenthèses (pour le type chaîne, il faut mettre la constante entre guillemets).

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) : renvoie le domaine de l’adresse e-mail.

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)

REMARQUE

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.

Sur cette page