Architecture de Tribu

Comment tout connaître du Coeur de Tribu ? J'ai détaillé dans cette page les points importants de l'architecture de Tribu.
Vous pouvez tout reprendre pour l'améliorer !!!

Les packages de Tribu

Le logiciel tribu repose sur une architecture en trois couches standards. Le schéma suivant détaille la répartition des packages sur ces trois couches :

Les flux dans Tribu

Le schémas suivant détaille les flux de données dans un membre d'une Tribu.

Les ronds rouge avec une croix localisent les Threads. Ces Threads sont expliqués dans la partie suivante.

Les grands points de cette architecture sont les suivants :

Les Threads dans Tribu

Le logiciel Tribu est basé sur un mécanisme asynchrone permettant de gérer des accès concurrents et des mises en attente. Le schéma suivant illustre la dépendance des threads Java utilisés pour gérer les travaux d'une Tribu :

Détail des threads :

Le moteur d'actions

L'ensemble des actions côté client ou côté serveur sont tratées par un moteur d'action. Le fonctionnment de ce moteur est décrit sur le schéma suivant :

Chaque action est composée des classes suivantes :

Explications :

Pour clarifier le fonctionnement de ce moteur d'action, voici un diagramme séquence de son fonctionnement :

En cas d'erreur, les traitements "Reset" sont enclenchés.

Le protocole réseau de Tribu

Le protocole suivi par tribu est un protocole basé sur un mécanisme d'envoie d'une REQUETE pour obtenir une REPONSE. La grammaire de ce protocole est décrite dans le tableau suivant :

REQUETE :
|COMMANDE: COMANDE_VALUE
 [ |ARGUMENT: ARGUMENT_VALUE
:ARGUMENT|
]*
:COMMANDE|
COMMANDE_VALUE : ActionBattementDeCoeur | ActionInfoUpdate | ActionInfoUpdateFile | ActionActualiseServeur |
ActionActualiseServeurImage | ActionGetRayon | ActionGetArticle | ActionGetSousArticle |
ActionGetSegmentDownload | ActionGetSegmentUpdate | ActionGetRechercheTransfert |
ActionGetRechercheUpdateFile | ActionPubMessage | ActionPubSupprimerIndividu | ActionRechercheArticle
ARGUMENT_VALUE : String
REPONSE :
[ <OBJET: OBJET_VALUE
[
|NAME: NAME_VALUE
:NAME |
|ATTRIBUT: ATTRIBUT_VALUE
:ATTRIBUT
]*
:OBJET>]*
OBJET_VALUE : Individu | Article | Rayon
NAME_VALUE : String
ATTRIBUT_VALUE : String