Option de production d'un modèle de données factice utilisé en lieu et place du data model lors de la phase de mise en développement du template (type JSON Objet).
Principe d'utilisation
L'utilisation de cette option permet de se dispenser d'appeler la fonction VaToolBxAPEAddInDataModel pour construire un modèle de données.
Lors de la phase de développement d'un template, il n'est pas toujours possible d'avoir un modèle de données dont les valeurs correspondent aux données réelles en production. Il est possible, grâce à cette option, de produire des valeurs de données factices. Les valeurs sont produites de manière aléatoire, en fonction de leur type (à chaque appel de la fonction VaToolBxAPEMergeDoc, de nouvelles valeurs sont automatiquement produites). Pour cela, l'utilisateur doit décrire la structure du modèle de données telle qu'elle est fournie en production, à savoir :
- la structure arborescente du modèle : l'imbrication (à plusieurs niveaux possibles) des sous-variables entre elles,
- pour chaque sous-variable : son type (simple ou complexe). En fonction de chaque type, un ensemble de caractéristiques permettant au processus de simuler les valeurs.
L'option jsonGenerator est décrite en JSON et a pour valeur un schéma JSON. Un schéma JSON est un objet JSON détaillant la structure de certaines données JSON (cliquez ici pour plus de détails).
Initialement, un schéma JSON est utilisé pour valider la structure d'une donnée JSON avant son traitement : il peut être vu comme le pendant du XSD (XML Schema Definition) pour le XML.
Dans le cas présent, le schéma JSON est utilisé pour produire une donnée JSON validant le schéma. Le processus s'appuie sur la version 4 de la spécification JSON Schema.
Structure générale d'un schéma JSON v4
Structure générale d'un schéma JSON v4
Un schéma JSON est un objet JSON contenant les attributs suivants :
- "$schema" : indique la version de la spécification utilisée pour décrire le schéma,
- "title" : associe un titre au schéma (optionnel),
- "description" : associe une description au schéma (optionnel),
- "type" : définit le type de données de la donnée JSON à produire : la valeur doit être "object" car cette donnée JSON doit représenter le modèle de données qui est une table de hachage (et peut donc être représentée par un objet JSON),
- "properties" : pour une donnée à produire de type JSON "object", cet attribut (de type JSON "object ") regroupe la description des attributs constituant la donnée JSON "object". L'objet "properties" contient les attributs des noms de "sous-variables" ; chaque attribut a pour valeur un objet qui contient la description de chaque "sous-variable".
Exemple : Simuler un modèle de données constitué de trois clés "name" (ALPHA), "age" (NUM_BIN_2) et "isMarried" (BOOL)
L4G Adélia en production |
NUM_BIN_2 codeRet |
||
Modèle de données en production |
|
||
Paramètre "Options " |
|
||
Exemple de modèles de données factices produits |
|
|
|
Description des données de type simple
On explique ici comment décrire dans un modèle de données factice une "sous-variable" de type simple.
Chaque "sous-variable" est décrite dans l'attribut "properties".
Une "sous-variable" doit être décrite comme suit :
- Son nom apparaît comme nom d'attribut dans l'objet JSON "properties ",
- Cet attribut nouvellement créé a pour valeur un autre objet JSON dont l'attribut "type" est associé au type simple,
- Pour certains types Adélia, l'attribut "adel_type" doit être renseigné pour caractériser le type.
Décrire une donnée foobar de type Adélia BOOL
Paramètre "Options " |
|
|
L4G Adélia pour la création d'un modèle de données équivalent |
NUM_BIN_2 codeRet |
|
Exemple de modèles de données factices produits |
|
|
↑ Haut de page
La valeur booléenne "true" équivaut à la valeur *VRAI (false à *FAUX).
Décrire une donnée foobar de type NUM_BIN_2
Paramètre "Options" |
|
|
L4G Adélia pour la création d'un modèle de données équivalent |
NUM_BIN_2 codeRet
|
|
Exemple de modèles de données factices produits |
|
Les valeurs de foobar sont comprises entre -32768 et 32767 |
Décrire une donnée foobar de type NUM_BIN_4
Paramètre "Options" |
|
|
L4G Adélia pour la création d'un modèle de données équivalent |
NUM_BIN_2 codeRet
|
|
Exemple de modèles de données factices produits |
|
Les valeurs de foobar sont comprises entre -2147483648 et 2147483647 |
Décrire une donnée foobar de type NUM_BIN_8
Paramètre "Options" |
|
|
L4G Adélia pour la création d'un modèle de données équivalent |
NUM_BIN_2 codeRet
|
|
Exemple de modèles de données factices produits |
|
Les valeurs de foobar sont comprises entre -9223372036854775808 et 9223372036854775807 |
Décrire une donnée foobar de type NUM_E / NUM_P
La valeur de l'attribut "type" dépend du nombre de décimales du type Adélia :
- Si les décimales sont égales à 0, fixez "type" à "integer ",
- Si les décimales sont différentes à 0, fixez "type" à "number".
Cas d'une donnée représentant une date
Dans le cas où une donnée de type Adélia NUM_E / NUM_P (6, 0) ou NUM_E / NUM_P (8, 0) représente une date (format YYMMDD ou YYYYMMDD), il est possible de produire des valeurs numériques de dates grâce à l'attribut "adel_format" : celui-ci doit prendre comme valeur la chaîne "ymd".
Cas d'une donnée représentant une heure
Dans le cas où une donnée de type Adélia NUM_E / NUM_P (6, 0) représente une heure au format HHMMSS, il est possible de produire des valeurs numériques d'heures grâce à l'attribut "adel_format" : celui-ci doit prendre comme valeur la chaîne "hms".
Paramètre "Options" |
|
|
L4G Adélia pour la création d'un modèle de données équivalent |
NUM_BIN_2 codeRet |
|
Exemple de modèles de données factices produits |
|
Les valeurs de foobar sont comprises entre -99.99 et 99.99 |
Décrire une donnée foobar de type ALPHA
L'attribut "adel_type" permet de définir la longueur maximale des chaînes alphanumériques à produire. Cependant il est possible de restreindre cette longueur à un intervalle défini par les attributs "minLength" et "maxLength".
Ces attributs prennent des valeurs numériques (la valeur de "maxLength" ne doit pas être supérieure à la longueur du type ALPHA).
Expression régulière
Il est possible de définir une expression régulière qui servira de motif à la production de la chaîne alphanumérique. Il existe un certain nombre de limitations sur la syntaxe des expressions régulières supportées. L'attribut "pattern" permet de saisir une expression régulière.
Par exemple, pour produire une chaîne représentant un numéro de carte de crédit American Express, il faut saisir la chaîne "3[47][0-9]{13}" comme valeur de l'attribut "pattern".
Paramètre "Options" |
|
|
L4G Adélia pour la création d'un modèle de données équivalent |
NUM_BIN_2 codeRet
|
|
Exemple de modèles de données factices produits |
|
La longueur de la chaîne est aléatoire entre 0 et la longueur du type Adélia. Chaque caractère est choisi aléatoirement entre la plage de codes décimaux 65 (A) et 90 (Z) et la plage de codes décimaux 97 (a) et 122 (z) |
Décrire une donnée foobar de type DATE
Il est possible de produire une valeur de date de type objet, alphanumérique ou numérique :
- Si l'attribut "type" vaut "object", la date est un objet Date,
- Si l'attribut "type" vaut "string", la date est une chaîne alphanumérique au format ISO 8601 (YYYY-MM-DD),
- Si l'attribut "type" vaut "integer", la date est un numérique qui correspond à un horodatage c'est-à-dire un nombre correspondant à une durée (en millisecondes) à partir du 1er janvier 1970 à 0 heure (UTC).
De plus, il est possible de préciser via les attributs "adel_min" et "adel_max" un intervalle de dates dans lequel sera choisi aléatoirement la date à produire.
Ces deux attributs doivent prendre une chaîne alphanumérique au format ISO 8601 (YYYY-MM-DD). S'ils ne sont pas renseignés, la date produite est comprise entre *LOVAL et *HIVAL.
Paramètre "Options" |
|
|
L4G Adélia pour la création d'un modèle de données équivalent |
NUM_BIN_2 codeRet
|
|
Exemple de modèles de données factices produits |
|
Les valeurs de foobar sont comprises entre *LOVAL (0001-01-01) et *HIVAL (9999-12-31) |
Paramètre "Options" |
|
|
L4G Adélia pour la création d'un modèle de données équivalent |
NUM_BIN_2 codeRet
|
|
Exemple de modèles de données factices produits |
|
Les valeurs de foobar sont comprises entre *LOVAL (-62135596800000) et *HIVAL (253402214400000) |
Décrire une donnée foobar de type TIME
Il est possible de produire une valeur d'heure de type objet, alphanumérique ou numérique :
- Si l'attribut "type" vaut "objet", l'heure est un objet Time,
- Si l'attribut "type" vaut "string", l'heure est une chaîne alphanumérique au format ISO 8601 (HH:MM:SS),
- Si l'attribut "type" vaut "integer", la date est un numérique qui correspond à un horodatage, c'est-à-dire un nombre correspondant à une durée (en millisecondes) à partir du 1er janvier 1970 à 0 heure (UTC).
De plus, il est possible de préciser via les attributs "adel_min" et "adel_max" un intervalle d'heures dans lequel sera choisi aléatoirement l'heure à produire. Ces deux attributs doivent prendre une chaîne alphanumérique au format ISO 8601 (HH:MM:SS). S'ils ne sont pas renseignés, l'heure produite est comprise entre *LOVAL et *HIVAL.
Paramètre "Options" |
|
|
L4G Adélia pour la création d'un modèle de données équivalent |
NUM_BIN_2 codeRet
|
|
Exemple de modèles de données factices produits |
|
Les valeurs de foobar sont comprises entre *LOVAL (01:01:01) et *HIVAL (23:59:59) |
Paramètre "Options" |
|
|
L4G Adélia pour la création d'un modèle de données équivalent |
NUM_BIN_2 codeRet
|
|
Exemple de modèles de données factices produits |
|
Les valeurs de foobar sont comprises entre *LOVAL (-3600000) et *HIVAL (82799000) |
Décrire une donnée foobar de type TIMESTAMP
Il est possible de produire une valeur d'horodatage de type objet, alphanumérique ou numérique :
- Si l'attribut "type" vaut "objet", l'horodatage est un objet Timestamp,
- Si l'attribut "type" vaut "string", l'horodatage est une chaîne alphanumérique au format ISO 8601 (yyyy-MM-dd'T'HH:mm:ss.SSS),
- Si l'attribut "type" vaut "integer", l'horodatage est un numérique qui correspond à une durée (en millisecondes) à partir du 1er janvier 1970 à 0 heure (UTC).
De plus, il est possible de préciser via les attributs "adel_min" et "adel_max" un intervalle d'horodatages dans lequel sera choisi aléatoirement l'horodatage à produire. Ces deux attributs doivent prendre une chaîne alphanumérique au format ISO 8601 (yyyy-MM-dd'T'HH:mm:ss.SSS). S'ils ne sont pas renseignés, l'horodatage produit est compris entre *LOVAL et *HIVAL.
Paramètre "Options" |
|
|
L4G Adélia pour la création d'un modèle de données équivalent |
NUM_BIN_2 codeRet
|
|
Exemple de modèles de données factices produits |
|
Les valeurs de foobar sont comprises entre *LOVAL (01-01-01T01:01:01.000) et *HIVAL (9999-31-12T23:59:59.999) |
Paramètre "Options" |
|
|
L4G Adélia pour la création d'un modèle de données équivalent |
NUM_BIN_2 codeRet
|
|
Exemple de modèles de données factices produits |
|
Les valeurs de foobar sont comprises entre *LOVAL (-62135596800000) et *HIVAL (253402300799999) |
Décrire une donnée foobar de type IMAGE
Il est possible de produire une valeur d'image de type chaîne alphanumérique ou tableau d'octets :
- Si l'attribut "type" vaut "string", la valeur produite représente le contenu de l'image encodé en base 64,
- Si l'attribut "type" vaut "array", la valeur produite est un tableau d'octets.
Dans les deux définitions, il est nécessaire de préciser le format d'image à produire grâce à l'attribut "adel_format", qui permet de définir des paramètres via la syntaxe clé = valeur. Trois formats d'image sont supportés en renseignant la clé "mimetype" :
- mimetype=image/jpeg : Image au format JPEG,
- mimetype=image/png : Image au format PNG,
- mimetype=image/gif : Image au format GIF.
De plus, il est possible de préciser la taille (en pixels) de l'image à produire en fournissant les dimensions de l'image (largeur x hauteur) comme valeur de la clé "size". Par exemple, pour indiquer qu'il faut produire une image au format PNG de 100 pixels de largeur par 50 pixels de hauteur, renseignez dans l'attribut "adel_format" la valeur "mimetype=image/png ;size=100x50".
Si aucune taille n'est spécifiée, la largeur et la hauteur de l'image produite sont choisies aléatoirement dans les intervalles [100, 200] pixels.
Paramètre "Options" |
|
|
L4G Adélia pour la création d'un modèle de données équivalent |
NUM_BIN_2 codeRet * the image is converted to a base 64 encoded string appeler_class 'vatoolbx.dll' 'VaToolBxAPEAddInDataModel' 'myDataModel' 'foobar' foobar 'image' codeRet |
|
Exemple de modèles de données factices produits |
|
Image résultat : |
Description des données de type complexe
On explique ici comment décrire dans un modèle de donnée factice une "sous-variable "de type REF_CLASSE, TABLEAU ou LISTE.
Décrire une donnée foobar de type REF_CLASSE
Une donnée de type Adélia REF_CLASSE peut être décrite en JSON comme un objet JSON (type "object"). Cet objet contient son propre attribut "properties" permettant de décrire l'ensemble des attributs (les "sous-variables") de l'instance de classe Adélia foobar.
Exemple : Simuler une classe Adélia ayant des attributs de type simples
L4G Adélia en production |
CLASSE Personne : |
|
NUM_BIN_2 codeRet |
Paramètre "Options" |
|
Exemple de modèles de données factices produits |
|
Autre exemple : Simuler une classe Adélia ayant des attributs de type simple et complexe
L4G Adélia en production |
CLASSE Adresse : |
CLASSE Personne : |
|
NUM_BIN_2 codeRet
|
|
Paramètre "Options" |
|
|
Exemple de modèles de données factices produits |
|
Décrire une donnée foobar de type TABLEAU
Une donnée de type Adélia TABLEAU peut être décrite en JSON comme un tableau JSON (type "array").
Le type des valeurs contenues dans ce tableau est décrit dans l'attribut "items". De plus, il est possible de définir une longueur minimale et une longueur maximale pour le tableau produit à l'aide des attributs "minItems" et "maxItems". Si ces deux attributs ne sont pas définis, le tableau aura une taille aléatoire.
Exemple : Simuler un tableau 1D de valeurs de type simple
L4G Adélia en production |
NUM_BIN_2 codeRet |
Paramètre "Options" |
|
Exemple de modèles de données factices produits |
|
Autre exemple : Simuler un tableau 2D de valeurs de type simple
L4G Adélia en production |
NUM_BIN_2 codeRet |
Paramètre "Options" |
|
Exemple de modèles de données factices produits |
|
Décrire une donnée foobar de type LISTE
Une donnée de type Adélia LISTE peut être décrite en JSON comme un tableau JSON (type "array ") d'objets JSON.
Chaque objet JSON contient les valeurs d'une ligne de la liste : chaque valeur de colonne de liste est associée à un attribut de nom de la colonne (en minuscule).
L'attribut "items" doit donc décrire un objet JSON (type "object").
De plus, il est possible de définir une longueur minimale et une longueur maximale pour la liste (le tableau) produite à l'aide des attributs "minItems" et "maxItems". Si ces deux attributs ne sont pas définis, la liste aura une taille aléatoire.
Exemple : Simuler une liste de valeurs de type simple
L4G Adélia en production |
NUM_BIN_2 codeRet |
Paramètre "Options" |
|
Exemple de modèles de données factices produits |
|