User Guide    ▶    Definition Structure
"do:IT" est un langage modulaire
qui peut être composé par des définitions réutilisables
pour la composition d'une application


« L'Application Definition » est une structure en JSON composée de 5 sections
dont 2 sont obligatoires (cf. « Runtime Description » et « Runtime Design »).



La section « Runtime Description » permet de décrire l'application et la donner un nom.

La section « Runtime Specification » permet de poser les spécifications techniques nécessaires pour l'exécution de l'application.

Cette section peut être considérée comme le script de lancement qui positionne les configurations d'une applications, telles que :

les librairies additionnelles (cf. "libs"),
les variables d'environnements (cf. "envs"),
les arguments spécifiques à la JVM (cf. "args") et ses propriétés (cf. "properties"),
et voire même le moteur d'exécution spécifique (cf. "provider", ex : SPARK).
La section « Runtime Reuse » permet de réutiliser des définitions externes.

La vocation de "do:IT" étant de pousser la modularité à la limite de votre imagination,
ainsi, il est possible de découper les descriptions :

en modèle de données externe (cf. "MODEL"),
en module de code réutilisable (cf. "MODULE"),
en fournisseur de technologie (cf. "PROVIDER") et d'accès aux resources (cf. "RESOURCE")
en configuration ou paramètre partagés (cf. "CONTEXT").
La section « Runtime Repositories » permet de rendre autonome une application en définissant les repositories suffisants à son exécution.

Les repositories suivants peuvent être définis :

le modèle de données (cf. "models"),
les modules réutilisables (cf. "modules"),
les fournisseurs de technologie (cf. "providers") et les ressources techniques (cf. "resources")
ainsi que les configurations ou paramètres partagés (cf. "with" et "ctx").

La section « Runtime Design » permet de savoir

si l'application est de type « Lightweight Application ( do ) »

ou de type « Platform Application ( app ) »



Pour les applications de type « Platform Application »,
les sections suivantes sont obligatoires afin d'identifier le type de l'application et son mode d'exécution.





La section « Flows Section » permet aux flows d'articulation de l'application (patterns).

Il y a 3 blocs de flows que l'on peut spécifier :

le bloc principal (cf. "main") qui est obligatoire et spécifique suivant le mode d'exécution de l'application,
le bloc d'initialisation (cf. "init") qui permet de préparer le lancement de l'application, ex : initialisation des ressources, etc,
et le bloc de finalisation (cf. "done") qui permet de finaliser proprement l'exécution d'une application sauf en cas de KILL forcé (-9).

Hello World !
{ "flw:print" : "Hello World !" }







La definition « Context Definition »
permet de décrire des configurations ou paramètres partagés et réutilisables.






La definition « Model Definition »
permet de décrire des modèles de données spécifiques et réutilisables.




Le « Model Repository » permet de modéliser les types de modèle suivant :

Il est possible de référencer des classes existantes en Java,
ou de définir des types d'objets spécifiques.


"do:IT" reprend les 4 méthodes standardes Java :

la fonction "to:string" qui correspond à la méthode toString() en Java,
la fonction "hash:code" qui correspond à la méthode hashCode() en Java,
la fonction "obj:equals" qui correspond à la méthode equals() en Java,
et la fonction "obj:comprare" qui correspond à la méthode compareTo() en Java,
Il est possible de référencer des énumérations existantes en Java,
ou de définir des types d'énumérations spécifiques.







Le modèle de données peut être organisé en package.

Il est possible de définir des méta-données réutilisables en tant que meta.


En terme de structure des données (OBJECT, DATA et ENUM),
ci-dessous la description des attributes et des fonctions.








La definition « Module Definition »
permet de décrire des modules spécifiques et réutilisables.


Le « Module Repository » référencie des modules en tant que FLOW ou EVALUATION.





La definition « Resource Definition »
permet de référencer des resources adressables.


Le « Resource Repository » référencie des resources valorisées et qui peuvent être organisées en hiérarchie (cf. DIR).



La definition « Provider Definition »
permet de définir des fournisseurs technologiques.






Le « Provider Repository »
permet de référencer les fournisseurs technologiques par type.


Type JSON
expression
Java
type(s)
Description
FILE_SYSTEM "FILE:SYSTEM" - C'est le type représenant un système de fichier (File System).
FILE_STORE "FILE:STORE" - C'est le type représenant une zone de stockage de fichier au sein d'un système de fichier (File System).
FILE_COMPRESS "FILE:COMPRESS" - C'est le type représenant une méthode de compression applicable à un système de fichier (File System).
Type JSON
expression
Java
type(s)
Description
MSG_BROKER "MSG:BROKER" - C'est le type représenant le fournisseur de flux de message (Message Broker).
C'est le fournisseur de :
Message Channel : canal d'acheminement de message,
Message Receiver : recepteur de message (GET, READ),
Message Sender : émetteur de message (PUT, SEND).
MSG_CHANNEL "MSG:CHANNEL" - C'est le type représenant le canal de messages (Message Channel).
MSG_RECEIVER "MSG:RECEIVER" - C'est le type représenant le réception message (Message Receiver).
MSG_SENDER "MSG:SENDER" - C'est le type représenant l'émetteur message (Message Sender).
MSG_LISTENER "MSG:LISTENER" - C'est le type représenant le service d'écoute de message (Message Listener).
C'est le fournisseur de flux de réception de message, suivant le mode :
Message Listening : flux élémentaire de message (UNIT),
Message Sequencing : flux de séquence de message (SEQUENCE),
Message Streaming : flux de message de message (BULK).
Type JSON
expression
Java
type(s)
Description
DATA_STORAGE "DATA:STORAGE" - C'est le type représenant le fournisseur de stockage de données (Data Storage).
C'est le fournisseur de :
Data Store : stockage de données,
Data Access : accès élémentaire aux données,
Data Query : requête en masse aux données.
DATA_STORE "DATA:STORE" - C'est le type représenant le stockage de donnée au sein d'un système de stockage de données (Data Storage).
Le modèle de stockage peut être :
DATA:TABLE : structure tabulaire,
DATA:WIDE : structure à colonne étendue ou en famille,
DATA:TREE : structure hierarchique,
DATA:KEY/VALUE : structure à clé/valeur,
DATA:DOCUMENT : structure documentaire,
DATA_ACCESS "DATA:ACCESS" - C'est le type représenant le mécanisme d'accès élémentaire aux données (Data Access).
DATA_QUERY "DATA:QUERY" - C'est le type représenant le mécanisme de requêtage en message aux données (Data Query).

La création de chaque fournisseur technologique peut être faite
par un module "do:IT" générique ou spécifique,
ou par une instance spécifique implémentée en Java (classe externe).








... et pour la composition de plateforme et la prise en compte de son infrastructure


...

... Application Entry ...
... Software Definition ...
... Environment Definition ...
...

... Hardware Definition ...
... Host Definition ...
... System Definition ...
... Network Definition ...
... Virtual Definition ...