Accueil Nouveautés Sommaire

Les chroniques

La démarche Notions de base Composants de base Analyses Le glossaire

Remonter

 

Version du 30 09  2013

 

   Présentation. 2

Chroniques. 3

Extensions de la notion de chronique. 3

Typologie des chroniques. 5

Généralités sur les chroniques. 7

Caractéristique des éléments des chroniques. 10

Note de mise en œuvre : Les chroniques. 11

Note de mise en œuvre : Exploration d’une chronique. 14

Note de mise en œuvre : Le fusionnneur 16

 


Présentation

Objectifs

Bon nombre de dispositifs réglementaires mettent en jeu des collections de faits organisés en séries chronologiques.

 

Une chronique est une collection de faits à début calendaire.

 

La notion de chronique est étendue et adaptée aux différentes collections de faits participants aux applicatifs :

·         faits consommables (à début calendaire et à début relatif),

·         faits « Etats du droit ».

 

L’étude vise à :

·         dégager les caractéristiques des éléments des chroniques en fonction de leur mode de sollicitation,

·         proposer des opérations sur les chroniques, qui isolent la cinématique du traitement des chroniques des traitements réglementaires sur les éléments qui les composent.

 

L’étude intègre, implicitement, toutes les caractéristiques du traitement des collections.

 

Résumé

Cette étude dégage des principes d’organisation de faits susceptibles d’être ordonnés par rapport au temps calendaire ou au temps relatif.

 

La notion de chronique est étendue aux différents types de faits rencontrés dans les applicatifs.

 

Les caractéristiques des éléments composant les chroniques sont adaptées aux différentes opérations envisagées.

 

Les opérations sur les chroniques sont présentées. Les opérations impliquant des itérations sur les éléments de la chronique mettent l’accent sur les modalités de communication entre la partie cinématique du traitement de la chronique et la partie réglementaire du traitement des éléments.

 


Chroniques

Définition

Une chronique est un recueil de faits rapportés dans l’ordre de leur succession (Robert)

 

Dans le cadre de l’application, une chronique est une collection de faits :

·         de même nature,

·         ou fortement connexes entre eux (dans leurs finalités ou dans leurs caractéristiques)

 

Rôle des chroniques

On distingue deux types de chroniques :

·         celles, constituées par faits à début et à fin calendaire, qui participent à la réalisation des dispositifs réglementaires,

·         celles, constituées par des faits consommables ou des faits Etat du droit, qui sont utilisées, sous forme de chronologies, dans le processus de consommation du droit.

 

Extensions de la notion de chronique

Présentation

Les extensions de la notion de chronique à d’autres faits que ceux à début calendaire relève de l’objectif d’unification du temps calendaire et du temps relatif dans le processus de consommation du droit.

 

Cette unification est rendue possible :

·         par le rôle des événements dans le processus de consommation du droit, qui se réduit à la seule mise à disposition des données des faits dont ils sont issus,

·         par les analogies d’accès aux événements ; la contrainte de relation d’ordre chronologique est remplacée par une condition d’activation ou de désactivation des événements.

·         à une date donnée,

·         à un cumul consommé donné (à une date donnée).

 

Extensions de la notion de chronique aux faits consommables à début relatif

Pour les processus producteurs de faits à début relatif, la création d’une chronique obéit aux critères suivants :

·         même priorité des faits qui la composent, au regard de leur prise en charge dans le processus de consommation du droit,

·         même unité de consommation.

 

La chronique des faits consommables à début relatif, dépendant de la même unité de consommation, constitue la base du plan d’indemnisation du déclencheur concerné.

 

Extension de la notion de chronique aux faits de changements d’état

Les faits « Etats du droit » sont des faits consommables dont les conditions de prise d’effet peuvent être à début calendaire ou à début relatif.

 

Dès lors qu’il existe un état du droit à durée relative, tous les états devant lui succéder n’ont plus la possibilité de proposer une date de début prévisionnelle.

 

Pour déterminer, sans ambiguïté, les conditions d’activation de l’état suivant il est alors nécessaire de substituer la relation d’ordre chronologique par une relation de succession entre deux états du droit consécutifs (« état suivant prévu »).


Typologie des chroniques

Typologie des chroniques

On distingue les types de chroniques suivants :

 

Séries chronologiques de paramètres

Les chroniques, de séries de paramètres, sont composées de faits de base :

·         à début calendaire et

·         à durée indéterminée (l’indétermination est levée à la veille de l’apparition d’une nouvelle valeur du paramètre),

 

On accède aux éléments :

·         un par un : l’élément en cours à une date donnée,

·         sous forme de la chronique : tous les éléments débutant dans une période donnée

 

Chroniques de faits (base ou réglementaires à début calendaire)

Les chroniques de faits de base ou de faits réglementaires sont composées de faits :

·         à début calendaire et,

·         à durée de type période

 

On accède aux éléments :

·         un par un, élément en cours à une date donnée,

·         sous forme de la chronique des éléments débutant dans une période donnée

 

Chroniques de type calendrier d’indemnisation

Les chroniques, de type calendrier d’indemnisation, sont composées de faits consommables :

·         à début calendaire et,

·          à durée calendaire (déterminée, indéterminée ou instantanée),

 

On accède aux éléments, dans le cadre du processus d’indemnisation, en recherchant les événements :

·         activables à une date donnée,

·         consommés à une date donnée

 

Chroniques, de type plan d’indemnisation

Les chroniques, de type plan d’indemnisation, sont composées de faits consommables :

·         à début relatif et,

·         à durée relative (déterminée ou instantanée),

 

On accède aux éléments, dans le cadre du processus d’indemnisation, en recherchant les événements :

·         activables à début relatif donné,

·         consommés à un début relatif donné.

 

Chronique des « états du droit »

La chronique des « états du droit », est composée de faits de changements d’état :

·         à début calendaire ou à début relatif,

·         à durée déterminée ou indéterminée (pour les états « post-consommation »).

 

On accède aux éléments, dans le cadre du processus d’indemnisation, en recherchant les événements :

·         activables à une date donnée,

·         activables au lendemain de la consommation d’un état (état suivant prévu,

·         désactivables à une date donnée ou à un début relatif donné,

·         désactivables à la veille d’une interruption (temporaire ou définitive) de l’état du droit courant.

 

 

Généralités sur les chroniques

Principes d’utilisation des chroniques

Le traitement d’une chronique répond à la réalisation d’une finalité applicative, mise en œuvre par un dispositif réglementaire.

 

Le principe qui gouverne l’utilisation des chroniques est l’isolation du traitement de la cinématique des traitements réglementaires.

 

Une chronique est représentée par une classe ; qui prend en charge toutes les opérations sur la chronique.

 

Utilisation de la chronique

Construction

Une classe chronique se construit en fournissant directement les caractéristiques de la chronique ou en produisant le ChronoConstructeur passé en paramètre.

 

Opérations

La communication de la chronique vers son client se fait par l’implémentation d’interfaces spécialisées à chaque type d’opération. Les méthodes implémentées correspondent aux traitements réglementaires ou fonctionnels.

 

La chronique a la connaissance du client, via sa référence passée lors de la demande d’opération.

 

La communication du client vers la chronique se fait par l’appel aux méthodes publiques correspondantes à l’opération en cours

 

Une chronique n’accepte que les seuls types conformes aux options de construction. Une exception doit être lancée en cas de non conformité.

 

Construction des chroniques

Une chroniques est définie par :

·         le type de ses éléments :

·         le type de début de ses éléments :

·         le critère de classement des éléments :

·         le type d’organisation de ses éléments :

 

Voir « Note de mise œuvre : Les chroniques »

 


 

Opérations élémentaires sur les chroniques

Ajouts d’éléments à la chronique

Une chronique peut se construire :

·         élément par élément,

·         par insertion d’une autre chronique caractérisée par des options de construction compatibles avec celles de la chronique réceptrice.

 

Ajouts sans chevauchement

L’ajout sans chevauchement se fait élément par élément. L’élément à ajouter doit être proratisable. Le client doit implémenter l’interface « Chevauchable » ; il reçoit les parties se chevauchant, de la chronique réceptrice et de l’élément à ajouter, afin de pouvoir construire le nouvel élément résultant

 

Modification des éléments d’une chronique

Par construction, les éléments des chroniques ne sont pas modifiables. Une modification (évolution dans le temps) d’un fait de base ou d’un fait réglementaire procède par :

·         suppression et remplacement de l’élément

·         ajout du nouvel élément dans la chronique,

 

Reclassement des éléments d’une chronique

Le reclassement d’un chronique de faits calendaires permet de passer d’un classement par dates de début à un classement par dates de fin, et réciproquement.

 

Suppression d’éléments d’une chronique

Les éléments d’une chronique sont supprimables (suppression de l’élément de la chronique et conservation de l’élément).

 

Destruction d’éléments d’une chronique

Les éléments d’une chronique sont destructibles (suppression de l’élément de la chronique et suppression de l’élément).

 

Exploration d’une chronique

Les conditions d’exploration d’une chronique concernent :

·         la nature du parcours dans la chronique (vers l’avant, vers l’arrière, indifférent),

·         la période limitant les recherches,

·         la condition de sélection standard d’appartenance à la période de recherche des éléments (début‚ fin, début et fin, début ou fin),

·         l’existence, éventuelle, d’une condition de sélection complémentaire.

 

La restitution des éléments, dans le cadre d’une exploration, se fait élément par élément.

 

Les directives de l’exploration sont déclarées dans un ChronoItérateur, qui reprend le schéma type « Exploration d’une chronique ».

 

Si un élément sélectionné chevauche une limite de la période de recherche, il faut pouvoir restituer les caractéristiques de la seule partie utile (proratisation de l’élément sélectionné).

 

Plusieurs ChronoItérateurs peuvent être utilisés simultanément sur une même chronique.

 

Fusion de deux chroniques

La fusion de deux chroniques se différencie de l’ajout d’une chronique à une autre chronique dans la mesure où elle suppose un traitement entre les éléments la chronique de référence et ceux de la chronique paramètre.

 

Par construction, les deux chroniques n’ont pas d’éléments se chevauchant et obéissent aux mêmes conditions d’exploration.

 

La fusion restitue des éléments disjoints ; les éléments des deux chroniques à fusionner peuvent donc avoir été proratisés.

 

Les traitements réglementaires et la gestion de la chronique résultante relèvent de la responsabilité du client.

 

Déchevauchement d’une chronique

Il peut se faire que l’option d’ajout sans chevauchement n’ait pu être prise lors de la création de la chronique. L’opération de déchevauchement consiste à analyser les éléments (calendaires) de la chronique et restitue une chronique d’éléments disjoints. Les éléments de chronique de référence doivent implémenter les interfaces Proratisable

 


Caractéristique des éléments des chroniques

Présentation

Un élément devant appartenir à une chronique doit pouvoir mettre à disposition ses attributs, afin de participer à l’élaboration de résultats issus de l’exploration de la chronique.

 

Les éléments d’une chronique d’objets métier (de base ou réglementaires) implémentent les interfaces :

·         Comparable, la comparaison peut porter sur des dates d’effet de début ou sur des dates d’effet de fin (pour les seules chronologies de type calendaire composées seulement de périodes).

·         FaitCC, qui permet l’obtention de la date de début et de la date de fin d’activité du fait.

 

Dans l’hypothèse où les éléments de la chronique sont susceptibles d’être découpés, ils doivent implémenter les interfaces :

·         Proratisable,

·         Cloneable,

 

 

Interface Proratisable

FaitCC :

proratiser(FaitCC e, Période p)

Proratise l’élément paramètre pour la période paramètre. La période paramètre chevauche tout ou partie de la période de l’élément

 

 

   

Note de mise en œuvre : Les chroniques

Directives de construction

ChronConstructeur

 

ChronoDébutEnum

(CALENDAIRE,

RELATIF,

MIXTE

AUTRE ?)

ChronoTypeDeFaitEnum

(CALENDAIRE,

CONSOMMABLE CALENDAIRE,

CONSOMMABLE RELATIF

ETATS_DU_DROIT

AUTRE ?)

ChronoClassementEnum

(DEBUT,

FIN,

COMPARATEUR,

 SANS_OBJET)

ChronoOrdreEnum

(ASCENDANT

DESCENDANT,

SANS_OBJET )

ChronoOrganisationEnum

(LISTE,

LISTE_TRIEE,

LISTE_CHAINEE_AVANT,

LISTE_CHAINEE_ARRIERE,

LISTE_CHAINEE_DOUBLE)

 

 

Les termes soulignés correspondent aux options par défaut

 

 

Chrono Constructeurs

Un ChronoConstructeur définit les directives de construction d’une chronique.

 

ChronoConstructeur()

Retourne un chronoConstructeur conforme aux options par défaut :

type de début = CALENDAIRE

type de durée = CALENDAIRE

classement = DEBUY

ordre = ASCENDANT

organisation = LISTE 

 

ChronoConstructeur(

ChronoDebut typeDebutEnum d,

ChronoTypeDeFait f,

ChronoClassementEnum cl,

ChronoOrdreEnum o,

ChronoOrganisation typeOrganisation)

Retourne un Chronoconstructeur, qui servira de paramètre à la création de la chronique

 

 

Chronique

 

Chronique()

Retourne une chronique vide, conforme aux options par défaut du ChronoConstructeur  

 

Chronique(ChronoConstructeur c)

Retourne une chronique vide, conforme aux options définies dans le ChronConstructeur

 

Accesseurs

Enumération

getTypeDebut()

Retourne le type de début des faits constituants la chronique

 

getTypeDeFait()

Retourne le type de durée des faits constituants la chroniques

 

getClassement()

Retourne le type de classement

 

getOrganisation()

Retourne le type d’organisation

 

 

Chronique :

getEléments(Période p)

Retourne tous les éléments de la chronique de référence appartenant en totalité ou en partie à la période paramètre. Les ajouts dans la chronique résultante se font selon les modalités définies par son ChronoConstructeur

 Modificateurs

 

ajouter(FaitCC e)

void :

ajouter(Chronique e)

void :

ajouterSansChevauchement(FaitCC e)

void :

ajouterSansChevauchement(Chronique c)

 

 

void :

remplacer(FaitCC e)

 

supprimer(FaitCC e)

Retourne la chronique sans l’élément précisé en paramètre,

ne détruit pas l’élément

 

 

void :

classerSurDateDébut()

void :

classerSurDateFin()

void :

classer(Comparateur c)

void :

inverserClassement()

 

Destructeur 

 

détruire(élément e)

Retourne la chronique sans l’élément précisé en paramètre,

détruit cet élément

 

détruire(Chronique c)

 

 

 Opérations outils

void

Fusionner(Chronique c1, Chronique c2)

Retourne, élément par élément, la chronique résultant de la fusion entre les deux chroniques données en paramètre.

Le client a la responsabilité :

. de l’implémentation des modalités de communication avec      le Fusionneur,

. du traitement des éléments se chevauchant,

. de la chronique résultante,

 

void

Déchevaucher(Chronique c)

Retourne, sous forme de chroniques :

les éléments disjoints (chroniques à 1 élément),

les éléments se chevauchant (chroniques à n éléments=

Le client a la responsabilité :

. de l’implémentation des modalités de communication avec      le Déchevaucheur

. du traitement des éléments se chevauchant,

. de la chronique résultante,

 


Note de mise en œuvre : Exploration d’une chronique

Objectif

Fournir un outil prenant à sa charge les modalités d’exploration d’une chronique. Les directives de l’exploration et les éléments courants de l’itération sont définis par le client (le ChronExplorateur).

 

Le ChronoItérateur

 Afin de pouvoir utiliser simultanément la même chronique chaque client (composant appelant) accède à la chronique via un chronoItérateur.

 

Le ChonoItérateur contient

·         la référence à la chronique concernée,

·         les caractéristiques de l’itération,

·         les éléments courants associés aux opérations d’exploration, de fusion et de déchevauchement.

 

 Constructeurs

 

ChronoItérateur(Chronique c, ChronoConstructeur cc)

Retourne un ChronoItérateur muni des directives standard :

   parcours = ASCENDANT,

   limites = période(DATE_MINI, DATE_MAXI),

   sélection = DEBUT

 

ChronoItérateur(

   Chronique c,

   ChronoParcoursEnum p,

   ChronoLimites l,

   ChronoSélection s)

Retourne un ChronoItérateur conforme aux directives demandées

 

ChronoItérateur(

   Chronique c,

   ChronoParcoursEnum

   ChronoLimites l  )

Retourne un ChronoItérateur conforme aux directives demandées pas de sélection complémentaire

 

 

Les termes soulignés correspondent aux options par défaut

 

 

 Options de l’itération

Chronique

 

 

 

 

 

ChronoParcour

(ASCENDANT,

DESCENDANT,

RANGEMENT,

SANS_OBJET)

 

ChronoLimites

(DATE_MINI, DATE_MAXI,

SANS_OBJET)

 

ChronoClassement

(DEBUT,

 FIN,

 COMPARATEUR,

SANS_OBJET)

 

sélection

(DEBUT,

 FIN,

 DEBUT_ET_FIN,

DEBUT_OU_FIN,

SANS_OBJET)

 

 Opérations d’exploration

vide statique

explorer(

Objet leClient,

ChronoItérateur cI)

Explore une chronique de faits à début et à fin calendaire ; passe la main au client pour le traitement de chaque élément correspondant à la sélection standard

 

reconduireElément()

Demande la poursuite de l’exploration, l’élément courant étant inchangé

 

remplacerElementPar(FaitCC e)

Demande la poursuite de l’exploration après avoir remplacé l’élément courant par l’élément donné en paramètre

 

supprimerElément()

Demande la poursuite de l’exploration après avoir supprimé l’élément courant

 

détruireElément()

Demande la poursuite de l’exploration après avoir détruit l’élément courant

 

quitterExploration()

Quitte l’exploration ; retourne en séquence

 

Interface Explorable

vide :

traiterElément(FaitCC e)

Cette interface est à implémenter pour le traitement de l’élément courant

 

 

 

 


Note de mise en œuvre : Le fusionnneur

Objectif

Fournir un outil prenant à sa charge la fusion de deux chroniques. Les directives de la fusion sont définies par le ChronoItérateur associé à chaque chronique ; les éléments courants de la fusion sont définis dans les ChronoItérateurs.

 

Le fusionneur retourne, dans la chronique de retour, donnée en paramètre, les caractéristiques des éléments à ajouter à la chronique résultante, gérée par le client. Un élément de la chronique de retour (élément à fusionner) est caractérisé par :

·         son rang dans sa chronique d’origine

·         la période effective à proratiser avant l’ajout à la chronique résultante.

 

Le fusionneur retourne :

·         les caractéristiques d’un élément si la partie effective à fusionner ne chevauche aucun élément de l’autre chronique,

·         les caractéristiques de deux éléments si les périodes effectives à fusionner coïncident.

 

Hypothèses de traitement

Les chroniques

·         sont classées dans l’ordre ascendant des dates de début

·         ne contiennent pas d’éléments se chevauchant,

 

Cette méthode est présentée comme une méthode de classe de la classe Chronique (les aspects spécifiques à cette option ne sont pas pris en compte dans le schéma de principe).

 

 Opérations de fusion

vide statique :

fusionner(

Objet leClient,

Chronique c1,

ChronoItérateur c1,

Chronique c2,

ChronoItérateur c2,

Chronique cr,

ChronItérateur cr)

Fusionne deux chroniques de faits à début et à fin calendaire classés en ordre ascendant; passe la main au client en précisant l’origine de l’élément (des éléments) à traiter. La fusion restitue, dans la chronique de retour (cr), par ordre d’ancienneté les éléments à traiter.

La chronique résultante relève de la responsabilité du client

 

poursuivreFusion()

Poursuit la fusion ; retourne en séquence si la chronique a été complétement explorée

 

quitterFusion()

Quitte la fusion ; retourne en séquence

 

Interface Fusionnable à implémenter par le client

vide :

TraiterElémentPremièreChronique(

Chronique cr)

{

// proratiser l’élément

// ajouter l’élément à la chronique résultante

// poursuivre la fusion

}

vide :

TraiterElémentDeuxièmeChronique(

Chronique cr)

{

// proratiser l’élément

// ajouter l’élément à la chronique résultante

// poursuivre la fusion

}

 

vide :

TraiterElémentsAFusionner (

Chronique cr,

Période p)

{

// proratiser l’élément de la première chronique,

// proratiser l’élément de la deuxième chronique

// produire l’élément résultant

// ajouter l’élément à la chronique résultante

// poursuivre la fusion

}

 

 

Remarques :

Un élément est caractérisé par son rang dans la chronique d’origine.

 

La période indique la partie de l’élément à prendre en charge (à proratiser) ; une la période coïncidant avec la période de l’élément n’entraîne pas de proratisation.

 

 

Traitement

Résumé

Initialiser

Faire tant que les deux chroniques n’ont pas été explorées

Déterminer la période à traiter de c1

Déterminer la période à traiter de c2

Positionner la période à traiter c1 par rapport à la période à traiter de c2

Tirer les conséquences du positionnement sur :

·      les caractéristiques des éléments (ou partie d’élément) à retourner,

·      la poursuite de l’exploration (demande de traitement d’un élément suivant ou demande de poursuite du traitement de l’élément courant.

Demander au client le traitement des éléments retenus

 

Schéma de principe

Initaliser

Vider la chronique de retour

 

Déterminer la plage effective d’exploration de c1

Cas : c1 doit être exploré en totalité (pas de limites)

début = date de début du premier élément

fin = date de fin du dernier élément

Activer la demande traitement du premier élément

Quitter

Cas : c1 doit être exploré partiellement (limites)

début = date de début de l’élément chevauchant la limite inférieure

fin = date de fin de l’élément chevauchant le limite supérieure

Activer la demande de traitement de l’élément chevauchant la limite inférieure

Quitter

 

Déterminer la plage effective d’exploration de c2

Cas : c2 doit être exploré en totalité (pas de limites)

début = date de début du premier élément

fin = date de fin du dernier élément

Activer la demande traitement du premier élément

Quitter

Cas : c2 doit être exploré partiellement (limites)

début = date de début de l’élément chevauchant la limite inférieure

fin = date de fin de l’élément chevauchant le limite supérieure

Activer la demande de traitement de l’élément chevauchant la limite inférieure

Quitter

 

Itérer

Préparer la suite de l’exploration de c1

Cas : Demande de traitement de l’élément suivant activée

Cas : Il n’existe plus d’élément suivant (chronique explorée)

Période de c1 à traiter = PERIODE_MAXI

Quitter

Cas : Il existe un élément suivant

rang de l’élément de c1 à traiter = rang de l’élément courant de c1

Période de c1 à traiter = période de l’élément à traiter

Quitter

Cas : Demande de poursuite de l’élément courant activée

Période de c1 à traiter =

début = lendemain de la fin de la période résultante,

fin = date de fin de période de l’élément de c1 à traiter

Quitter

 

Préparer la suite de l’exploration de c2

Cas : Demande de traitement de l’élément suivant activée

Cas : Il n’existe plus d’élément suivant (chronique explorée)

Période de c2 à traiter = PERIODE_MAXI

Quitter

Cas : Il existe un élément suivant

rang de l’élément de c2 à traiter = rang de l’élément courant de c1

Période de c2 à traiter = période de l’élément à traiter

Quitter

Cas : Demande de poursuite de l’élément courant activée

Période de c2 à traiter =

début = lendemain de la fin de la période résultante,

fin = date de fin de période de l’élément de c1 à traiter

Quitter

Arrêter le traitement

Pré condition

Les deux chroniques ont été traitées

(période à traiter c1 = période à traiter c2 = PERIODE MAXI

 Action

Retourner

 

Positionner la Période à traiter de c1 par rapport à la Période à traiter de c2

 

Cas : Période à traiter de c1 est avant période à traiter  c2

Traiter c1 avant c2 (=>L1)

Poursuivre l’itération

 Cas : Période à traiter de c1 débute avant et finit dans période à traiter de c2

Traiter c1débutant avant c2 et finissant dans c2 (=>L2)

Poursuivre l’itération

Cas : Période à traiter de c1 englobe période à traiter de c2

Traiter c1 englobant c2 (=>L3)

Poursuivre l’itération

 Cas : Période à traiter de c1 coïncide avec période à traiter de c2

Traiter c1 et c2 identiques (=>L4)

Poursuivre l’itération

Cas : Période à traiter de c1 est englobée par période à traiter de c2

Traiter c1 englobée par c2 (=>L5)

Poursuivre l’itération

Cas : Période c1 débute dans et finit après période c2

Traiter c1 débutant dans c2 et finissant après c2 (=>L6)

Poursuivre l’itération

Cas : Période c1 est après période c2

Traiter c1 après c2 (=>L7)

Poursuivre l’itération

 

L1 : Traiter c1 avant c2

Période résultante = Période à traiter de c1

 

Traiter c1

Préparer les caractéristiques de l’élément à fusionner

rang de l’élément à traiter c1,

Période résultante)

Ajouter les caractéristiques à la chronique de retour

appelant.traiterElementPremièreChronique(Chronique cr)

Activer la demande de traitement de l’élément suivant de c1

Désactiver la demande de traitement de l’élément suivant de c2

Traiter c2

Désactiver la demande traitement de l’élément suivant

Désactiver la demande de poursuite de traitement de l’élément courant

 Retourner

 

 

L2 : Traiter c1 débutant avant c2 et finissant dans c2

Période résultante =

début = début de la période à traiter de c1

fin = veille du début de la période à traiter de c2

Traiter  c1

Préparer les caractéristiques de l’élément à fusionner

rang de l’élément à traiter c1,

Période résultante)

Ajouter les caractéristiques à la chronique de retour

appelant.traiterElémentPremièreChronique(Chronique cr)

Désactiver la demande de traitement de l’élément suivant

Activer la demande de poursuite de l’élément courant

Traiter c2

Désactiver la demande de traitement de l’élément suivant

Activer la demande de poursuite de traitement de l’élément courant

Retourner

 

   

L3 : Traiter c1 englobant c2

Période résultante =

début = début de la période à traiter de c1

fin = veille du début de la période à traiter de c2

Traiter c1

Préparer les caractéristiques de l’élément à fusionner

rang de l’élément à traiter c1,

Période résultante)

Ajouter les caractéristiques à la chronique de retour

appelant.traiterElémentPremièreChronique(Chronique cr)

Désactiver la demande de traitement de l’élément suivant

Activer la demande de poursuite du traitement de l’élément courant

Traiter c2

Désactiver la demande de traitement de l’élément suivant de c2

Activer la demande de poursuite du traitement de l’élément courant

Retourner

 

 

L4 : Traiter c1 et c2 identiques

Période résultante =

début = début de la période c1

fin = fin de la période c1

Cas : Période à traiter non significative (égale à PERIODE_MAXI)

Retourner

Cas : Période à traiter significative (différente de PERIODE_ MAXI

Préparer les caractéristiques de l’élément de c1 à fusionner

rang de l’élément à traiter c1,

Période résultante)

Ajouter les caractéristiques à la chronique de retour

Préparer les caractéristiques de l’élément de c2 à fusionner

rang de l’élément à traiter c2,

Période résultante)

Ajouter les caractéristiques à la chronique de retour

 

appelant.traiterElémentsAFusionner(Chronique cr)

 

Préparer la poursuite de l’exploration de c1 (=>L4.1)

Préparer la poursuite de l’exploration de c2 (=>L4.2)

 

Retourner

L4.1 : Préparer la poursuite de l’exploration de c1

cas : la fin de la période résultante = fin de l’élément à traiter de c1

Activer la demande de traitement de l’élément suivant

Désactiver demande poursuite du traitement de l’élément courant

cas : la fin de la période résultante < fin de l’élément à traiter de c1)

Désactiver la demande de traitement de l’élément suivant

Activer la demande de poursuite de l’élément à traiter

Retourner

L4.2 : Préparer la poursuite de l’exploration de c2

cas : la fin de la période résultante = fin de l’élément à traiter de c2

Activer la demande de traitement de l’élément suivant

Désactiver demande poursuite du traitement de l’élément courant

cas : la fin de la période résultante < fin de l’élément à traiter de c2)

Désactiver la demande de traitement de l’élément suivant

Activer la demande de poursuite de l’élément à traiter

Retourner

L5 : Traiter c1 englobée par c2

Période résultante =

début = début de la période à traiter de c2

fin = veille du début la période à traiter de c1

Traiter c1

Désactiver la demande de traitement de l’élément suivant

Désactiver la demande de poursuite du traitement de l’élément courant

 Traiter c2

Préparer les caractéristiques de l’élément à fusionner

rang de l’élément à traiter c2,

Période résultante)

Ajouter les caractéristiques à la chronique de retour

appelant.traiterElémentDeuxièmeChronique(

 

Désactiver la demande de traitement de l’élément suivant

Activer la demande de poursuite du traitement de l’élément courantr

Retourner

 

 

L6 : Traiter c1 débutant dans c2 et finissant après c2

Période résultante =

début = début période à traiter c2

fin = veille début période à traiter c1

Traiter c1

Désactiver demande traitement de l’élément suivant de c1

Désactiver la demande de poursuite de traitement de l’élément courant

Traiter c2

Préparer les caractéristiques de l’élément de c2 à fusionner

rang de l’élément à traiter c2,

Période résultante)

Ajouter les caractéristiques à la chronique de retour

appelant.traiterElément DeuxièmeChronique(Chronique cr)

 

Désactiver la demande de traitement de l’élément suivant

Activer la demande de poursuite de traitement de l’élément courant

 Retourner

 

 

L7 : Traiter c1 après c2

Période résultante =

début = début période à traiter c2

fin = fin période à traiter c2

 Traiter c1

Désactiver demande traitement de l’élément suivant de c1

Désactiver la demande de poursuite de traitement de l’élément courant

Traiter c2

Préparer les caractéristiques de l’élément de c2 à fusionner

rang de l’élément à traiter c2,

Période résultante)

Ajouter les caractéristiques à la chronique de retour

appelant.traiterElémentDeuxièmeChronique(Chronique cr)

 

Activer la demande traitement de l’élément suivant

Désactiver la demande de poursuite de traitement de l’élément courant

Retourner


Note de mise en œuvre : Le déchevaucheur

Objectif

L’objectif est de fournir un outil permettant de construire, à partir de la chronique à analyser, une chronique d’éléments disjoints ; les éléments retournés doivent vérifier, avant leur ajout dans la chronique résultante qu’ils ne chevauchent pas le dernier élément ajouté.

 

Le déchevaucheur retourne, dans la chronique de retour, donnée en paramètre, les caractéristiques des éléments à la chronique résultante, gérée par le client. Un élément de la chronique de retour (élément à fusionner) est caractérisé par :

·         son rang dans sa chronique d’origine

·         la période effective à proratiser avant l’ajout à la chronique résultante.

 

 

Déchevaucheurt

 

Déchevaucher(

Object leClient,

ChronoItérateur c)

 Retourne les éléments p

 

 

poursuivreDéchevauchement()

Poursuit le déchevauchement ; retourne en séquence si la chronique a été complétement déchevauchée

 

Interface Chevauchable

 

traiterUnElémentDisjoint(

Chronique cr)

{

// proratiser l’élément,

// ajouter l’élément à la chronique résultante

// poursuivre le déchevauchement

}

.

 

traiterPlusieursElémentsSeChevauchant(

Chronique cr)

{

//Explorer séquentiellement la chronique

// pour chaque élément

// proratiser l’élément,

// produire l’élément résultant

// ajouter l’élément résultant à la chronique résultante

// poursuivre le déchevauchement

}

 

 

Hypothèses de traitement

Les éléments de la chronique :

·         sont classés en ordre ascendant sur la date de début

·         peuvent se chevaucher,

 

Traitement

Résumé

Initialiser

Faire tant que la chronique n’a été explorée

Déterminer la date d’analyse

Tirer les conséquences de la date d’analyse

Traiter un trou

Déterminer la période résultante

Déterminer les éléments à retenir

Demander au client le traitement des éléments retenus

 

Schéma de principe

Initialiser

Déterminer la plage de l’analyse

début = date de début du premier élément de la chronique

fin = date de début du dernier élément de la chronique

Fin de la période résultante = veille début du premier élément de la chronique

 

Itérer

Faire tant que la date d’analyse est dans les limites de l’analyse

 

Date d’analyse = Lendemain de la date de fin de la période résultante

 

Tirer les conséquences de la date d’analyse

Cas : La date d’analyse appartient à, au moins, un élément

Traiter une période résultante

Poursuivre l’itération

Cas : La date d’analyse n’appartient à aucun élément

Traiter un trou

Poursuivre l’itération

Retourner

 

 

Traiter un trou (aucun élément entre deux dates)

Rechercher l’élément dont la date de classement est :

postérieure à la date d’analyse

la plus proche de la date d’analyse

Déterminer la nouvelle date d’analyse

Date d’analyse = Veille de la date de début classement

Retouner

 


Déterminer la période résultante

Déterminer la fin de la période résultante

Date de fin candidate = DATE_MAXI

 Rechercher les éléments chevauchant la date d’analyse

Pour chaque élément répondant à la condition

Retenir comme date fin candidate, la plus petite de :

la date de fin de l’élément courant,

la date de fin candidate

 

Rechercher les éléments :

postérieurs à la date d’analyse,

antérieurs à la date de fin candidate

Pour chaque élément répondant à la condition

Retenir comme date fin candidate, la plus petite de :

la veille de la date de début de l’élément courant,

la date de fin candidate

Déterminer la période résultante

début = date d’analyse

fin = date fin candidate

Traiter les éléments résultants

Rechercher les éléments chevauchant la période résultante

 

Cas : Il existe un seul élément

Préparer les caractéristiques de l’élément retenu

rang de l’élément retenu,

Période résultante)

Ajouter les caractéristiques à la chronique de retour

appelant.traiterUn seulElémentDisjoint(Chronique cr)

Cas : Il existe plusieurs éléments

Pour chaque élément retenu

Préparer les caractéristiques de l’élément retenu

rang de l’élément retenu,

Période résultante)

Ajouter les caractéristiques à la chronique de retour

 

appelant.traiterPlusieursElémentsSeChevauchant(Chronique cr)

 

Déterminer la nouvelle date d’analyse

Date d’analyse = Lendemain de la fin de la période résultante

 

Retourner