Professional Documents
Culture Documents
**** ****
Institut Supérieur du Sahel The Higher Institute of the Sahel
**** ****
Département d’Informatique et des Department of Computer Science
Télécommunications and Telecommunications
**** ****
INFORMATIQUE ET TELECOMMUNICATIONS
Présenté par
Sous la Direction de
INFORMATIQUE ET TELECOMMUNICATIONS
Présenté par
Sous la Direction de
À mes Parents
ii
REMERCIEMENTS
Je remercie l’Éternel Dieu Tout Puissant pour son amour inconditionnel envers
moi et pour toutes les grâces dont il ne cesse de m’innonder.
Mes remerciements vont particulièrement :
Au Pr. NSANGOU MAMA pour l’honneur qu’il me fait de présider ce jury.
Au Pr. EMVUDU WONO Yves pour le privilège qu’il m’offre en examinant
ce mémoire
À mon encadreur académique Pr. DANWE RAÏDANDI pour sa disponibilité
et l’encadrement apporté tout au long de la rédaction de ce mémoire.
À tous les enseignants de l’ISS Université de Maroua, en particulier ceux du
Département d’INFOTEL, plus précisément le chef du département d’INFOTEL
Dr. Olivier VIDEME BOSSOU et M. DOUWE HALLAM Vincent pour leur
dévouement et leurs sacrifices tout au long de ma formation.
À tous les Ingénieurs coéquipiers du plateau technique de KOOSSERY pour
leur coopération et leur disponibilité.
iii
RÉSUMÉ
iv
ABSTRACT
- Reduce the cost of user training: koosseryDesk provides a uniform user interface,
rather than of have to adapt to as many interfaces as disparate software
v
LISTE DES TABLEAUX
Tableau 1 : Cahier des charges des composants de service du module ‘archiving’ .............................. 37
vi
LISTE DES FIGURES ET ILLUSTRATIONS
vii
Figure 27 Relation de dépendance entre les couches [9] ..................................................................... 56
Figure 29: Mise en œuvre du principe d'isolation des composants [9] ................................................. 58
Figure 30 : modèle 3-tiers détaillé du socle technique Java de Koossery Technology [9] ................... 59
viii
LISTE DES SIGLES ET ABRÉVIATIONS
Terme Signification
CMR Cameroun
SI System d’informations
ix
TABLES DE MATIÈRES
INTRODUCTION ................................................................................................................................... 1
x
II.3.1 Définition ............................................................................................................................. 20
II.5.1 Introduction.......................................................................................................................... 23
xi
VI.2.4 Outil du build et de gestion du cycle de vie du projet (Maven) ......................................... 63
BIBLIOGRAPHIE ................................................................................................................................ 79
ANNEXE .............................................................................................................................................. 81
xii
INTRODUCTION
De nos jours les entreprises pour subvenir à leurs besoins informatiques, pour le
travail collaboratif déploient plusieurs logiciels spécifiques qu’elles intègrent par la
suite. L’intégration n’est en général pas évidente car d’une part il faut faire
communiquer des modules aux technologies disparates, d’autre part les coûts de
formation utilisateur, d’administration et de maintenance sont élevés car il faut
maintenir des briques hétérogènes…
La plateforme koosseryDesk est une réponse appropriée en ce sens qu’elle est une
plateforme qui se présente sous la forme d’une seule application disposant l’ensemble
des modules nécessaires au travail collaboratif.
Avec l’informatisation des entreprises la production des documents numériques est très
croissante et il se pose le problème de conservation car l’entreprise doit préserver sa
mémoire, fournir des éléments de preuves au tiers (clients, associés, etc.). C’est dans ce
sens que la plate-forme koosseryDesk propose son module ‘archiving’ (qui se place à la
fin de la chaine du traitement de l’information) pour l’archivage électronique.
1
CHAPITRE I : CONTEXTE ET PROBLEMATIQUE
- Travail Collaboratif:
- Plateforme intégrée:
2
koosseryDesk fournit directement aux utilisateurs et aux développeurs une plateforme
intégrante parfaite.
- koosseryDesk .scanchain&analysing ;
- koosseryDesk.ecm&workflow ;
- koosseryDesk.signaturebook ;
- koosseryDesk.archiving ;
- koosseryDesk.dashbord ;
- koosseryDesk.report ;
- koosseryDesk.administration.
koosseryDesk.scanchain&analysing:
L’information en input passe par ce module afin d’être analysée. L'information injectée
dans koosseryDesk peut provenir de divers systèmes : mail, documents papiers,
systèmes tiers (ERP, CRM, applications bancaires, applications assurances etc.), saisie
directe. Ce module est entièrement basé sur les API de Ephesoft et offre en standard
toutes les fonctionnalités d’Ephesoft. A ces fonctionnalités s’ajoutent des
fonctionnalités non couvertes par Ephesoft (exemple: envoi d’un document dans un
espace de travail et de workflow du composant koosseryDesk.ecm&workflow, envoi du
document vers un circuit de signature du composant koosseryDesk.signaturebook.
koosseryDesk.ecm&workflow :
C’est le module des espaces de travail et de workflow. Il est entièrement basé sur les
API de Alfresco repository et offre en standard toutes les fonctionnalités de la GED
Alfresco. A ces fonctionnalités s’ajoutent des fonctionnalités non couvertes par Alfresco
(exemple= création de document à partir d’un modèle de document, configuration de
3
plan de classement par défaut pour les espaces de travail, publication vers d’autres
espaces de travail, envoie du document vers un circuit de signature du composant
koosseryDesk.signaturebook, envoi du document vers un circuit d’archivage du
composant koosseryDesk.archiving, envoi du document vers un circuit de
télétransmission.
koosseryDesk.signaturebook :
Ce module offre des circuits de signature pour les documents. Ces circuits peuvent être
configurables et on peut également définir de nouveaux circuits.
koosseryDesk.archiving :
koosseryDesk.dahsbord :
koosseryDesk.report :
Ce module est basé sur les API Jasper report et permet d’avoir des indicateurs de suivi
sur un certain nombre de points et de processus de la plateforme.
koosseryDesk.Administration :
4
I.1.2.2 Socle technique de kosseryDesk
La plate-forme koosseryDesk est une application java EE composée de :
5
Multilingue: La plateforme koosseryDesk est traduite en Anglais et en Français.
I.2 Contexte
De nos jours le travail collaboratif désigne un travail qui n'est plus fondé sur
l'organisation hiérarchisée traditionnelle, et plus spécifiquement un nouveau mode de
travail (éventuellement intégré dans un modèle économique de production) où
collaborent de nombreuses personnes grâce aux technologies de l’information et de la
communication. Le travail collaboratif (collaboratif Web) passe par la mise en œuvre
d'un intranet composé de fonctions dites collaboratives, permettant de dématérialiser les
processus, flux de communication et tâches de collaboration entre plusieurs
intervenants.
6
Figure 1 : Image d’illustration du travail collaboratif [google image]
- L’intégration car il faut bien que des logiciels aux technologies disparates
communiques ;
- Le coût élevé de la formation utilisateur et d’administration ;
- Le coût élevé de la maintenance ;
7
I.3 Problématique
Vue les problèmes rencontrés en entreprise par la mise sur place du travail
collaboratif l’on se pose les questions suivantes :
La plateforme koosseryDesk est une réponse appropriée en ce sens qu’elle est une
plateforme qui se présente sous la forme d’une seule application disposant de l’ensemble
des modules nécessaire pour le traitement de l’information en entreprise.
I.4 Méthodologie
Il existe dans le domaine du génie logiciel plusieurs méthodes de développement
(en cascade, V, Z, agile...etc.) des systèmes informatiques. La société KOOSSERY
utilise le processus ‘Scrum’ (il est un processus agile) car la plate-forme koosseryDesk
est complexe et se fait développer par des ingénieurs se trouvant au Cameroun et en
France.
‘Scrum’ est défini par ses créateurs comme un « cadre de travail permettant de
répondre à des problèmes complexes et changeants tout en livrant de manière productive
et créative des produits de la plus grande valeur possible » [Ken Schwaber and Jeff
Sutherland, Le Guide de Scrum, 1991-2013]. La méthode s'appuie sur le découpage d'un
projet en boites de temps, nommés « sprints ». Les sprints peuvent durer de quelques
heures à un mois (avec une préférence pour deux semaines). Chaque sprint commence
par une vérification de la planification opérationnelle. Le sprint se termine par une
démonstration de ce qui a été achevé et contribue à augmenter la valeur d'affaire du
produit. Avant de démarrer un nouveau sprint, l'équipe réalise une rétrospective : elle
8
analyse ce qui s'est passé durant ce sprint, afin de s'améliorer pour le prochain.
L'adaptation et la réactivité de l'équipe de développement sont facilitées par son auto-
organisation.
Training (formation) ;
Cette phase nous a permi de nous familiariser avec les outils et l’environnement
technique de KOOSSERY. Le training consiste à travailler sur des parcours qui
aboutissent à des travaux pratiques.
Analyse de la norme SEDA Version 1.0;
Cette phase a été consacrée à l’étude de la norme SEDA 1.0 et à l’étude de l’open
source as@lae Version 1.3 qui est une implémentation de SEDA Version 0.2
Réalisation du projet UML ;
Cette phase a consisté à analyser puis concevoir les composants de services du
module archiving
Implémentation ;
Cette phase est simplement le développement en Java des services composés et
service simples du module archiving sur la base du projet UML élaboré à l’étape
précédente
test unitaire ;
9
Cette phase consiste en l’élaboration des tests unitaires de nos développements
avec la plate-forme de test jUnit.
Cette phase consiste à réaliser un mini projet intégrant le moteur Drools pour la
validation des règles métiers.
I.5 Objectifs
10
CHAPITRE II : GENERALITE SUR L’ARCHIVAGE ET
LES ARCHITECTURES SYSTÈMES
Plusieurs auteurs ont prêté à ce terme des définitions différentes. Dans les
dictionnaires de l'information, l'archivage est défini comme « l'ensemble des méthodes,
processus et outils mis en œuvre pour gérer et conserver les documents qui ont cessé
d'être d'utilité courante. » Cette définition, aujourd'hui, est obsolète car l'archivage
touche l'ensemble des documents, les trois âges. Marie-Anne Chabin, archiviste
française, présente l'archivage comme étant « la démarche d’organisation qui a pour
objectif d’identifier, de mettre en sécurité et de maintenir disponibles l’ensemble des
documents qui engagent une entreprise ou un organisme vis-à-vis de tiers ou de son
activité future et dont le défaut représenterait un risque ».
11
L'unité de base de l'archivage tourne autour de ce qu'on appelle un document, qui
est considéré comme une entité physique constituée par un support individualisé sur
lequel sont fixées des informations. Ces deux définitions montrent que l’archivage
n'englobe pas tous les documents, toutes les données ou toutes les informations, mais
seulement les documents qui engagent leur détenteur. Ces documents, originaux ou
copies, constitués ou non en dossiers, sont fixés sur des supports, qui peuvent être
physiques ou électroniques.
Il existe une théorie fondée sur le cycle de vie des archives. Il s'agit de la théorie
dite « des trois âges ». Ce concept est né dans la seconde moitié du XX° siècle aux États-
Unis (Théodore Schellenberg est le père fondateur de cette théorie). Cette théorie doit
son apparition en France à Yves Pérotin, en 1961, dans un article où il parle des «
archives courantes », des « archives intermédiaires » et des « archives archivées ». Il
souhaitait ainsi intéresser les archivistes à la production des archives avant leur
versement afin d'en contrôler l'évaluation.
Les archives naissent dans les bureaux en vue d'une action plus précise, puis
conservent un intérêt plus ou moins à long terme. Des bureaux aux Archives, les
documents connaissent trois étapes d'utilisation :
Les archives courantes sont ce que l'on appelle les dossiers vivants, qui servent
à la gestion quotidienne des affaires. Ils sont utilisés fréquemment, et sont généralement
conservés à proximité des utilisateurs, dans les bureaux.
Les archives intermédiaires sont les dossiers clos, qui ne sont plus d’usage
courant mais qui sont néanmoins conservés pour des impératifs de gestion et/ou des
impératifs juridiques. Ils sont conservés à proximité des bureaux, souvent dans un local
dédié dit de pré archivage.
12
Les archives définitives sont les dossiers dont l’utilité administrative ou de
gestion est éteinte, mais qui présentent un intérêt historique et qui seront versés dans le
service d’archives compétent pour être conservés indéfiniment.
13
II.1.3 Archivage électronique
Avec l'introduction des nouvelles technologies dans les collectivités et dans les
administrations, beaucoup de documents autrefois tenus sous forme papier sont
aujourd'hui gérés sous forme électronique. A l’instar de l’archive papier, l’archivage
électronique est l’ensemble des procédures définies par une collectivité pour assurer la
conservation de son patrimoine documentaire conformément à un référentiel défini par
l’autorité chargée du stockage et de la mise à disposition future des documents
effectivement versés. Il représente, au sens général, « l'ensemble des actions, outils et
méthodes visant à identifier, recueillir, classer et conserver des informations
électroniques, qui sont mis en œuvre pour conserver à moyen et long terme ces
informations dans le but de les exploiter [16] ». En comparaison avec l'archivage papier,
l'archivage électronique gère les documents numériques, qui sont des « ensembles
composés d’un contenu, d’une structure logique, d’attributs de présentation permettant
leur représentation, dotés d’une signification intelligible par l’homme ou lisible par une
machine [17] ». Il peut être crée à l'état natif ou obtenu par un processus de
transformation d'un document physique, par exemple par numérisation. Les documents
bureautiques, les bases de données, les messages électroniques, les dossiers numérisés
sont considérés comme des documents numériques.
L'intégrité d'un document prouve que celui-ci n’a subi aucun ajout, ni aucune
modification qui pourrait provoquer l'altération ou la destruction des données.
14
Le manuel de spécizfications Moreq2 explique qu'il s'agit de prouver qu'un
document est bien original.
juridique.
Le principal risque est de ne pas pouvoir produire les données requises par un audit
ou un juge dans la forme requise. Non seulement les données doivent avoir été archivées,
15
mais elles doivent présenter des caractéristiques d'authenticité, d'intégrité et de non-
répudiation leur permettant d'être retenues comme élément de preuve valide ;
logistique.
Les données ont été bien archivées techniquement, mais il est pratiquement
impossible d'y accéder car elles n'ont pas été caractérisées pour pouvoir effectuer des
recherches et les moteurs de recherche ne produisent que du « brut » inexploitable ; ou
encore, les données existent, mais ne sont pas intelligibles (on a perdu le moyen de les
décoder et de les interpréter) ;
sécuritaire.
technique.
L'enjeu technique est double, à la fois dans l'espace, avec les problèmes
d'interopérabilité entre systèmes, et dans le temps, avec le défi de pérennité des données
sur le long terme, face à l'obsolescence récurrente des formats, supports et outils de
restitution ;
financier.
L'enjeu financier est double également : coût d'une amende, d'un redressement
fiscal ou d'une condamnation judiciaire et, dans une moindre mesure mais à ne pas
négliger tout de même, temps perdu à la recherche d'informations ou investissement
perdu dans des outils non maintenus dans le temps.
16
II.2 Programmation orientée Objet (POO)
L’objectif de cette section est d’explorer la programmation orientées objets
(POO) et leurs concepts fondamentaux. Ensuite, montrer leurs limites pour une bonne
conception.
II.2.1 Introduction
Le but de la programmation Objet est de se rapprocher le plus possible d'une
représentation de la réalité en programmation, en considérant que tout objet peut être
classé dans une catégorie qui a ses caractéristiques et ses possibilités propres. En effet,
tout objet qui nous entoure peut être "classé" dans une catégorie qui fait elle-même partie
d'autres catégories. Considérons par exemple : votre mobile fait partie de la catégorie
"Téléphone portable", qui elle-même fait partie de la catégorie "Téléphone", faisant
partie de la catégorie "Outil de communication téléphonique", etc…
II.2.2.1 Objet
Un objet est une entité cohérente rassemblant des données et du code travaillant
sur ses données. Une classe peut être considérée comme un moule à partir duquel on
peut créer des objets. Une classe décrit la structure interne d'un objet : les données qu'il
regroupe, les actions qu'il est capable d'assurer sur ses données. En fait, on considère
plus souvent que les classes sont les descriptions des objets, lesquels sont des instances
de leur classe.
II.2.2.2 Encapsulation
L'encapsulation correspond à appliquer le principe de la "boîte noire" aux objets
que l'on crée. Il se traduire par l’abstraction de données et l'abstraction procédurale.
17
- Abstraction procédurale : Du point de vue de l'extérieur (c’est-à-dire en fait du
client de l’objet), l'invocation d'un message est une opération atomique.
II.2.2.3 Héritage
L'héritage est le second des trois principes fondamentaux du paradigme orienté
objet. Il est chargé de traduire le principe naturel de Généralisation / Spécialisation.
18
II.2.2.4 Le polymorphisme
Le polymorphisme est le troisième des trois grands principes sur lequel repose le
paradigme objet. C'est assurément son aspect à la fois le plus puissant et le plus
troublant. Comme son nom l'indique le polymorphisme permet à une méthode d'adopter
plusieurs formes sur des classes différentes. Selon les langages, le polymorphisme
pourra s'exprimer sur l'ensemble des classes d'un système alors que d'autres le confinent
aux classes appartenant à une même hiérarchie. On distingue plusieurs formes de
polymorphisme, à savoir :
- Couplage fort entre les classes : les classes sont liées entre elles
indirectement. Ceci se manifeste par le fait que pour un système existant,
l’ajout des nouvelles fonctionnalités passe par la modification de la
solution existante.
- Cohésion faible : Ceci se matérialise par le fait que les méthodes sont
distribuées entre les différentes classes de notre système.
Toutes ces limites ne nous permettent pas de concevoir un système évolutif, facile
à maintenir et prenant en compte le fait que les besoins évoluent toujours, sont très
19
souvent mal définis et surtout sont incomplets. Les principes de la POO masquent le
fait que la clé d’une bonne conception ne se trouve pas dans l’héritage, mais plutôt dans
l’encapsulation des variations dans un système.
II.3.1 Définition
Ce concept a été formalisé dans le livre [7] On y décrit un Design Pattern conne
étant un concept qui permet de définir une interaction entre les Objets et fournit une
manière élégante de réutiliser des solutions aux problèmes fréquents rencontrés dans le
challenge de la programmation. On peut aussi considérer un Design Pattern comme une
solution classique et éprouvée aux problèmes de conception récurrents dans le monde
du développement.
II.3.2 Cartographie
Les Design Patterns, publié dans le livre [7], sont au nombre de 23 et repartis en
trois catégories.
20
- Les Patterns de comportement qui tente de répartir les responsabilités
entre chaque classe (l’usage est plutôt dynamique).
A ces modèles de conceptions, on peut ajouter d’autre tels que : Le « Data Access
Object » lié à l’accès aux données et le « Service Locator » lié aux systèmes
distribués [15].
21
II.4 Les Architectures n-tiers ou en couches
Il s’agit d’une architecture logicielle inhérente aux différents aspects fonctionnels
d’une application d’entreprise, à savoir : l’aspect Présentation, l’aspect Traitements et
l’aspect Données. Ce type d’architecture permet la distribution d’application entre
multiples services et non la multiplication des niveaux de service (présentation, logique
métier et accès aux données). D’où le terme n-tiers [16]
Avec les architectures n-tiers, on dispose enfin d’une vision cohérente du système
d’information. Tous les composants sont représentés sous la forme d’objets
interchangeables qu’il est possible d’implanter librement, en fonction des besoins. Le
potentiel de ce type d’application est très important et permettrait enfin l’utilisation
d’objets métiers réutilisables.
22
II.4.2 Problème
Nous avons vu que les logiciels basés sur les composants offrent une bonne
solution à la réutilisation et la maintenabilité fonctionnelle. Toutefois les développeurs
font face de jours à des complexités grandissantes (avec la POO, les Design Patterns et
les architecture distribuées) et la naissance de nouveaux besoins tels les intégrations
d’applications, les indépendances de plateformes, les indépendances de protocoles.
C’est à ces problèmes que les architectures orientées services(SOA) tentent d’apporter
une solution.
II.5.1 Introduction
L’architecture orientée service (SOA) s’est imposée aujourd’hui comme un
thème majeur pour les systèmes d’informations (SI) d’entreprise. Plus qu’une nouvelle
technologie ou méthode, c’est la convergence de plusieurs approches existantes, et
l’émergence d’un style d’architecture et de gouvernance de SI.
Une autre motivation est la recherche de l’agilité. Cette notion n’est pas nouvelle:
Les Systèmes d’Information sont en constante évolution. Les organisations sont
confrontées à des demandes de changement toujours plus étendues et plus fréquentes.
Ces changements sont liés à la fois aux réorganisations (fusion, acquisitions), à
l’ouverture des processus et à la multiplication des évolutions des marchés. Les
applications construites et structurées pour répondre à des besoins particuliers dans un
contexte donné ne sont plus adaptées aux réalités présentes. Les changements
technologiques ajoutent encore des contraintes supplémentaires. Aux delà d’un certain
stade, les coûts induits par les modifications deviennent prohibitifs, et les délais
incompatibles avec les demandes métiers. Le système devient trop rigide, prisonnier de
son architecture antérieure. Les évolutions réalisées dans ce cadre détériorent la qualité
du système et renforce encore ces difficultés.
24
II.5.2.2 Principes de la SOA
Diviser pour régner: Substituer la découpe strictement applicative par une
structuration en composants plus réduits et potentiellement plus simples à faire
évoluer.
Automatisation des processus métier. Isoler la logique des processus métiers sur
des composants dédiés qui prennent en charge les enchaînements de tâches et les
échanges de flux d’information.
- Composant de service
- Contrat de service
25
II.5.3.1 Le composant de service
Le composant de service est la brique de base de l’architecture [Figure 5]. Il se
décompose en deux parties : la vue externe (ou spécification de service) qui expose la
facette service proprement dite, et la vue interne qui décrit le contenu du composant
26
Figure 6 - Représentation schématique du système [17]
27
Les types de donnée d’échange (TDE) établissent la sémantique, la structure et
le format de ces données. Ils peuvent être définis à l’aide de schémas XML et
éventuellement de classes UML (DTO acronyme de Data Transfert Object). Chaque
opération de service précise les types de donnée d’échange en entrée et en sortie.
28
Le service est le composant clé de l’architecture et il fournit une fonctionnalité
bien définie. C’est aussi un composant autonome qui ne dépend d’aucun contexte ou
service externe. Les services sont enregistrés par des composants dits fournisseurs dans
un annuaire fourni par l’architecture. Les services référencés sont alors mis à la
disposition de consommateurs ou clients. La figure ci-dessous montre qu’un composant
souhaitant mettre à disposition un service (étiquette 1) l’enregistre dans l’annuaire
(étiquette 2). Puis les composants clients souhaitant utiliser ce service (étiquette 3)
émettent une requête pour rechercher le service désiré dans l’annuaire (étiquette 4). Si
la réponse est positive, une liaison (appelée aussi binding) est mise en place pour
l’utilisation du service (étiquette 5)
29
CHAPITRE III ANALYSE ET CONCEPTION DES
COMPOSANTS DU MODULE ARCHIVING
30
III.1.1 Acteurs SEDA
Demande autorisation
Produire Restituer archives
document
Éliminer archive
Service d’archives
Modifier archive
Transfert
d’archive
Communiquer
archive
- Service Producteur ;
- Service Versant ;
- Service d’archives ;
- Service de contrôle ;
- Service demandeur.
Le Service producteur désigne l’entité qui a produit les archives, c’est-à-dire qui
les a créées ou reçues dans le cadre de son activité.
31
III.1.1.2 Service versant (Transferring Agency)
- Élimination d’archives
32
Destruction de l’archive par le service d’archive dans le SAE. Cette destruction
consiste à la suppression des documents d’archive et conservation des métadonnées
d’archives afin de garder leur traçabilité dans le système.
- Modification d’archives
34
F10 : Éliminer archive à la demande du producteur
35
F32 : Modifier profil d’archives
Gestion des référentiels SEDA F38 : Rechercher tous les Code de Restriction d’accès
36
Gestion des utilisateurs F51 : Créer un utilisateur
37
III.3 Analyse et conception des composants du module Archiving
Le projet UML est une organisation structuré (propre à KOOSSERY ayant fait
l’objet d’une publication scientifique) permettant de consigner la conception technique
d’un Projet afin de favoriser son implémentation par les développeurs. Le projet UML
sert d'outil de communication entre les différents intervenants techniques du projet. Il
repose sur la méthodologie décrite dans le document suivant : « framework-pour-
modelisation-projet-langage-uml » [14]. Cette Structure fondamentale s’exprime à
travers plusieurs parties parmi lesquelles nous utilisons le Use Case View et le Logical
View.
Le Use Case View est constitué de plusieurs parties (Business Model, User
Interface et le Use Case Model) et celle qui nous intéresse ici est le Use Case Model.
38
III.3.2.1 L’acteur du système et le contexte
39
uc Main
Transfer archiv es
Find transfert d'archiv es
Modifier un transfert
Verrouiller un
d'archiv es
transfert d'archiv es
traiter un transfert
Supprimer un Dev errouiller un transfert
transfert d'archiv es d'archiv es
(from UC-TRANSFERT-008-Traiter un transfert)
«system»
Context::koosseryDesk.archiving.Server
kooosseryDesk.archiving.FrontEnd
Transfer d'archives
(from Actors)
40
Cas d’utilisation 2 : Gestion des archives
Le cas d’utilisation Gestion des Communication est une abstraction des cas
d’utilisations créer une demande de communication, modifier une demande de
communication, supprimer une demande de communication, rechercher demande de
communication, verrouiller une demande de communication, communiquer archive à
un demandeur.
Le cas d’utilisation Gestion des restitutions est une abstraction des cas
d’utilisation restituer des archive au producteur, créer une demande de restitution,
verrouiller une demande de restitution, modifier une demande de restitution, supprimer
une demande de restitution, supprimer une demande de restitution.
Le cas d’utilisation Gestion des profils d’archives est une abstraction des cas
d’utilisation créer un profil d’archive, modifier un profil d’archive, supprimer un profil
d’archive, rechercher profil d’archive.
41
Cas d’utilisation 7 : Gestion des Référentiels SEDA
Le cas d’utilisation Gestion des Référentiels SEDA est une abstraction des cas
d’utilisation rechercher tous les Code de Restriction d’accès, rechercher tous les codes
du sort final, rechercher tous les niveaux de description, rechercher tous les types de
documents, rechercher tous les types de fichier, rechercher tous les types de mot clés,
rechercher tous les codes de langues, rechercher tous les codes Mime, rechercher tous
les codes de réponse.
Le cas d’utilisation Gestion des acteurs SEDA est une abstraction des cas
d’utilisation créer un acteur SEDA, modifier un acteur SEDA, rechercher acteur SEDA.
Le cas d’utilisation Gestion des utilisateurs est une abstraction des cas
d’utilisation créer un utilisateur, modifier utilisateur, supprimer un utilisateur,
rechercher tous les utilisateurs.
Le cas d’utilisation Gestion des rôles est une abstraction des cas d’utilisation
créer un rôle, modifier rôle, supprimer un rôle, rechercher tous les rôles.
Le cas d’utilisation Gestion des rôles est une abstraction des cas d’utilisation
créer un workflow, modifier workflow, supprimer un workflow.
Le cas d’utilisation Gestion des rôles est une abstraction de traiter une demande
d’autorisation.
42
III.3.2 Logical View
Le « logical View » est compose de deux grandes parties Data Model qui
représente le schéma de la base de données et le Analysis Model qui est une réalisation
des use case. Le « Data model » étant réalisé par l’équipe qui s’occupe de la couche des
accès aux données, nous allons présenter juste le « analysis Model ». Le « Analysis
Model » est composé de 3 parties à savoir : « service», « Business Component » et le
« Use Case Realizations ».
43
class Cartographie des serv ices
«interface»
Transfert::ITransfertService «interface»
Restitution::IRestitutionService
+ delete(ArchiveTransferDTO) : void
+ find(ArchiveTransferDTO) : List<ArchiveTransferDTO> + restitute(archiveRestitutionRequestDTO) : ArchiveRestitutionDTO
+ lock(ArchiveTransferDTO) : void + create(ArchiveDeliveryRequestDTO) : long
+ transfer(ArchiveTransferDTO) : ArchiverTansferRequestReplyDTO + delete(ArchiveDeliveryRequestDTO) : void
+ unLock(ArchiveTransferDTO) : void + lock(ArchiveDeliveryRequestDTO) : void
+ update(ArchiveTransferDTO) : void + find(ArchiveDeliveryRequestDTO) : List< ArchiveDeliveryRequestDTO>
+ analyse(ArchiveTransferDTO) : void + update(ArchiveDeliveryRequestDTO) : void
+ process(TraitementStepDTO, long, long) : void
«interface»
Communication::IDeliveryService
«interface»
Archive::IArchiveService + deliver(archiveDeliveryRequestDTO) : ArchiveDeliveryRequestReplyDTO
+ create(rchiveDeliveryRequestDTO) : long
+ eliminate(ArchiveDTO) : void + update(ArchiveDeliveryRequestDTO) : void
+ find(ArchiveDTO) : List<ArchiveDTO> + delete(ArchiveDeliveryRequestDTO) : void
+ removeDefinitivelyFromTheSystem(ArchiveDTO) : void + find(ArchiveDeliveryRequestDTO) : List<ArchiveDeliveryRequestDTO>
+ update(ArchiveDTO) : ArchiveModificationNotificationDTO + lock(ArchiveDeliveryRequestDTO) : void
+ create(ArchiveEliminationRequestDTO) : long
+ update(ArchiveEliminationRequestDTO) : long
+ delete(ArchiveEliminationRequestDTO) : long
+ find(ArchiveEliminationRequestDTO) : list<ArchiveEliminationRequestDTO>
«interface»
+ lock (ArchiveEliminationRequestDTO) : void
ArchivalAgreement::IArchivalAgreementService
+ create(ArchivalAgreementDTO) : long
«interface»
+ delete(ArchivalAgreementDTO) : void
Referentiel::IReferentielService + update(ArchivalAgreementDTO) : void
«interface»
+ findAll() : List<AccessRestrictionCodeDTO> + find(ArchivalAgreementDTO) : List<ArchivalAgreementDTO>
User::IUserService
+ findAll() : List<AppraisalCodeDTO>
+ findAll() : List<DescriptionLevelCodeDTO> + create(UserDTO) : long
+ update(UserDTO) : void «interface»
+ findAll() : List<DocumentTypeCodeDTO>
+ delete(UserDTO) : void ArchiveProfil::IArchiveProfilService
+ findAll() : List<FileTypeCodeDTO>
+ findAll() : List<KeywordTypeCodeDTO> + findAll() : List<UserDTO> + create(ArchiveProfilDTO) : long
+ findAll() : List<LanguageCodeDTO> + delete(ArchiveProfilDTO) : void
+ findAll() : List<MimeCodeDTO> + find(ArchiveProfilDTO) : List< ArchiveProfilDTO>
+ findAll() : List<ReplyCodeDTO> «interface» + update(ArchiveProfilDTO) : void
Role::IRoleService
«interface» + create(RoleDTO) : long «interface»
Organization::IOrganizationService + update(RoleDTO) : void WorkFlow::IWorkFlowService
+ create(OrganizationDTO) : long + delete(RoleDTO) : void + create(WorkFlowDTO) : long
+ find(OrganizationDTO) : List<OrganizationDTO> + findAll() : List<RoleDTO> + update(WorkFlowDTO) : void
+ update(OrganizationDTO) : void + find(WorkFlowDTO) : List<WorkFlowDTO>
+ findOne(long) : OrganizationDTO 44 + delete(WorkFlowDTO) : void
C'est dans ce package qu'on regroupe tous les composants métiers du système.
45
class Structure
«domain»
«domain» «domain» «domain»
Archiv eDTO
AttachementDTO ContentDescriptionDTO DocumentDTO
- accessRestrictionRule: AccessRestrictionRuleDTO - accessRestrictionRule: AccessRestrictionRuleDTO
- date: date - archivalAgencyDocumentIdentifier: string
- appraisalRule: AppraisalRuleDTO - custodialHistory: CustodialHistoryDTO
- fileTypeCode: string - attachement: Attachement
- archivalAgencyArchiveIdentifier: string
- id: int - description: string - control: bool
- contentDescription: ContentDescriptionDTO
- mineCode: string - filePlanPosition: string - copy: bool
- languageCode: LanguageCodeDTO
- path: string - latestDate: Date - creationDate: Date
- listOfArchiveObject: List<ArchiveObject> - listOfKeyword: List<Keyword>
- taille: byte - description: string
- listOfDocument: List<Document> - listOfOtherMetatData: List<OtherMetaData>
- version: string - documentTypeCode: DocumentTypeCodeDTO
- name: string - listOfRelatedObjectReference: List<RelatedObjectReference> - integrity: byte
- originatingAgencyArchiveIdentifier: string - OldestDate: Date - issue: Date
- transferingAgencyArchiveIdentifier: string
- originatingAgencyId: int - languageCode: LanguageCodeDTO
«domain» «FK» - otherDescriptiveData: string - listOfOtherMetaData: List<OtherMetaData>
OtherMetaDataDTO - archivalAgreementId: int - size: float - listOfRelatedData: List<RelatedData>
- archivalProfileId: int - OriginatingAgencyDocumentIdentifier: string
- path: string «FK»
- archiveDeliveryRequestReplyId: int - purpose: string
- descriptionLevelCode: DescriptionLevelCodeDTO
«FK» - archiveRestitutionId: int - languageCode: LanguageCodeDTO - receiptDate: Date
- documentId: int - archiveRestitutionRequestId: int - reprositoryId: int - responseDate: Date
- contentDescriptionId: int - archiveTransferReplyId: int - size: int
- archiveTransferRequestId: int «PK»
«PK» - status: string
- archiveTransferRequestReplyId: int - id: int
- id: int - submissionDate: Date
- archiveTransfertId: int - transferingAgencyDocumentIdentifier: string
- authorizationControlAuthorityRequest: int
«domain» «FK»
- authorizationOriginatingAgencyRequestId: int Archiv eObj ectDTO
«domain» - archiveId: int
- authorizationOriginatingAgencyRequestReplyId: int
CustodialHistoryDTO - archiveObjectId: int
- serviceLevelCode: string - accessRestrictionRule: AccessRestrictionRuleDTO
- appraisalRule: AppraisalRuleDTO «PK»
- costodialHistoryItem: string «PK»
- archivalAgencyObjectIdentifier: string - id: int
«PK» - id: int
- contentDescription: ContentDescriptionDTO
- id: int - listOfArchiveObject: List<ArchiveObject>
- listOfDocument: List<Document> «domain»
«domain»
- name: string keyw ordDTO
«domain» RelatedDataDTO
RelatedObj ectReferenceDTO - originatingAgencyObjectIdentifier: string - accessRestrictionRule: AccessRestrictionRuleDTO
- data: byte - transferingAgencyObjectIdentifier: string - keywordContent: string
- RelatedObjectIdentifier: int - listOfRelatedData: List<RelatedData> «FK» - keywordReference: string
- relation: string - relation: string - archiveId: int - keywordTypeCode: KeywordTypeCodeDTO
«PK» «PK» - parentId: int «PK»
- id: int - id: int «PK» - id: int
«FK» «FK» - id: int «FK»
- contentDescriptionId: int - documentId: int - contentDescriptionId: int
46
III.3.2.2.1.2 dao du « composant» Archive
class Structure
Archiv eDAO
RelatedObj ectReferenceDAO
+ find(ArchiveDeliveryRequestDTO) : List<ArchiveDTO>
+ findOne(long) : ArchiveDTO + insert(RelatedObjectReferenceDTO) : long
+ insert(archiveDTO) : long + delete(long) : void
+ delete(long) : void + update(RelatedObjectReferenceDTO) : void
+ update(ArchiveDTO) : void
+ find(ArchiveDTO) : List<ArchiveDTO>
ReletedDataDAO
OtherMetaDataDAO CustodialHistoryDAO
+ insert(RelatedDataDTO) : long
+ delete(long) : void + insert(OtherMetaDataDTO) : void + insert(CustodialHistoryDTO) : long
+ update(RelatedDataDTO) : void + delete(long) : void + delete(long) : void
+ update(OtherMetaDataDTO) : void + update(CustodialHistoryDTO) : void
47
III.3.2.2.1.3 Service simple (sisv) du « composant» Archive
class Structure
Archiv eSISV
+ concreteEliminate(ArchiveDTO) : void
+ create(ArchiveTransferRequestDTO) : ArchiveTransferRequestReplyDTO
+ delete(ArchiveTransferDTO) : void
+ deliteTransfer(Long) : void
+ deliver(ArchiveDeliveryRequestDTO) : ArchiveDeliveryRequestReplyDTO
+ eliminate() : void
+ eliminate(ArchiveDTO) : void
- find(ArchiveDeliveryRequestDTO) : List<ArchiveDTO>
+ find(ArchiveDTO) : List<ArchiveDTO>
+ find(ArchiveTransferDTO) : List<ArchiveTransferDTO>
+ lock(ArchiveTransferDTO) : void
+ remove(long) : void
+ remove(ArchiveDTO) : void
+ restitute(ArchiveRestitutionRequestDTO) : ArchiveRestitutionDTO
+ transfer(ArchiveTransferDTO) : ArchiveTransferReplyDTO
+ unlock(ArchiveTransferDTO) : void
+ update(ArchiveDTO) : ArchiveModificationNotificationDTO
+ update(ArchiveTransferDTO) : void
- validate(ArchiveTransferRequestDTO) : bool
- validate(archiveTransferDTO) : bool
- validate(ArchiveDeliveryRequestDTO) : bool
- validate(ArchiveRestitutionRequestDTO) : bool
48
III.3.2.2.2 « composant » Transfert
class Structure
«domain» «domain»
Archiv eTransferDTO Archiv eTransferRequestDTO
- comment: string - comment: string
- date: Date - date: Date
- listOfArchive: List<ArchiveDTO> - listOfArchive: List<ArchiveDTO>
- signature: SignatureDTO - signature: SignatureDTO
- transferringAgencyId: int - transfertDate: Date
«FK» «FK»
- archivalAgencyId: int - archivalAgencyId: int
- relatedTransferReferenceId: int - RelatedTransferReference: int
- transfertRequestReplyId: int
«PK»
«PK» - id: int
- id: int - transferringAgencyId: int
«domain»
«domain»
Archiv eTransferReplyDTO
Archiv erTansferRequestReplyDTO
- comment: string
- comment: string
- date: Date
- date: Date
- grandDate: Date
- listOfArchive: List<ArchiveDTO>
- listOfArchive: List<ArchiveDTO> - replyCode: string
- replyCode: string - transferDate: Date
- signature: SignatureDTO
«FK»
«FK»
- archivalAgencyId: int
- archivalAgencyId: int
- signature: SignatureDTO
- transferId: int - transferRequestId: int
- transferringAgencyId: int - transferringAgencyId: int
«PK»
«PK»
- id : int
- id: int
class Structure
Archiv eTranferDAO
Archiv eTransferRequestDAO
+ delete(Long) : void
+ insert(ArchiveTransferRequestDTO) : long
+ find(ArchiveTransferDTO) : List<ArchiveTransferDTO>
+ findOne(Long) : ArchiveTransferDTO
+ insert(ArchiveTransferDTO) : long
+ update(ArchiveTransferDTO) : void
49
III.3.2.3 Use Case Realizations
sisv::ArchiveSISV dao::AccessRestrictionRuleDAO
create(accessrestrictionRuleDTO) :long
id technique accessRestrictionRule
50
sd other
sisv::ArchiveSISV dao::AppraisalRuleDAO
create(appraisalRuleDTO) :long
id technique appraisalRule
sd other
seq
create(custodialHistoryDTO) :long
id technique custodialHistory
create(contentDescriptionDTO) :long
id technique contentDescription
seq
create(keywordDTO)
id technique keyword
id technique relatedObjectReference
seq
51
sd document
create(attachementDTO) :long
id technique attachement
create(documentDTO) :long
id technique document
id technique relatedData
sisv::ArchiveSISV dao::ArchiveObjectDAO
seq
seq
seq
create(archiveObjectDTO) :long
id technique archiveObject
seq
Ref SD: create document
52
sd archiv e
sisv::ArchiveSISV dao::ArchiveDAO
seq
Ref SD : create accessrestrictionRule
seq
Ref SD: create appraisalRule
seq
Ref SD: create ContentDescription
create(ArchiveDTO) :long
id technique archive
seq
Ref SD: create document
seq
53
«actor,Extern...
sd Transfer Archiv e
kooosseryDesk.archiving.FrontEnd
transfer(archiveTransferDTO) :ArchiverTansferRequestReplyDTO
validate(ArchiveTransferRequestDTO) :bool
boolValue
[boolValue]:
create(archiveTransferRequestDTO) :ArchiveTransferRequestReplyDTO
create(ArchiveTransferRequestDTO) :long
id archiveTransferRequest
create(archiveTransferRequestReplyDTO) :long
id archiveTransferRequestReply
archiveTransferRequestReply
validate(ArchiveTransferDTO) :bool
boolValue
[boolValue]:
Begin
Transaction
create(archiveTransferDTO) :ArchiveTransferReplyDTO create(archiveTransferDTO) :long
id archiveTransfer
seq
create(archiveTransferReplyDTO) :long
id archiveTransferReply
archiveTransferReply
end
archiveTransferReply Transaction
(from Actors)
Figure 25 : Réalisation de cas d’utilisation ‘Transférer une archive’
54
III-Architecture logique du module archiving de koosseryDesk
Service Composants métiers
s ITransfertService
IArchiveService
Service de gestion
des archives
interne)
IDeliveryService
Service de gestion des
communications
IRestitutionService
Service de gestion
des restitutions
IArchivalProfilService
Service de gestion des
profils d’archives
SISVFinder
IArchivalAgreementService
Service de gestion des DAOControleur
accords de versement
IReferentielService
Service de gestion des
référentiels SEDA
IOrganizationService DAO (Data Access Object)
Service de gestion des
Acteurs SEDA
IDUserService
Service de gestion
des utilisateurs
Storage
SGBD File System
55
Figure 26 : Architecture globale du module archiving
CHAPITRE IV REALISATION DES COMPOSANTS DU
MODULE ARCHIVING
SVCO
SISV
DAO
La couche DAO
C’est la couche d’accès aux données. Les données peuvent être stockées dans une
base de données (MySQL, Oracle, SQL Server….) ou sur tout autre support (fichier
Excel, XML, ….). Pour accéder aux données, la couche DAO va s’appuyer sur un
Framework de mapping O/R. iBatis et Hybernate sont les Framework de mapping Objet
relationnel (O/R) les plus utilisés à KOOSSERY. Il arrive aussi souvent de s’appuyer
directement sur JDBC mais cela se fait en respectant une architecture similaire à
l’utilisation d’un mapping O/R.
56
La couche SISV
La couche SVCO
C’est la couche des services composés. Elle suit le design pattern des « Service
Composer ». Son but est de composer des services simples autant que nécessaire afin de
réaliser une demande cliente. Cette couche est constituée de services à haute valeur
ajoutée.
Afin de bien isoler les couches les unes des autres et aussi de permettre la
réutilisation des services d’une couche par de nouveaux appelants, KOOSSERY a choisi
comme principe directeur de toujours séparer l’interface d’un composant de son
implémentation. Il est important de comprendre que le granule du Framework est le
composant et non chaque classe devant être codée pour l’application. Les services
57
rendus par le composant sont publiés via une façade. Un consommateur du service
accède au composant via cette façade. Afin de localiser la façade ou le service adéquat,
le consommateur se sert d’un utilitaire : le Finder.
Cette pratique facilite énormément par exemple le changement d’implémentation
ou le changement de localisation d’une implémentation. La figure 28 illustre bien le
principe d’isolation de services et de localisation de ceux-ci via le Finder.
58
VI.1.2.2 Architectures logicielles et mise en œuvre avec le socle koosseryServer
Le socle technique de KOOSSERY pour les applications Java s’intègre aussi bien
dans les architectures SOA que dans les architectures n-tiers. Il utilise pour cela la
technologie Spring pour mettre en œuvre ces différents concepts. Nous allons ici
présenter comment le Framework arrive à se glisser dans les architectures SOA et n-
tiers et aussi la mise en œuvre avec Spring et iBatis.
Controleur Service
DAO (Data Acces
«interface» Object)
SVCO Finder
DAO
«interface»
SVCO
DATA SOURCE
DAO Factory
Usage
Web Appli / Win Form
SISV Finder Usage «interface»
SISV Données
Implémentation
Implémentation
VO «utility» «utility»
Exceptions Utilitaires
SVCO SISV
59
VI.1.3 Framework Spring (IOC et AOP)
Le Framework spring est une infrastructure similaire à un serveur
d'applications J2EE . Il prend en charge la création d’objets et la mise en relation
d’objets par l’intermédiaire d’un fichier de configuration qui décrit les objets à fabriquer
et les relations de dépendances entre ces objets. Le gros avantage par rapport aux
serveurs d’application est qu’avec spring, les classes n’ont pas besoin d’implémenter
une quelconque interface pour être prises en charge par le Framework (au contraire
des serveur d'applications J2EE et des EJBs). C’est en ce sens que spring est qualifié de
conteneur “ léger ”. Le framework spring est basé sur trois concepts clés (Inversion of
Control, Aspect Oriented Programming et Abstraction) [3]. Dans le cadre de notre
travail nous avons utilisé les concepts suivants de spring :
SPRING
60
VI.1.3.2 Aspect Oriented Programming (AOP) avec spring
L’AOP est un paradigme qui permet de séparer les aspects transversaux (sécurité,
journalisation et gestion des transactions) afin que le développeur soit mieux concentrer
sur la logique métier. spring nous offre son côté AOP pour la gestion des transactions.
61
Figure 32 : illustration de la mise en œuvre de Drools (google image)
62
VI.2.3 Système de gestion de version (SVN)
Dans un projet de développement logiciel les membres de l’équipe n’étant pas
forcement sur place et chacun s’occupant d’une portion du code, il se pose alors le
problème d’accès concurrentiel au code et de l’évolution de celui-ci (le versionning).
Pour pallier à ce problème la société KOOSSERY dispose d’un serveur de gestion de
version SVN qui garde le code source de référence et dispose sur les différents postes
développeurs un client SVN pour l’accès au code stocké sur le serveur.
63
VI.2.6 Plate-forme d'intégration continue
L’intégration continue est une technique puissante qui permet de garder en phase
les équipes de développement et de limiter les risques et la complexité liée à la création
par plusieurs développeurs d’un logiciel unique. A intervalles réguliers, on construit
(build) et teste la dernière version du logiciel. Parallèlement, chaque développeur teste
et valide (commit) son travail en ajoutant son code dans un lieu de stockage commun à
tous les développeurs. Après le commit vers le serveur de sauvegarde il est nécessaire
de se rassurer que les dernières modifications n’ont pas créé des bugs puis par la suite
de générer le rapport et créer une version déployable du projet en cas de validation de
test. La société KOOSSERY a choisi la plate-forme CRUISE CONTROL en raison
de sa popularité et son ancienneté.
64
IV.3 Implémentation du module Archiving de koosseryDesk
65
Nous avons travaillé spécifiquement sur le back-end (partie serveur) du module
archiving de koosseryDesk.
IV.3.1 kooseryDesk.server.contract
L’implémentation du module ‘contract’ consiste à implémenter toutes les
données de transferts (DTO), l’exception serveur et les interfaces des services à exposés
au front-end.
66
La figure ci-dessus présente les configurations nécessaires pour le bon
fonctionnement des services simples. Les contenus des fichiers ci-dessous sont
représentés en annexe.
Une fois la configuration des ressources terminée on peut alors commencer le code.
67
IV3.3.1 Configuration des ressources pour les services composées
68
Après chaque implémentation et tests unitaires en local, nous effectuons les opérations
suivantes :
69
Figure 39 : Configuration de l’AOP Pour la validation des règles
Figure 40 drools-config.xml
70
CHAPITRE V : RESULTATS ET COMMENTAIRES
Dans cette partie nous présentons et commentons les résultats obtenus de nos
travaux. Au terme de nos travaux nous avons réalisé 10 sur 12 cases d’utilisation
abstraits présentés dans le cahier des charges. Cette réalisation est constituée des deux
projets suivants :
- Un projet UML;
- Un projet Maven;
71
V.2.2 Résultats des tests unitaires
Cette partie consiste à la présentation des résultats de test unitaire de nos
implémentations. La plate-forme de test JUnit 4 nous permet de réaliser les tests
unitaires, elle nous donne également le temps de réponse de chaque fonctionnalité afin
que nous puissions optimiser nos algorithmes pour réduire le temps de réponse du
serveur.
72
V .2.2.2 Résultats des tests du composant de service «ArchiveServiceImpl »
La figure 42 représente les résultats d’exécution du composant gestion des
archives issu de la plate-forme JUnit. Ici toutes les fonctionnalités ont été réalisées et
sont exposées au front-end à travers l’interface ‘IArchiveService’
73
V .2.2.4 Résultats des tests du composant de service «RestitutionServiceImpl »
La figure 42 représente les résultats d’exécution du composant gestion des
Restitutions d’archives issu de la plate-forme JUnit. Ici toutes les fonctionnalités ont
été réalisées et sont exposées au front-end à travers l’interface ‘IRestitutionService’
74
V .2.2.6 Résultats des tests du composant de service «OrganizationServiceImpl »
La figure 46 représente les résultats d’exécution du composant gestion des
acteurs SEDA issu de la plate-forme JUnit. Ici toutes les fonctionnalités ont été
réalisées et sont exposées au front-end à travers l’interface ‘IOrganisationService’
75
V .2.2.9 Résultats des tests du composant «ArchivalAgreementServiceImpl »
La figure 49 représente les résultats d’exécution du composant gestion des
accords de versement issu de la plate-forme JUnit. Ici toutes les fonctionnalités ont été
réalisées et sont exposées au front-end à travers l’interface
‘IArchivalAgreementService’
76
V.3 Évaluation des composants de service du module ‘archiving’
Total 63 56 88,9%
La tâche qui nous est allouée durant notre stage ingénieur consistait à participer
au développement de la plate-forme koosseryDesk en développant les composants de
service du module archiving. Comme vous pouvez le constater à travers le taux de
réalisation qui est de 88,9% que le développement des composants de services du
module d’archive n’est pas achevé. Vue la charge du travail à réaliser sur le module
archiving 4 mois n’ont pas été suffisant, d’où la nécessité d’un temps supplémentaire
pour clos totalement le module archiving de koosseryDesk.
77
CONCLUSION ET PERSPECTIVES
Perspectives
L’intégration du moteur de validation des règles ‘Drools’ peut faire l’objet d’une version
future de la plate-forme kosseryDesk.
78
BIBLIOGRAPHIE
Ouvrages et Articles
[1] Gilbert Raymond, SOA: Architecture Logique, version 2.1, Softeam, Paris, 2011.
[3] Gary Mak, Hervé Soulard (traducteur), Spring Recipes,a problem-solution approach
( Spring par l’exemple), Pearson Education, Spring Source, Paris, 2009.
[4] Petar Tahchiev, Felipe Leme, Vincent Massol, Gary Gregory, JUnit in action, second
edition, Manning Publications Co, Stamford, USA, 2011.
[5] Michal Bali, Drools JBoss Rules 5.0 Developer's Guide, Packt Publishing, 2009.
[6] Alan Shalloway, James R. Trott, Deseign Patterns Explained A New Perspective on
Object-Oriented Deseign, second edition, Ed Addison Wesley Professional, 2004
[8] Vincent Legendre, Gérald Petitjean, Thierry Lepatre, Gestion des règles « métier »,
No 92, 2010.
[10] ISIMA École Doctorale Sciences Fondamentales, Introduction aux objets. 1999
79
Thèses et mémoires
[11] Ludivine Magrez, Comment choisir une solution de gestion d'archives : le cas de
la Communauté d’Agglomération de la Porte du Hainaut, Université Charles de Gaulle
Lille 3,UFR IDIST, 2010.
[13]http://www.archivesdefrance.culture.gouv.fr/seda/documentation/SEDA_descripti
on_standard_v1_0.pdf, consulté le 26/03/2014 à 9h00 CMR
[14]http://koossery-tech.developpez.com/tutoriels/uml/framework-pour-modelisation-
projet-langage-uml, consulté le 01/04/2014 CMR
[17]http://www.softeam.fr/pdf/fr/SAO_Architecture_Logique.pdf, consulté le
04/05/2014, 10h30 CMR
80
ANNEXE
koosseryDeskSISVMessage.xml
81
spring-koosseryDeskSISV.xml
koosseryDeskSISV.properties
82
koosseryDeskSISV.properties
env.properties
koosseryDeskServiceMessage.xml
83
log4j.properties
84
spring-koosseryDeskService.xml
85