Structurer votre fichier de définition JSON

Pour créer votre table personnalisée du modèle de données, il sera nécessaire de définir sa structure par le biais d'un fichier JSON.

Ce fichier JSON doit contenir une série d’informations. Certaines de ces informations sont obligatoires, d’autres sont optionnelles. De plus, elles peuvent avoir certaines contraintes à respecter, soit au niveau de leur typage, soit au niveau des valeurs possibles.

Les paramètres permettant de définir l'identité de votre table (nom d'affichage et nom technique, entité, ...) pourront être spécifiés directement, tandis que les paramètres définissant le comportement de votre table devront être structurés sous forme de tableaux de valeurs.

Le tableau ci-dessous vous fournit des explications exhaustives concernant les différents paramètres pouvant constituer votre fichier JSON.

Tableau explicatif des paramètres

Paramètre

Explications de l'information attendue

Type

Obligatoire ou Optionnel ?

Explications complémentaires et contraintes

id

ID servant d'identifiant à cette table

String

Optionnel

En cas d'absence, ACTITO générera automatiquement cet identifiant

businessKey

Nom de l'attribut qui identifie la clé primaire de cette table

String

Obligatoire

Cet attribut doit être présent dans ce fichier de définition. Ce champ devra être unique et obligatoire.

technicalName

Nom technique de la table, utilisé pour toute référence à cette table (par ex. lors d’export)

String

Obligatoire

Nombre max. de caractères : 64

userName

Nom donné à la table, qui sera utilisé dans l’interface

String

Optionnel

Si vide, par défaut, le technicalName sera utilisé dans l’interface

prettyNameExpression

Joli nom d’affichage de la donnée source

String

Optionnel

Uniquement pour les Table de type "Référentiel"

entityName

Nom de l’entité à laquelle doit appartenir cette Table

String

Obligatoire

 

Illustration des paramètres d'identification
"id" (string, optional): " ",
"businessKey" (string): " ",
"technicalName" (string): " ",
"userName" (string, optional): " ",
"prettyNameExpression" (string, optional): " ",
"entityName" (string): " ",
capabilityDTOs

Obligatoire

 

Type(s) de capacité à donner à la Table. Voir la page "Comprendre les capacités des tables" pour explication détaillée de ce paramètre.

 

name

Nom de la capacité à donner

 

 

Valeurs possibles :

"Lookup table",

"EventGeneratedTable",

"Interaction",

"ProfileData",

Illustration capabilityDTOs
"capabilityDTOs" (Array[Capability], optional):
[
{
"name" (string): " 'LookupTable' , 'EventGeneratedTable', 'Interaction' , 'ProfileData' "
}
],
defaultFetchingParameters

Optionnel

 

Il est possible de préciser dans la table comment on veut que les données soient ordonnées par défaut. Ceci conditionnera la personnalisation des messages lorsque l’on choisit comme source de personnalisation (e-mail ou sms) le "mode par défaut".

 

keyAttribute

Nom du champ sur lequel faire le tri

String

Optionnel

 

 

ascending

Ordre dans lequel le tri va être fait : Ascendant ou Descendant

Boolean

Optionnel

Valeur à "Faux" par défaut (c'est-à-dire par ordre Descendant)

 

sortingKey

Nom de l’attribut utilisé pour faire le tri

String

Optionnel

 

 

maxNumberOfRecords

Nombre maximal d’entrées à rechercher

Long

Optionnel

Valeur à 1 par défaut

Illustration defaultFetchingParameters
"defaultFetchingParameters" (Array[FetchingParameters], optional):
[
{
"keyAttribute" (string, optional): " ",
"ascending" (boolean, optional): ,
"sortingKey" (string, optional): " ",
"maxNumberOfRecords" (long, optional):
}
],
emails

String

Optionnel

 

Liste d'adresse e-mail à qui sont à renvoyer les rapports techniques (erreurs, alerting, ...)

Illustration emails
"emails" (Array[string], optional):
fields

Obligatoire

 

Enumération des attributs à créer dans cette Table

 

objectType

Obligatoire pour identifier le type d'objet

String

Obligatoire

Seule valeur possible : ['SIMPLE']

 

fieldName

Nom de l’attribut

String

Obligatoire

Un certain nombre de termes techniques sont réservés et ne peuvent pas être utilisés comme "fieldName".

Téléchargez la liste des termes réservés

 

columnName

Valeur technique

String

Obligatoire

La valeur doit être égale au "fieldName"

 

userName

Nom d'affichage de l’attribut tel qu’il apparaîtra dans ACTITO

String

Obligatoire

En cas d’absence, la valeur reprise sera le "fieldName"

 

type

Typage de l’attribut concerné

String

Obligatoire

Valeurs possibles : STRING”,”INTEGER”,”BOOLEAN”,”DATE”,”TIMESTAMP”,”NUMERIC”, ”LONG”

 

extended

Indication que l’attribut est un ID d’une table de type "LookUp" (l’ID sera remplacé)

Boolean

Optionnel

  • Uniquement pour les Table de type “Référentiel”

  • Valeur à "Faux" par défaut

  • Si Valeur à "Vrai", alors il faut mettre un lien de type 'DATA_SOURCE_LINK' dont le sourceFieldName sera ce champ

 

required

Indication si l’attribut est obligatoire

Boolean

Optionnel

  • Valeur à "Faux" par défaut

 

unique

Indication si l’attribut est unique

Boolean

Optionnel

  • Valeur à "Faux" par défaut

Un champ unique sera automatiquement indexé

 

indexed

Indication si la table est indexée sur cet attribut

Boolean

Optionnel

  • Valeur à "Faux" par défaut

 

cacheIndexed

Mise à disposition d’une liste déroulante d’aide à la saisie

Boolean

Optionnel

  • Valeur à "Faux" par défaut

Uniquement valable pour les attributs de type ‘STRING’

Max. 10 000 valeurs possibles

 

description

Description de l'attribut

String

Optionnel

 

 

possibleValues

Enumérations des valeurs possibles

String

Optionnel

 

 

valueDisplayer

 

 

Optionnel

 


Il est possible de faire appel aux typages des attributs prédéfinis d'ACTITO

 

 

displayerType

Nom du displayer ACTITO permettant le rendu du champ

String

Optionnel

Valeurs possibles : ‘CivilState’, ’PersonTitle’, ’Gender’, ’Country’, ’Language'


typeValidator

 

 

Optionnel

 

 

Il est possible de faire appel aux typages des attributs prédéfinis d’ACTITO

 

 

objectType

Nom du validateur pour assurer la consistance des données

String

Optionnel

Valeurs possibles :‘EMAIL_ADDRESS’, ’SEX’, ‘COUNTRY’, ’LANGUAGE’, ‘PHONE_NUMBER’, ‘CIVIL_STATE’, ‘PERSON_TITLE’, ’STRING_LENGTH’

 

 

minCharacters

Nombre minimal de caractère

Long

Optionnel

Uniquement si l’objectType = ’STRING_LENGTH’

 

 

maxCharacters

Nombre maximal de caractère

Long

Optionnel

Uniquement si l’objectType = ’STRING_LENGTH’

Illustration fields
"fields" (Array[PropertyWithInfoDTO], optional):
[
{
"cacheIndexed" (boolean, optional): ,
"columnName" (string): ,
"type" (string) : "STRING","INTEGER","BOOLEAN","DATE","TIMESTAMP","NUMERIC","LONG"
"extended" (boolean, optional): ,
"fieldName" (string): " ",
"indexed" (boolean, optional): ,
"objectType" (string): "SIMPLE",
"required" (boolean, optional): ,
"unique" (boolean, optional): ,
"userName" (string, optional): " ",
"possibleValues": (Array [String]) : ,
"description": (string, optional): " ",
"valueDisplayer" (ValueDisplayerDTO, optional) : ,
{
"displayerType" : "CivilState","PersonTitle","Gender","Country","Language"
}
,
"typeValidator" (AdvancedTypeValidator, optional) :
{
"objectType" : "EMAIL_ADDRESS","SEX","COUNTRY","LANGUAGE","PHONE_NUMBER","CIVIL_STATE","PERSON_TITLE","STRING_LENGTH"
"minCharacters" (long, optional): ,
"maxCharacters" (integer, optional): : ,
}
}
],
layout

Optionnel

 

Mise en page de la visualisation de la table

 

details

 

 

Optionnel

 

 

sections

 

 

 

Optionnel

 

 

 

fields

 

String

Optionnel

 

 

 

name

Nom de la section

String

Obligatoire

 

 

list

 

 

Optionnel

 

 

 

fields

Noms des champs

String

Optionnel

 

Mettre ici la liste des attributs qui doivent être affiché dans le résumé de l’interaction, au niveau de la fiche profil (onglet interaction du profil)

Illustration layout
"layout" (Layout, optional):
{
"details" (Details, optional):
{
"sections" (Array[Section], optional):
[
{
"fields" (Array[string], optional): " ",
"name" (string): " "
}
]
}
,
"list" (FieldList, optional):
{
"fields" (Array[string], optional):
}
}
links

Optionnel

 

Définition du ou des liens de cette table avec d’autres tables (Tables de profils ou Table de type "Référentiel")

 

constraintType

Type de contrainte sur le lien

String

Optionnel

  • Si lien avec une table de profils : Valeur mise à "onDeleteCascade" par défaut (les entrées de tables seront supprimées si le profil est supprimé)

  • Sinon, pas de valeur par défaut.

  • Valeurs possibles : 'none', 'onDeleteCascade', 'onDeleteSetNull'

 

linkName

Nom donné au lien

String

Obligatoire

 

 

objectType

Type de table liée

String

Obligatoire

Valeurs possibles : 'PROFILE_LINK', 'DATA_SOURCE_LINK'

 

sourceFieldName

Nom de l’attribut de la table source

String

Obligatoire

Cet attribut doit être présent dans le fichier de définition. Cet attribut doit être obligatoire et indexé.

Le sourceFieldName et le targetFieldName doivent avoir le même typage.

 

targetFieldName

Nom de l’attribut dans la table en lien

String

Obligatoire

Si lien avec une table de profils : doit référer à businessKey ou profileID

Si lien sur une table référentiel : doit référer à businessKey

 

targetedEntityName

Entité dans laquelle se trouve la Table en lien

String

Optionnel

 

 

targetedProfileTableName / targetedDataSourceName

Nom de la table (de profils ou personnalisée) en lien

String

Obligatoire

  • si ObjectType = 'PROFILE_LINK’ Nom de la table de Profils

  • si ObjectType = 'DATA_SOURCE_LINK' Nom de la Table

  • ces propriétés sont exclusives

Illustration links
"links" (Array[SimpleLinkDTO], optional):
[
{
"constraintType" (string, optional): "none","onDeleteCascade","onDeleteSetNull",
"linkName" (string): " ",
"objectType" (string): "PROFILE_LINK","DATA_SOURCE_LINK",
"sourceFieldName" (string): " ",
"targetFieldName" (string): " ",
"targetedEntityName" (string, optional): " ",
"targetedProfileTableName" / "targetedDataSourceName" (string): " "
}
],
tableEventDefinitions

 

 

Optionnel

Obligatoire pour lesTable de type "Interaction" si on compte pouvoir faire des scénarios

Uniquement pour les Table de type "Interaction" :

Ceci permet de définir les ‘actions’ se passant sur cette table qui doivent déclencher un évènement pouvant être utilisé dans les scénarios ACTITO.

 

technicalName

Nom technique donné à cet évènement

String

Obligatoire

 

 

userName

Nom d’usage donné à cet évènement (qui apparaitra dans ACTITO)

String

Optionnel

Nom technique repris par défaut dans ACTITO

 

tableEventConditionDefinitionDTOs

 

Optionnel

 

 

 

afterPredicate

 

 

 

 

 

 

beforePredicate

 

 

 

 

 

 

type

Type d’’action’ devant déclencher un ‘évènement’ ACTITO

String

Obligatoire

  • Valeurs possibles : ‘CREATE’, 'UPDATE'

  • A minima prévoir un évènement de type ‘CREATE’

Illustration tableEventDefinitions
"tableEventDefinitions": [
{
"technicalName": "testEvent",
"userName": " JoliNomPourMonTestEvent ",
"tableEventConditionDefinitionDTOs": [
{
"type": "CREATE"
}
]
}
]

Illustration d'un fichier complet

Le fichier ci-dessous vous donne une illustration du format pris par un fichier possédant tous les différents paramètres possibles, ainsi que des valeurs attendues.

Illustration visuelle du fichier de définition JSON
{
"id" (string, optional): " ",
"businessKey" (string): " ",
"technicalName" (string): " ",
"userName" (string, optional): " ",
"prettyNameExpression" (string, optional): " ",
"entityName" (string): " ",
"capabilityDTOs" (Array[Capability], optional):
[
{
"name" (string): " 'LookupTable' , 'EventGeneratedTable', 'Interaction' , 'ProfileData', "
}
],
 
"defaultFetchingParameters" (Array[FetchingParameters], optional):
[
{
"keyAttribute" (string, optional): " ",
"ascending" (boolean, optional): ,
"sortingKey" (string, optional): " ",
"maxNumberOfRecords" (long, optional):
}
],
 
"emails" (Array[string], optional):
 
"fields" (Array[PropertyWithInfoDTO], optional):
[
{
"cacheIndexed" (boolean, optional): ,
"columnName" (string): ,
"type" (string) : "STRING","INTEGER","BOOLEAN","DATE","TIMESTAMP","NUMERIC","LONG"
"extended" (boolean, optional): ,
"fieldName" (string): " ",
"indexed" (boolean, optional): ,
"objectType" (string): "SIMPLE",
"required" (boolean, optional): ,
"unique" (boolean, optional): ,
"userName" (string, optional): " ",
"possibleValues": (Array [String]) :
"description" (string, optional): " ",
"valueDisplayer" (ValueDisplayerDTO, optional) : ,
{
"displayerType" : "CivilState","PersonTitle","Gender","Country","Language"
}
,
"typeValidator" (AdvancedTypeValidator, optional) :
{
"objectType" : "EMAIL_ADDRESS","SEX","COUNTRY","LANGUAGE","PHONE_NUMBER","CIVIL_STATE","PERSON_TITLE","STRING_LENGTH"
"minCharacters" (long, optional): ,
"maxCharacters" (long, optional): : ,
}
}
],
"layout" (Layout, optional):
{
"details" (Details, optional):
{
"sections" (Array[Section], optional):
[
{
"fields" (Array[string], optional): " ",
"name" (string): " "
}
]

Typage des champs

Selon leur typage, les champs devront respecter certaines contraintes :

  • STRING : séquence de caractères [a-z, A-Z, 0-9]

    • le nombre maximum de caractères pour le typage STRING est de 255. Cela peut être modifié avec un paramètre "typeValidator" (voir le tableau ci-dessus)

  • INTEGER :

    • ce typage est déprécié mais reste accepté dans la définition d'une table. Il sera automatiquement transformé en typage LONG

    • pas d’espace, ni de point, ni de virgule

    • valeur maximale : 2147483647

    • valeur minimale: -2147483647

  • LONG :

    • valeur maximale : 2147483647

    • valeur minimale: -2147483647

    • pas d’espace, ni de point, ni de virgule

  • BOOLEAN : respecter les valeurs suivantes “true” ou “false”

  • DATE : chaine de caractères répondant à un des formats suivants :

    • YYYYMMDD

    • YYYY-MM-DD

    • dd/MM/yyyy

  • TIMESTAMP : chaine de caractères répondant à un des formats suivants :

    • YYYYMMDD *

    • YYYY-MM-DD *

    • dd/MM/yyyy *

    • YYYYMMDDhhmmss

    • YYYY-MM-DD hh:mm:ss

    • dd/MM/yyyy HH:mm:ss

    • MM/dd/yyyy hh:mm:ss AM|PM

* si pas de valeur pour hhmmss, seront ajoutées les valeurs 00:00:00

  • NUMERIC :

    • le séparateur doit être un .

    • pas de limite de nombre de caractère

A savoir

En plus du typage général, il existe un typage avancé pour certains champs, afin de s'assurer que leur format corresponde au format attendu par ACTITO.

Il s'agit des types "EMAIL_ADDRESS","SEX","COUNTRY","LANGUAGE","PHONE_NUMBER","CIVIL_STATE". La syntaxe imposée pour ces types est détaillée dans la page "Utiliser les attributs prédéfinis".

Pour imposer qu'un champ de votre table corresponde à un de ces types, il sera nécessaire de le spécifier dans le paramètre "objectType".