Évolution de la Technologie de l'Information
Évolution de la Technologie de l'Information
Chapitre I
Rôle et évolution de la Technologie de l'Information
1. La Technologie de l’Information
L’intégration de la Technologie de l’Information au sein des entreprises dans les années
soixante, a été l’un des facteurs importants impliqués dans l’amélioration de leurs
performances. Les capacités de structurer et mémoriser l’information, la puissance de calcul
et les possibilités d’automatiser et de contrôler les traitements, sont autant d’atouts séduisants
et puissants offerts aux entreprises.
Sans remonter aux années 30-50, "préhistoire" de l'informatique, nous allons en quelques
lignes retracer l'évolution de la technologie Informatique, depuis les années 60 jusqu'à nos
jours.
Dans les années 60 et début des années 70, l’utilisation première de cette technologie était
plutôt orientée vers la gestion des fiches de paie, la comptabilité et la gestion des commandes
et des factures clients. L'intérêt de l'informatique se limitait à ses capacités à traiter plus ou
moins rapidement de gros volumes de données et les ordinateurs avaient essentiellement le
rôle de super calculateurs. Leur coût était - très - élevé, leur rendement plutôt modeste et leur
manipulation ardue, raisons pour lesquelles ces outils n'avaient pas encore attiré l'attention des
managers des entreprises. Ouvrons ici une petite parenthèse pour signaler que l'expression
"Computer Science" est plutôt mal traduite par le terme "Informatique". En effet, le mot
"computer", dérivé du verbe "compute" exprime un traitement lié à un calcul, alors que le mot
Informatique réunit, comme chacun le sait, les mots "information" et "automatique". Or dans
ces années là, il n'est encore que question de données et pas d'informations.
A partir du milieu des années 70 jusqu'au début des années 80, les progrès réalisés autant dans
le domaine du matériel que des logiciels (ainsi que de la théorie), ont attiré l'attention des
entreprises (et principalement de leur management). Celles-ci se sont vite rendu compte des
innovations et des améliorations qu’il était possible de réaliser à l’appui de cette technologie.
D'outil utilitaire - "brasseur" de données - les systèmes informatiques passent à l'état d'outil
stratégique, pouvant apporter un avantage compétitif décisif aux entreprises qui prennent
l’initiative de les mettre en œuvre. Il ne s'agit plus uniquement de manipuler des données pour
automatiser des traitements, mais également de relier ces données afin de produire de
l'information. Il est alors véritablement possible de parler de Technologie de l'Information.
1
Chapitre I : Rôle et évolution de la technologie de l'Information
Un bon exemple d'innovation compétitive au cours des années soixante-dix est celui du
système SABRE, développé par la compagnie aérienne « Américan Airlines » [PEAUCELLE
99]. Le but du système était de prendre en charge les demandes de réservation de places
d’avion, et de supporter la mise en œuvre des nouvelles stratégies commerciales de la
compagnie (par l'analyse des comportements et des besoins des clients). Malgré le coût élevé
du projet (environ 250 millions de dollars) l’innovation et les facilités apportées par ce
système ont rapidement séduit les clients et placé la compagnie au premier rang mondial. Plus
encore, les très importants bénéfices engendrés grâce à l’utilisation du système ont vite attiré
les autres compagnies qui ont requis la possibilité d’y être hébergées, augmentant de ce fait
les bénéfices de la compagnie initiatrice du système. Comme exemple beaucoup plus récent,
les entreprises ont vite compris le parti qu’elles pouvaient tirer de l’explosion de l’Internet et
des technologies du Web, ce qui se reflète aujourd’hui par l’omniprésence du concept du
commerce électronique.
A partir des années 80, la Technologie de l’Information s’est rapidement répandue au sein des
entreprises (notamment celles de tailles importantes) qui se sont équipées d’outils (matériel et
logiciel) de plus en plus performants, dédiés à des tâches spécifiques (comptabilité, gestion
des stocks, Conception Assistée par Ordinateur, etc.). Cette expansion s'est vue facilitée par
l'apparition de la "micro-informatique", plus légère, plus accessible et plus "démocratique".
On constate cependant que la structure informatique des entreprises s’est retrouvée composée
de ressources hautement spécialisées, mais dispersées et cloisonnées, avec peu
d’interopérabilité : c’est le phénomène des "îlots d’excellences" ("islands of automation")
[WALDNER 92]. Ce phénomène traduit le fait que la technologique de l’information a
surtout été utilisée de façon "ponctuelle" ou individuelle. Les conséquences ont été certes une
amélioration des performances des individus ou de petits groupes d’individus, mais ont induit
d’autre part de nouveaux problèmes de fragmentation de l’information et par conséquent, de
communication entre systèmes et services.
Le début des années 90 a observé une mouvance vers une mise en valeur de la nécessité de
sortir les compétences individuelles des différents services et départements de l’entreprise,
pour les concentrer dans une même entité "logique" autour d’un objectif commun. En termes
de Technologie de l’Information, cette mouvance s'est justifiée en partie par la constatation
du fait que les gains engendrés par l’usage de la technologie dans un but collectif étaient plus
importants que ceux générés par des technologies performantes, mais appliquées à des
2
Chapitre I : Rôle et évolution de la technologie de l'Information
Direction Direction
Processus
Activité 3.1 Activité 4.1 Activité 5.1 Activité 3.1 Activité 4.1 Activité 5.1
{
Fonction Activité 3.2
…
Activité 4.2
…
Activité 5.2
…
Activité 3.2
…
Activité 4.2
Activité
…
4.2 Activité 5.2
…
Cette importance croissante de la notion de processus et du travail de groupe ainsi que les
changements dans la conception du travail et de son organisation impliquent nécessairement
des évolutions des technologies de l’information. Les prochains paragraphes se concentrent
sur les répercussions de ses évolutions sur celles des systèmes d'informations, en explicitant
quels sont les nouveaux besoins et les nouvelles fonctionnalités qui leur sont réclamées. Nous
3
Chapitre I : Rôle et évolution de la technologie de l'Information
tentons également de clarifier certaines des notions présentées ci-dessus, notamment celles de
processus et de processus métiers.
Le dictionnaire en ligne des éditions Hachette [HACHETTE 97] nous renseigne qu'un
processus est "un développement temporel de phénomènes marquant chacun une étape". Plus
précisément, pour Davenport [DAVENPORT 93], un processus se définit comme étant un
ordonnancement d'activités à travers le temps et les lieux, ayant un début et une fin, avec des
entrées et des sorties clairement définies. En d’autres termes, un processus peut se définir
comme étant un ensemble d'étapes identifiées, chronologiquement reliées, consommant des
entrées et/ou produisant des sorties et dont la réalisation permet de satisfaire un objectif global
ou une transaction donnée. En étendant la définition, il est possible d’envisager qu’une étape
composant un processus, est elle-même composée d’autres étapes dont la réalisation complète
correspond globalement à celle de l’étape conteneur. Cette dernière possède donc les
caractéristiques d’un processus. Par conséquent, un processus peut être composé d’autres
processus que l’on pourra appeler "sous processus", afin de marquer leur appartenance à un
processus plus global.
En ce qui nous concerne, nous nous intéressons plus particulièrement aux processus mis en
œuvre au sein des entreprises. Dans ce type de processus, les différentes étapes les composant
correspondent à des activités ou des sous processus réalisés par certains éléments de
l’entreprise, qu’ils soient de type humain, matériel ou logiciel. Etant donné la diversité des
activités d’une entreprise, il est concevable de distinguer différents types de processus, liés à
la nature de leurs activités, à leurs objectifs ou à leur entrées sorties. Le paragraphe suivant
identifie les trois types de processus de base des entreprises et en donne une définition.
[MEDINA-MORA et al. 92] distinguent trois types de processus : les processus matériels
("material processes") (également appelés processus physiques par [DENNING et al. 95]), les
processus informationnels ("information processes" ) et les processus métiers ("business
processes") :
4
Chapitre I : Rôle et évolution de la technologie de l'Information
2. Les processus informationnels : les processus informationnels relient entre elles des
activités automatisées (exécutée par des programmes) ou semi-automatisée (accomplies
par des humains en interaction avec des programmes). Ces activités créent, traitent, gèrent
et fournissent de l'information. L'infrastructure de base des processus informationnels est
fournie par les systèmes d'information de l'entreprise, tels les Systèmes de Gestion de
Bases de Données, les systèmes de gestion de transaction, etc.
3. Les processus métiers : Selon [SHELTON 96] et [DAVENPORT et al. 90], un processus
métier est une collection d'activités consommant des entrées (matériels, finances,
données,...) et délivrant un ou plusieurs résultats à orientation économique ("business
result") ou à forte valeur ajoutée pour l'entreprise. Un processus métier représente la façon
dont un travail est réalisé plutôt que l'organisation des personnes et des services, traversant
les barrières hiérarchiques et structurelles de l'entreprise. Pour [GEORGAKOPOULOS et
al. 95], les processus métiers se situent à un niveau conceptuel plus élevé que les deux
types précédents de processus de part leur orientation économique. Par suite, un processus
métier peut mettre en œ uvre d'autres processus, de type informationnel et/ou matériel, si
leur réalisation permet d'atteindre l'objectif qui est associé au processus métier.
L'expression de "processus métier" est l'une des nombreuses traductions de "business
process" que l'on peut rencontrer dans la littérature francophone. D'autres traductions
possibles et intéressantes sont par exemple "processus opérationnel", proposée par
[VERNADAT 99], processus d'entreprise, que l'on retrouve dans le lexique de la
Workflow Management Coalition (WfMC) [WfMC 99] ou encore "processus
stratégique", que l'on retrouve dans [ZARIFIAN 97]. Remarquons que pour F. Vernadat,
la notion de processus opérationnel adopte un sens plus global et concerne tout processus
d'intérêt pour l'entreprise. Néanmoins l'expression "processus métier", employée entre
autres dans la revue "Le Monde Informatique" nous semble convenir le mieux. En effet,
l'expression "processus métier" indique que le processus en question est directement lié au
métier de l'entreprise qui le met en œuvre. Par métier on comprend l'ensemble des
compétences d'une entreprise, son domaine d'activité, qui se traduisent par l'offre d'un
ensemble de services, produits ou artefacts, dont la consommation par des clients lui
permet de se pérenniser et de se développer. L'échec ou le succès des processus métiers
est le principal indicateur de la santé de l'entreprise, donc de la qualité de ses compétences
dans son métier.
Notons enfin que [DENNING et al. 95] proposent un autre type de processus qu'ils
appellent "processus humains" ("human processes"). Ces processus décrivent des accords
passés entre personnes et organisations (sous la forme de contrats de type client -
fournisseur) dans un but de coordination des éléments impliqués dans les contrats. Les
processus humains permettent de gérer les processus matériels et informationnels.
Nous avons souligné ci-dessus l'importance de la réussite des processus métiers dont dépend
la réussite des entreprises qui les mettent en œuvre. Par conséquent, l'une des préoccupations
majeures des entreprises est d'améliorer et d'optimiser l'exécution de ces processus. Pour ce
faire, un certain nombre de méthodes de management ont été développées, que nous
présentons succinctement dans les paragraphes suivants.
Etre compétitif, vendre, augmenter sa part de marché est une préoccupation évidente des
entreprises, quel que soit leur métier. Dans les années 70, l'un des meilleurs atouts de
5
Chapitre I : Rôle et évolution de la technologie de l'Information
compétitivité était de se positionner sur le marché avec des prix moins élevés que ceux de la
concurrence, grâce à un débit de production important [ZARIFIAN 97]. Depuis le milieu des
années 80, ce principe de production massive et de prix réduit ne suffit plus. En effet, un
grand nombre de facteurs viennent modifier la donne, parmi lesquelles notamment: une
clientèle de plus en plus exigeante au niveau des prix mais surtout de la qualité des produits et
une compétition accrue due à l'ouverture des marchés. Ces facteurs s'associent à d'autres
contraintes, telle l'innovation et la rapidité de mise sur le marché.
L'amélioration des processus métiers est par conséquent, une des préoccupations majeures et
permanente des entreprises qui souhaitent rester compétitives. Pour y parvenir, plusieurs
méthodes de management sont utilisées, dont deux particulièrement connues et intéressantes:
l'amélioration continue (ou progressive) des processus ("Continuous Process Improvement"
ou CPI) et la reconception des processus métiers ("Business Process Reengineering" ou BPR).
Nous les décrivons succinctement dans les paragraphes suivants, en reprenant la terminologie
anglo-saxonne, plus répandue.
§ Commencer par documenter l'état des processus actuels ("As is"), c'est à dire la façon
dont le travail est réalisé,
§ Définir des critères pour mesurer les performances des processus,
§ Exécuter le processus,
§ Collecter et évaluer les résultats,
§ Identifier les lacunes, cibler les améliorations et les implémenter dans le nouveau
processus,
§ Mesurer le nouveau processus,
§ etc.
1. Documenter
les
7. Executer
Processus 2. Etablir des
les
Processus critères
d ’évaluation
6. Implémenter
les 3. Exécuter
améliorations les
Processus
5. Identifier les
lacunes 4. Mesurer
les
performances
6
Chapitre I : Rôle et évolution de la technologie de l'Information
Les intérêts principaux du CPI sont la limitation des risques pris lors de l'apport des
modifications et la tendance à converger effectivement vers de meilleures solutions. A
l'opposé, les principaux inconvénients qui sont reprochés à cette méthode sont, d'une part la
"lenteur" de la méthode, qui n'est pas toujours adaptée aux besoins de réactivité et
d'adaptation de l'entreprise face à des situations nouvelles. La rapidité avec laquelle une
entreprise réagit aux nouvelles donnes du marché étant en effet un facteur crucial de réussite.
D'autre part, l'utilisation du CPI peut s'avérer peu efficace dans le cas où un processus métiers
n'est plus du tout en phase avec le monde réel, donc qu'il n'est plus "récupérable". C'est
justement dans ce contexte de réactivité et de changements cruciaux que s'inscrit la démarche
du BPR, décrite dans le paragraphe suivant.
A l'opposé du CPI, le BPR opte pour des solutions radicales et une amélioration drastique des
performances. [HAMMER et al. 93] définissent le BPR comme étant une façon de repenser et
de reconcevoir fondamentalement et radicalement les processus métiers, dans le but
d'atteindre des améliorations importantes dans les critères de performances critiques tels le
coût, la qualité, les services et la vitesse. Cette approche se base sur le concept de "l'état net"
("clean state"), c'est à dire la définition de nouveaux processus n'ayant aucun rapport (mise à
part l'objectif de performances) avec les précédents. Le BPR préconise donc des changements
radicaux, que ce soit dans l'organisation et la structure de l'entreprise ou des méthodes de
travail. Enfin, contrairement au CPI, le BPR adopte une approche "top down", de l'amont vers
l'aval. Les principales étapes pour l'application d'un BPR peuvent se résumer tels qu'il suit
(fig.I.4) :
§ Définir les objectifs des nouveaux processus, leur champ d'action et l'état à atteindre
("to be state"),
§ Identifier les processus à reconcevoir. Deux approches sont utilisées [YOGESH 98].
La première se concentre sur les processus les plus importants ou ceux qui sont en
contradiction avec les objectifs définis dans la première étape. La deuxième approche
consiste à identifier tous les processus d'une organisation et de leur affecter un ordre
de priorité en fonction de l'urgence de la reconception.
§ Comprendre et évaluer les processus existants,
§ Etablir un plan de transition, en comparant le "to be" avec le "as is".
§ Implémenter les nouveaux processus.
Prototypage
et évaluation
Le BPR a provoqué un engouement important au début des années 90. Ce succès s'est
cependant émoussé petit à petit et le nombre des détracteurs de cette approche a
proportionnellement augmenté. Ce revirement de situation est principalement du aux faibles
résultats obtenus par l'application de cette méthode. Ainsi, selon [YOGESH 98], 70% des
projets de BPR ont été un échec, dont les causes principales sont notamment:
§ Le BPR est une méthode trop "cassante" voir "despotique" selon [STRASSMAN 94]
qui compare cyniquement les principes du BPR aux méthodes révolutionnaires. Sans
7
Chapitre I : Rôle et évolution de la technologie de l'Information
aller jusque là, force est de constater la réticence voir le déboussolement des employés
face aux remises en cause et aux changements radicaux de leurs habitudes, de leur
façon de travailler et de la structure de l'entreprise. Ces modifications trop rapides,
accompagnées de la réticence de certains entraînent souvent un temps d'adaptation
important, une hésitation qui limite l'échange d'idées, bridant l'intérêt du BPR.
Remarquons toutefois que toujours selon [STRASSMAN 94], dans les cas critiques où
la rapidité de réaction est le seul atout disponible, le BPR reste l'une des seules
alternatives avantageuses.
§ Pour [DAVENPORT 94], une conception des processus uniquement selon l'approche
"top down" n'est pas réaliste. La participation de ceux qui réalisent le travail est une
condition essentielle d'acceptation et de réussite des nouveaux processus.
§ Une autre cause de l'échec de projet de BPR est le manque de réalisme des objectifs et
des attentes fixées avant la mise en œuvre du BPR. En effet, il semblerait que certains
managers aient plus tendance à s'intéresser au fait d'appliquer le BPR en tant que
tactique, plutôt que de se concentrer sur la stratégie de mise en œuvre [YOGESH 98].
En conséquence, le BPR est mal préparé et les performances à atteindre sont
surévaluées.
§ Le recours au BPR dans des cas ne justifiant pas une remise en question totale de
l'acquis. On peut donc remarquer que pour les deux derniers points, les causes des
échecs sont essentiellement dues à des erreurs "humaines" d'appréciation et
d'évaluation, et non dues au BPR lui-même.
Enfin et pour clore cette partie, le tableau suivant (extrait de [DAVENPORT 93]) résume les
principales caractéristiques des deux méthodes:
CPI BPR
Niveau de modifications Incrémental Radical
Point de départ Processus existant Etat net
Fréquence des modifications Unique/Continue Unique
Temps requis Court Long
Participation Bottom-up Top-down
Champ d'action Court terme Long terme
Risque Modéré Elevé
Type de modifications Culturelles (discutable1) Culturelles/ Structurelles
1
Remarque personnelle. Les changements peuvent aussi bien être structurels et organisationnels, sans
nécessairement impliquer de profonds bouleversements.
8
Chapitre I : Rôle et évolution de la technologie de l'Information
préalable de la possibilité de simuler et de tester ces processus sur des représentations fidèles
de ces derniers. Cette possibilité est entre autres offerte par la modélisation préalable des
processus. Qu'est ce qu'un modèle de processus et quels sont les types de modélisations
possibles ? Enfin, quels sont les critères permettant d'évaluer les entreprises et en particulier
leurs processus métiers ? Les deux paragraphes suivants tentent d'y apporter quelques
éléments de réponses.
Un modèle est une abstraction d’un certain sujet, matériel (par exemple, une voiture) ou
immatériel (par exemple, un processus) existant ou susceptible d’exister. Par exemple, un
modèle d’un processus métier peut correspondre à un processus existant ("as is") ou à un
processus auquel on veut aboutir ("to be"). Un modèle se concentre en général uniquement sur
certains des aspects du sujet, qui présentent un intérêt pour le concepteur du modèle
[GREENWOORD et al. 95] [MULLER 98].
La modélisation présente plusieurs intérêts : d'une part, elle permet d'obtenir une
représentation observable, manipulable et évaluable d'un sujet, qui permet de le comprendre et
de l'étudier sans avoir à affecter le sujet lui-même. D'autre part, l'abstraction faite lors de la
modélisation permet de simplifier le sujet abordé en ne s'occupant que des aspects qui lui sont
significatifs.
Un modèle de processus est par conséquent une abstraction d'un ensemble d'activités,
représentant leur enchaînement chronologique, leurs entrées et sorties ainsi que les entités
chargées de réaliser les activités. Pour [SNOWDON 95], les modèles de processus permettent
de comprendre et de représenter le comportement de systèmes, tels par exemple une
entreprise. Plus spécifiquement, [KAWALEK et al. 97] et [BERRY 98] identifient cinq
fonctionnalités et intérêts principaux de la modélisation de processus :
Cette classification du type de modélisation est complétée par celle, très intéressante,
proposée par [GREENWOOD et al. 96] qui proposent de distinguer trois types de modèles de
processus : les modèles "passifs" les modèles "passifs dynamiques" et les modèles "actifs" :
9
Chapitre I : Rôle et évolution de la technologie de l'Information
1. Les modèles passifs : selon les auteurs, les modèles sont le plus souvent réalisés à l'aide de
moyens passifs de modélisation. Un modèle passif est un modèle qui capture la structure
ou l'aspect d'un système (dans notre cas, un processus) à un moment donné. Une fois le
modèle créé, il devient indépendant du sujet qu'il représente, c'est à dire qu'il n'est pas
affecté par des évolutions ou des modifications du sujet. Ce type de modèle est celui qui
est le plus communément utilisé dans les systèmes d'informations tels les bases de
données.
2. Les modèles dynamiques passifs : ce sont des modèles passifs qui permettent de
représenter le comportement d'un processus ou d'un système. Ils sont principalement
utilisés à des fins de simulation, pour l'analyse et la validation des systèmes modélisés. Ils
peuvent également servir de support pour une exécution automatisée.
3. Les modèles actifs : les modèles actifs utilisent des techniques de modélisation leur
permettant de rester liés au sujet avec lequel ils deviennent synchronisés. Toute
modification du sujet est donc automatiquement répercutée sur le modèle qui reflète à tout
moment l'état et la structure du sujet. Deux types de liens unissent un modèle actif à son
sujet: les liens "réactifs" et les liens "actifs". Le premier type de lien permet aux modèles
actifs de contrôler le comportement du sujet. Les modèles reçoivent des stimuli (par
exemple un état du sujet) qui une fois évalués induisent un comportement approprié au
sujet. Les liens actifs quant à eux permettent aux modèles actifs d'évoluer en fonction de
l'état du sujet. Malgré le fait que le développement de ce concept par [GREENWOOD et
al. 95] présente certaines lacunes, notamment au niveau de l'implémentation des modèles
actifs, il n'en reste pas moins que ce concept est très intéressant car les modèles actifs
reflètent le fait qu'un processus métier ne peut être figé. En effet, et c'est ce qui justifie le
recours au BPR et au CPI, l'environnement des entreprises est dynamique, et par
conséquent, l'organisation des entreprises et du travail doit être constamment revue pour
correspondre à la réalité. Nous reviendrons d'ailleurs plus longuement sur ces aspects
d'adaptabilité dans la suite de cet ouvrage.
Si l'un des intérêts de la modélisation des processus réside dans la possibilité de simuler et
d'évaluer les processus mis en œuvre (ou à mettre en œuvre) dans l'entreprise, il est intéressant
de se pencher rapidement sur le choix des critères retenus pour cette évaluation. Globalement,
un critère d'évaluation pourrait se définir comme étant une mesure standard permettant de
mesurer la performance d'une entité (dans notre cas une entreprise) dans un domaine ou à un
niveau donné (par exemple pour un processus métier). Le critère d'évaluation le plus global
pour une entreprise est sans doute sa performance financière. Toutefois, plusieurs aspects
contribuent à différents niveaux à l'état financier d'une entreprise. Il est donc intéressant d'y
associer des critères d'évaluation. [TRIMBLE 98] distingue cinq niveaux auxquels il est
possible d'associer des critères :
1. Les clients : cette catégorie comprend deux critères, la capacité de l'entreprise à satisfaire
les besoins des clients, et la satisfaction du client. Malgré les apparences, il existe une
différence entre ces deux critères. Le premier correspond au fait q'une entreprise est
capable techniquement de satisfaire une demande client (selon par exemple un certain
cahier de charge ou des exigences). Le deuxième critère correspond à l'évaluation du
client par rapport au produit proposé par l'entreprise.
10
Chapitre I : Rôle et évolution de la technologie de l'Information
2. Les processus métiers : c'est la partie qui nous intéresse le plus. On y distingue trois
critères principaux d'évaluation. La durée des cycles, la qualité des services et des
produits, le coût des activités des processus.
3. Les fournisseurs : évaluer les performances des fournisseurs dans la satisfaction les
besoins de l'entreprise.
Ces cinq critères s'inscrivent dans deux catégories principales, les "critères de performances"
et les "critères de diagnostic" :
1. Les critères de performances : ce sont des mesures de haut niveau qui expriment ce qui est
fait, c'est à dire la performance globale des niveaux mesurés. Ces critères sont "externes",
c'est à dire qu'ils reflètent essentiellement le résultat d'une évaluation, par exemple par les
clients.
2. Les critères de diagnostic : ce sont des mesures qui permettent d'évaluer ce qui ne va pas
dans l'entreprise, par exemple pourquoi un processus n'atteint pas les objectifs fixés. Ils
sont donc "internes" par nature.
Comme nous l'avons vu au début de ce chapitre, jusqu'à une époque peu lointaine, la
technologie de l'Information s'était essentiellement préoccupée de fournir des solutions aux
deux premiers problèmes – c'est à dire, fournir de l'information et des outils de travail
performants. Toutefois les concepts de managements dont nous avons parlé dans les
paragraphes précédents, ainsi que la nouvelle perception de l'individu en tant que membre
d'un groupe, ont généré de nouvelles contraintes et de nouveaux besoins. En particulier,
l'accent est mis sur les problèmes de coordination, de travail de groupe et de communication.
C'est donc vers le support des ces trois aspects stratégiques que s'est orientée la Technologie
de l'Information, au début des années 90. Par conséquent, l'importance de cette technologie
s'est accrue, passant de l'état de ressource privilégiée, de super calculateur pour devenir un
partenaire, voir mieux, un environnement de travail ("business environement" [BROWNING
90]).
11
Chapitre I : Rôle et évolution de la technologie de l'Information
Le premier indice marquant le fort besoin de communication est donné par deux faits
importants et complémentaires. D'une part, on constate depuis au moins une vingtaine
d'années l'augmentation du nombre et de l'importance des réseaux et des technologies de la
télécommunication. L'exemple le plus marquant est celui de l'explosion des technologies de
l'Internet et de ses variantes : Intranet et Extranet pour les entreprises. D'autre part, on
constate, dans la même période de temps, un grand effort placé dans la recherche de
standards de représentation de l'information pour faciliter l'EDI (Echange de Données
Informatisées), dont les deux champions sont le langage STEP et plus récemment XML,
dernier-né de la sphère Internet.
Au niveau du support de travail de groupe, les années 90 ont vu naître une nouvelle discipline
de la Technologie de l'Information, la TCAO ou technologie de "Travail Coopératif Assisté
par Ordinateur" (CSCW en anglais, pour "Computer Supported Cooperative Work") encore
appelée "Collectique". La TCAO se propose de fournir des outils dédiés au support du travail
de groupe. L'AFCET en donne la définition suivante [AFCET 94] : "La Collectique regroupe
l'ensemble des techniques et des méthodes qui contribuent à la réalisation d'un objectif
commun à plusieurs acteurs, séparés ou réunis par le temps et par l'espace, à l'aide de tout
dispositif interactif faisant appel à l'informatique". Quant aux outils permettant de supporter le
travail coopératif, ils sont nommés Groupware ou Collecticiels.
En se basant sur la première définition des collecticiels, il est possible de les répartir en trois
catégories : les outils de communication, les outils de partage et les outils de coordination.
Chaque catégorie réunit un ensemble d'outils contribuant au support du travail de groupe par
l'intermédiaire de médias spécifiques :
1. Les outils de communication : cette catégorie réunit tous les outils permettant à des acteurs
distants de communiquer. La communication peut être asynchrone ou synchrone. Dans le
premier cas, elle est assurée par des applications informatiques telles que :
§ La messagerie électronique,
§ Les programmes de "tchatche" ("chat" en anglais) où deux ou plusieurs personnes
peuvent discuter par l'échange rapide de messages,
§ Les forums de discussion ("forums" et "newgroups") où une personne peut proposer
un sujet ("topic") et où d'autres personnes peuvent réagir en déposant des messages
auxquels peuvent à leur tour réagir d'autres personnes. Chaque message est
consultable par l'ensemble des individus inscrits au forum.
§ Les tableaux d'affichage ("bulletin boards") où les intervenants peuvent laisser des
notes visibles par d'autres personnes.
La communication synchrone quant à elle est assurée par des outils tels que :
12
Chapitre I : Rôle et évolution de la technologie de l'Information
c'est de plus en plus le cas, via un réseau, numérique (tel Numéris de France Telecom)
ou plus communément TCP/IP (Internet). La tendance actuelle est d'avoir plusieurs
utilisateurs filmés par une mini-caméra (une "webcam"), pouvant apercevoir et
dialoguer avec d'autres utilisateurs en s'inscrivant sur le même canal. Un exemple bien
connu est "Net Meeting" de Microsoft.
§ Les outils de tchatche synchrones, dont le plus connu du grand public est ICQ.
2. Les outils de partage : cette catégorie recouvre tous les outils qui permettent à des
utilisateurs de partager un même espace de travail, de partager ou d'échanger des fichiers
ou de partager la même application informatique. Parmi ces applications on retrouve les
applications de type "tableau blanc", où des utilisateurs peuvent écrire ou dessiner
simultanément ou selon un mode de gestion de tour de parole. Parmi ces applications,
notons SharedX et ProShare qui regroupe également des outils de communication tels le
chat et la visioconférence.
Une autre classification des collecticiels propose de les répartire en deux catégories : les
collecticiels synchrones et les collecticiels asynchrones [URNES et al. 94]. La première
comprend tous les outils de communication asynchrone dont nous avons parlé ci-dessus, plus
la catégorie des outils de coordination. La deuxième classe comprend tous les outils de
communication et de partage en temps réel.
13
Chapitre I : Rôle et évolution de la technologie de l'Information
processus. Ce dernier fédère les acteurs et crée le groupe grâce aux capacités de coordination
fournies. C'est donc le processus qui définit le groupe dont chacun des membres est
responsable d'une ou de plusieurs activités à un moment donné. A l'opposé dans les
collecticiels, se sont les membres du groupe qui définissent l'activité.
Processus
Activité commun
commune
Activité 1
A
Espace partagé
C A
Objets
partagé B
s Activité 2 Activité 3
A
B
Activité 4
C
On peut être d'accord avec cette opinion, ce qui est notre cas, ou la réfuter. Notre but n'est pas
ici d'établir une classification définitive que d'autres ont essayé de poser sans franc succès,
mais d'afficher les différents points de vue. L'important est surtout de retenir que le Workflow
est la technologie qui propose des outils de coordination des activités, de gestion et
d'automatisation des processus des entreprises. Le chapitre suivant tente d'apporter des
définitions plus amples et plus précises.
Bibliographie
14
Chapitre I : Rôle et évolution de la technologie de l'Information
15
Chapitre II : Workflow - Présentation, définitions et Concepts
Chapitre II
Workflow – Présentation, définitions et Concepts
Comme c'est souvent le cas en informatique dès qu'une technologie a le vent en poupe,
l'étiquette "Workflow" a été abondamment utilisée pour qualifier divers systèmes et outils
informatiques. De plus, la montée en force du Workflow a coï ncidé avec celle de deux autres
événements : d'une part l'engouement pour de "nouvelles" méthodes de management telles le
Continuous Process Improvement (CPI) et le Business Process Reegineering; d'autre part on
constate l'apparition d'une technologie informatique dédiée au travail de groupe, la TCAO ou
Travail Coopératif Assisté par Ordinateur. Par conséquent, une certaine confusion entoure le
Workflow et certaines questions se posent : en quoi les différentes méthodes citées ci-dessus
sont-elles liés ? A quelle catégorie - Management ou TCAO - le Workflow appartient-il ? Plus
simplement qu'est ce que le Workflow ?
Une partie des réponses aux deux premières questions posées ci-dessus a été fournie dans le
chapitre précédent, notamment en ce qui concerne la place du Workflow ainsi que la
différence entre Workflow et Collecticiels. En effet, le Workflow est une technologie de la
TCAO qui se distingue de celle des Collecticiels. Cette distinction se fait notamment par
rapport aux objectifs fixés par l'utilisation de chaque technologie. En effet, si le travail
coopératif est bien une préoccupation majeure dans les deux cas, les Collecticiels adoptent
une approche basée sur le groupe, alors que le Workflow est essentiellement basé sur les
processus.
En ce qui concerne le rapport entre BPR, CPI et Workflow, on peut dire simplement que le
Workflow propose des outils méthodologiques ou informatiques, qui permettent d'analyser et
d'évaluer les processus métiers et de leur fournir un support d'exécution automatisé. Mettre en
œuvre une solution Workflow ne signifie pas nécessairement qu'elle est précédée d'un CPI ou
d'un BPR. Cependant, pour reprendre S. NURCAN [NURCAN 95], il est évident que "bien
automatiser un mauvais processus ne peut permettre d’atteindre ses objectifs à long terme".
Par conséquent, on ne peut profiter pleinement des avantages apportés par le Workflow en
l'appliquant sur des processus vacillants.
Afin de comprendre quels sont justement les avantages et les capacités offerts par le
Workflow, ce chapitre propose de faire un tour d'horizon de cette technologie, sous ses
différents aspects :
§ L'aspect lexique et définitions,
§ L'aspect système,
§ L'aspect méthodologique.
16
Chapitre II : Workflow - Présentation, définitions et Concepts
1. Par une amélioration ou une reconception des processus, en appliquant une démarche de
CPI ou de BPR. C'est le niveau "managérial".
§ Fiabilité, transparence et rapidité des accès aux données et documents (le mot
document étant à prendre au sens large, c’est à dire tout ce qui peut servir de
support d’informations),
§ Résolution des problèmes d’organisation et de synchronisation des participants
aux processus,
§ Suivi et traçabilité des travaux effectués.
Enfin, un point de vue plus global que le précédent est donné par S. Joosten [JOOSTEN 96].
Pour lui, le Workflow est issu des recherches dans le domaine de l’automatisation et
l'optimisation des processus de "bureau" ("office automation"). Cette catégorie est plus
17
Chapitre II : Workflow - Présentation, définitions et Concepts
générale que le seul domaine de la GED, puisqu'il regroupe tout ce qui est travail
administratif, gestion de transactions et GED.
En fait, nous aurons l'occasion de voir plus loin dans ce chapitre que les différentes origines
attribuées au Workflow correspondent à la recherche de la réalisation d'objectifs quelque peu
différents, qui ont donné lieu à la création de systèmes spécialisés.
1.2 Définitions
Dans la famille Workflow, je voudrais "le Workflow", "un workflow" et un "système
Workflow", pourrai-t-on dire familièrement. Il est vrai que selon ce dont on parle, le sens du
mot workflow varie légèrement. Pour plus de clarté, nous proposons de donner dans ce qui
suit certaines définitions sur les concepts et les termes du Workflow et d'en expliciter le sens.
Nous les utiliserons par la suite selon la définition que nous leur aurons donnée. Avant de
poursuivre plus avant, il est important de mentionner ici l'existence de la "Workflow
Management Coalition" (WfMC) ([Link] regroupement d'industriels de
l'informatique, de chercheurs et d'utilisateurs. Le but de la WfMC est de définir des standards
pour le développement d'applications Workflows. Ces standards servent notamment à
résoudre les problèmes d'interopérabilité entre systèmes Workflows mais également à définir
les caractéristiques fondamentales de ces systèmes. Les documents publiés par la WfMC, qui
couvrent plusieurs aspects, peuvent être considérés comme des références en la matière. Nous
basons d'ailleurs nos définitions sur ces travaux, en complétant toutefois quand cela est
nécessaire, par des opinions complémentaires issues de la recherche.
Définition 1 - Workflow
Plus globalement, nous pouvons dire que le Workflow est l’ensemble des moyens mis en
œuvre pour automatiser et gérer entièrement les processus d’une organisation. Cette gestion
repose sur la possibilité de représenter d'une façon informatisable, tout ou une partie des
processus en question. A partir des représentations ainsi définies, le Workflow a tout d’abord
pour but de transcrire les modèles obtenus en une forme exécutable. Ces modèles sont ensuite
exécutés et gérés. Il doit de plus être possible de suivre leur évolution au fil du temps. La
gestion de processus inclut également la coordination et la synchronisation des différents
acteurs des processus. Par ailleurs, ces derniers doivent avoir à leur disposition l’ensemble du
contexte informationnel dont ils ont besoin pour mener à bien le travail qui leur est affecté.
Dans un contexte d’acteurs exclusivement humains, la solution Workflow permet ainsi de
décharger le personnel de tâches administratives et de gestion lourdes, en leur laissant la
possibilité de se concentrer sur les problèmes humains et techniques en rapport avec leurs
compétences.
La Gestion de Processus permet donc d’attribuer à chacun et au bon moment, les tâches dont
il a la responsabilité avec les outils et les informations nécessaires pour leur réalisation. Le
terme d’outils est, pour le moment du moins, limité à la désignation de l'outil informatique.
D’autre part, la Gestion de Processus donne la possibilité de tracer et de suivre pas à pas
18
Chapitre II : Workflow - Présentation, définitions et Concepts
Définition 2 - workflow
Un workflow est un processus d’une organisation, gérable par un outil Workflow. Il est établi
dans le but principal d’automatiser l'exécution du processus mais il peut aussi servir à le
simuler et à l'analyser. On parle également de "flux de travaux" ou de "procédure Workflow"
[WfMC 99].
Un Système Workflow est comme son nom l'indique, un système informatique dédié à la
gestion des processus. Les services proposés par un système Workflow sont au minimum
l'exécution d'un processus et sa gestion (contrôle et suivi) ainsi que la mise à disposition des
documents et outils nécessaires à la réalisation des étapes du processus. Selon la définition
donnée par la WfMC, un système Workflow définit, gère et exécute des procédures en
exécutant des programmes dont l’ordre d’exécution est prédéfini dans une représentation
informatique de la logique de ces procédures - les workflows. Un système Workflow est
parfois appelé plus simplement Workflow ( donc un risque de confusion avec la technologie),
"logiciel de gestion des procédures" ou "fluxgiciel" [WfMC 99].
composé de
: Classe (entité)
soummise à Tenu
Fait référence à par
: association
Condition Acteur
de Applications : relation d'agrégation
Fait référence à Transition externes
: relation de composition
utilise
Agrégation : L'agrégation est une association non symétrique, qui exprime un couplage fort et une relation de subordination.
Le cycle de vie de l ’agrégat et de ses objets agrégés sont indépendants, ils peuvent donc exister indépendamment les
uns des autres. L’agrégation représente une relation de type "ensemble / élément".
Composition : La composition est une agrégation forte. Les cycles de vies des éléments (les "composants") et de l'agrégat sont
liés : si l'agrégat est détruit (ou déplacé, ou copié), ses composants le sont aussi et l’éléments composé ne peut exister
sans ses composants.
19
Chapitre II : Workflow - Présentation, définitions et Concepts
par les développeurs de tels systèmes, comme il peut également être utilisé à des fins
d'échanges entre différents systèmes Workflows.
Définition 4 - Activité
Pour la WfMC [WfMC 99], une activité est une étape d’un processus lors de laquelle une
action élémentaire est exécutée. Par action élémentaire, on signifie que l'activité n'est plus
décomposable en d'autres activités - donc qu'elle n'est pas un sous-processus. La WfMC
introduit une distinction entre "activité manuelle", qui n'est pas contrôlée par le système
Workflow, et "activité Workflow" qui est sous le contrôle du système. Un exemple d'une
activité manuelle est par exemple l'ouverture du courrier. Une activité Workflow serait par
exemple le remplissage d'un formulaire électronique. On pourrait toutefois se poser la
question de savoir si une activité manuelle ne peut quand même pas être contrôlée par un
système Workflow. Par exemple on peut envisager d'utiliser le système pour fournir aux
acteurs "manuels" une interface leur permettant de signaler la fin d'une activité manuelle. On
peut également tirer profit du Workflow pour rappeler à un acteur quelconque qu'il doit
terminer son activité s'il a dépassé les délais. Il existe donc des cas où une activité manuelle
peut être intégrée dans un workflow. Par conséquent, nous ne distinguerons pas les activités
manuelles des activités Workflow, sauf contre indication de notre part.
Enfin et pour en terminer avec le concept d'activité Workflow, il reste à signaler le fait qu'il
arrive souvent dans la littérature Workflow, que les auteurs emploient le terme de "tâche". Le
sens de ce mot est souvent dépendant du contexte où il est employé et de sa compréhension
par l'auteur. Certains spécialistes appellent "tâche" tout élément d'un workflow qui représente
un travail ou un ensemble de travaux. Ainsi, une tâche peut être une activité (telle que nous
l'avons définie) ou un sous processus, un workflow étant alors composé de tâches. D'autres
personnes utilisent indifféremment "tâche" et "activité" pour désigner le même concept. Si
l'on souhaite approfondir le terme, il est possible de définir la tâche comme étant un travail
affecté à un individu, dont la réalisation est en général au moins soumise à une contrainte
temporelle. La réalisation d'une tâche permet d'atteindre un but local donné. Le travail
permettant de réaliser la tâche est alors appelé "activité". En ce qui nous concerne, nous
utiliserons de préférence le terme "activité" mais nous lui attribuons, dans ce travail, le même
sens que le mot "tâche", sauf quand cela est spécifiquement mentionné.
Remarquons que la définition de l'activité que nous adoptons diffère quelque peu de celle
proposée par la théorie de l'activité, dont les principaux fondateurs, Vygotskij, Leontjev et
Lurija sont des psychologues originaires de l'ex union Soviétique. Cette théorie s'intéresse à
l'analyse de l'activité humaine et définit globalement une activité comme un engagement d'un
sujet vers un objet, qui constitue l'objectif - la motivation ou le domaine du problème - de
l'activité, et qui permet de distinguer les activités entre elles [Kutti, cité dans BANNON 90].
La réalisation d'une activité produit un certain résultat, qui peut être différent de celui
originairement prévu.
Une activité possède une structure hiérarchique dont le premier niveau est constitué par les
actions, qui sont les composants moteurs de l'activité. Chaque action est associée à un but
conscient qui doit être réalisé afin d'atteindre l'objectif global représenté par l'objet de
l'activité. Les actions sont elles-mêmes exécutées par des opérations "automatiques" (réflexes,
mécanismes non conscients) sans but associé, mais qui permettent d'effectuer une action en
fonction d'une certaine situation ou de certaines conditions (également appelées "règles").
Ainsi, la réalisation d'une action est fortement dépendante du contexte dans laquelle elle se
20
Chapitre II : Workflow - Présentation, définitions et Concepts
déroule, ce qui implique qu'une même action, et par conséquent une même activité, peuvent
être réalisées de façons différentes [CHAT 98], [RYDER 98].
Une activité peut être réalisée sans médiateurs (encore appelés "outils", "instruments" ou
"artefacts") ou peut en nécessiter l'utilisation. Il se peut enfin que la personne réalisant
l'activité en soit elle-même le médiateur. C'est par exemple le cas des activités d'une personne
à son travail, puisqu'elle exécute des activités "imposées" par son employeur (ici le sujet),
pour atteindre un objectif que ce dernier lui a fixé.
Par analogie avec nos définitions, nous pourrions dire que l'activité - telle qu'elle est définie
par la théorie de l'activité - correspond plutôt à un processus Workflow, dont le sujet n'est pas
une personne mais le groupe impliqué dans la réalisation du processus, ou l'initiateur de ce
dernier. Les actions correspondent alors aux activités Workflows puisque chacune d'elle est
liée à un but local, la réalisation de l'ensemble des buts permettant d'atteindre l'objectif global
lié au processus. Enfin, comme nous avons pu le constater sur le modèle, un workflow
nécessite la manipulation d'objets (les données) que l'on peut très bien assimiler à une partie
des instruments permettant de réaliser l'activité.
Définition 5 - Acteur
Un acteur ("actor") est une entité (personne ou matériel) faisant partie d’une organisation et
participant à la réalisation d’un processus. L'acteur est chargé de réaliser les activités qui lui
sont attribuées via le ou les rôles qu'il tient. On parle également "d'agent", de "participant" ou
"d'utilisateur".
Définition 6 - Rôle
En ce qui nous concerne, nous ne faisons pas de distinction entre les deux. En effet étant
donné qu'un rôle correspond à un ensemble de compétences, il est donc lié par définition à un
ensemble d'activités qu'il est capable de réaliser, étant donné ses compétences. Remarquons
enfin que certains spécialistes ne font pas de différence entre acteur et rôle et ne parlent que
d’acteur. Nous ne partageons pas cette opinion qui restreint la clarté et la flexibilité des
modèles Worflows, comme nous aurons l'occasion de le voir par la suite.
Définition 7 - Donnée
Une donnée ("relevant data") est un objet en rapport avec la réalisation d’une activité (en
entrée et/ou en sortie). Elle peut constituer l’objectif de la tâche (manipulation de la donnée),
21
Chapitre II : Workflow - Présentation, définitions et Concepts
être un élément essentiel pour aider à sa réalisation ou être généré par la tâche. Les données
sont en général des objets informatiques mais il peut également s'agir de références à des
objets physiques.
Une application externe ("invoked application") est une application informatique dont
l'invocation est nécessaire à la réalisation de la tâche. On pourra parfois parler plus
globalement de ressource, si l'application n'est pas uniquement informatique.
Les précédentes définitions sont une première étape vers la compréhension du Workflow et
des concepts qui y sont rattachés. Afin d'approfondir un peu cette compréhension, il est
intéressant d'apporter encore quelques autres définitions complémentaires, que nous
présentons ci-dessous.
Un cas ("workflow case" ou "workflow instance") est une instance d'un modèle de workflow
("workflow model" ou "workflow schema"). On parle également "d'instance de workflow". Un
cas correspond à la mise en œuvre d'un workflow par rapport à une situation spécifique. Par
exemple on peut avoir le workflow de remboursement des frais d'un enseignant. Un cas de ce
workflow est le remboursement des frais de voyage de M. Dupont, pour la période du 1 au 6
août. L'instanciation d'un workflow donne également lieu à l'instanciation des activités du
workflow. On parle alors d'instances d'activités.
Définition 11 - Règle
La notion de règle ("rule") n'est pas présente partout dans la littérature Workflow mais elle est
néanmoins très intéressante. En fait, cette notion est surtout spécifique aux spécialistes du
Workflow, initialement issus des mondes des bases de données et de l'intelligence artificielle.
Le mot règle peut prendre selon le cas, deux sens assez proches :
§ Il peut s'agit d'un principe de comportement à suivre par un acteur (ou un rôle) vis à vis
d’une activité. La règle peut par exemple déterminer la façon dont l'acteur va réaliser
l'activité. Dans certains cas une règle pourra être confondue avec une condition de
transition.
§ Une règle peut correspondre à un principe de comportement à suivre par un acteur ou par
le système, dans la détermination de choix. Le choix peut concerner le routage d'un
processus (quelle activité choisir parmi un ensemble d'activités) ou la prise en compte de
22
Chapitre II : Workflow - Présentation, définitions et Concepts
situations non prévues. Nous reviendrons d'ailleurs plus longuement sur ce dernier aspect
dans le prochain chapitre.
Un bon de travail ("work item") est la représentation informatique du travail à effectuer par un
acteur du workflow dans le cadre d’une instance d’activité. Dans la plupart des cas cependant,
on parle plus simplement d'activité, sans faire la distinction.
La liste des tâches ("worklist") ou encore "liste des travaux", "corbeille" ou "liste des bons de
travail", contient la liste des bons de travail attribués à un rôle.
Les définitions que nous avons présentées ci-dessus couvrent l'ensemble des notions
importantes appartenant au Workflow et à son lexique. Toutefois, le lecteur souhaitant
approfondir cet aspect du Workflow trouvera un ensemble de documents très intéressants,
dont un glossaire complet en français, sur le site de la WfMC dont nous rappelons l'adresse
URL : [Link]
1. La première partie concerne la modélisation des workflows, c'est le "build time". Elle est
essentiellement composée d'un outil permettant la modélisation des workflows, sous une
notation existante ou propriétaire, le plus généralement sous forme graphique. Un
deuxième composant est chargé de transcrire les modèles obtenus en entités
compréhensibles par la partie chargée de l'exécution : le "run time". Selon les systèmes, le
build time peut également être composé d'un "traducteur", permettant d'importer des
modèles réalisés sous des applications externes (systèmes de modélisation et d'analyse par
exemple), et de les traduire au format compris par le système.
23
Chapitre II : Workflow - Présentation, définitions et Concepts
§ Les listes de tâches ("Worklists") qui sont les récipients attribués à chaque rôle
dans lesquels le moteur place les tâches à réaliser, par ordre de priorité et en leur
associant les données et les outils appropriés.
3. Enfin, la troisième partie concerne l'ensemble des outils et des fonctions d'API qui
permettent au système Workflow de "s'ouvrir" vers des applications extérieures, en
particulier d'autres systèmes Workflows. Les fonctions d'API permettent également aux
utilisateurs de customiser le système et ses services en fonction de leurs besoins
spécifiques.
Cette architecture globale des systèmes Workflows peut se résumer à l'aide des deux figures
suivantes, tirées d'un des documents de référence de la WfMC [WfMC 95] :
Service d’exécution
Outils Autres
d'administration Services
Instanciation Services d’exécution du et de contrôle Moteur
et contrôle système Workflow Workflow
Interaction avec
les utilisateurs Applications et Applications Applications
et les applications outils externes clientes utilisées
externes
En fait, l'architecture décrite ci-dessus donne une vision très générale des systèmes
Workflows et de leur fonctionnement. Il existe en effet plusieurs types de systèmes, chacun
étant basé sur des concepts spécifiques, en plus des concepts de base le plus souvent
invariants. Le nombre de critères permettant de classer les systèmes Workflows fait qu'il
existe plusieurs classifications importantes et intéressantes. Ceci justifie d'ailleurs le fait que
nous consacrions ci-après un paragraphe complet à cet aspect du Workflow.
24
Chapitre II : Workflow - Présentation, définitions et Concepts
Comme leur nom l'indique, les systèmes workflow administratifs sont orientés vers la gestion
de processus de type administratif. Il s'agit donc essentiellement d'alléger des tâches de
bureau, où les erreurs sont souvent humaines. Les systèmes workflow administratifs
permettent de lier à une tâche administrative les documents et informations nécessaires à la
réalisation de la tâche par un acteur humain. Ces systèmes prennent également en charge le
routage des documents et le remplissage de formulaires. Selon Martin Ader, l’amélioration
des processus administratifs due au Workflow est de l’ordre de 20% à 50% en terme de
productivité et jusqu’à 90% en terme de délais. Ces systèmes, également appelés « General
Purpose Workflow Management Systems » par [SCHEER et al. 97], gèrent des workflows
répétitifs à forte prédictibilité, à structure simple et sans grande complexité. Le processus et
les règles de passage d’une étape à une autre sont clairement définis, donc facilement
automatisables. En général, ce type de workflows ne requière pas l’accès à plusieurs systèmes
d’informations lors de son exécution et possède une longue durée de vie, c’est à dire qu’il
n’est pas souvent, voire rarement, soumis à des modifications [SCHEER et al. 97].
Les systèmes Workflows de production peuvent être considérés comme étant une variante
évoluée des systèmes administratifs. A leur instar, ils impliquent des processus assez
répétitifs. La principale différence réside dans la complexité de la structure des processus et
des tâches, ainsi que dans l’enjeu que représente leur réussite. En effet, la réalisation du
workflow correspond directement aux objectifs et au travail de l’entreprise. En d’autres
termes, le processus correspond aux services assurés par l’entreprise et sa performance
dépend du succès de l’exécution du workflow. On dit dans ce cas qu’ils sont "mission
critical" [SCHEER et al. 97], [INCONCERT 97]. C’est par exemple le cas des organismes
financiers ou des compagnies d’assurances (qui sont les principaux utilisateurs de ce type de
Systèmes). La réalisation des processus est donc à forte valeur ajoutée par rapport à
l’entreprise et le volume de transactions traitées est important.
25
Chapitre II : Workflow - Présentation, définitions et Concepts
La complexité des processus traités est également due à la répartition de leurs activités sur
plusieurs sites. Dans ce cas, les tâches exécutées nécessitent souvent l’interrogation de
plusieurs systèmes d’information, hétérogènes et distribués. Il est donc nécessaire que les
systèmes workflow de production fournissent un ensemble d’outils ou de fonctions d'API
permettant de se connecter à plusieurs systèmes. Enfin, même si les processus traités sont
assez répétitifs, ils sont susceptibles d’être modifiés plus souvent que les processus de type
administratif, de par leur orientation métier. Les modifications peuvent par exemple avoir lieu
lors d'une démarche de CPI ou d’une restructuration plus globale, de type BPR. Par
conséquent les systèmes workflow de production doivent pouvoir prendre en compte les
évolutions. Par ailleurs, il arrive que l'exécution d'un processus ne puisse plus se poursuivre
de manière automatisée, suite à l'occurrence d'un ou de plusieurs événements qui remettent en
cause le processus. Dans ce cas, il est parfois nécessaire de faire intervenir des acteurs
humains pour la prise de décision. Pour se faire, le système Workflow de production peut
passer la main à un système plus souple, comme un collecticiel (ou un système Workflow ad
hoc), qui servira de support pour l'exécution "manuelle" de la suite du processus. On parle
dans ce cas de "Workflow composite" [EDER et al. 96].
Les systèmes workflow de production sont également appelés "case-based" car ils gèrent des
"cas" [SCHEER et al. 97]. Un cas est l’instanciation d’un workflow. Par exemple dans une
compagnie d’assurance, on peut avoir le workflow "Gestion des sinistres de type dégâts des
eaux". La gestion d’une plainte formulée par un client X dont l’appartement a été inondé
correspond à ce type de sinistre et est un "cas" du workflow précédent.
Les systèmes workflow ad hoc sont utilisés pour l’exécution de processus non structurés ou
très peu structurés. Un processus peu ou non structuré est un processus dont l’ordre et le
temps exact de réalisation des tâches ne sont pas établis au préalable. A la limite, les tâches
elles-mêmes de ce type de processus ne sont pas connues au départ. Les choix de routage des
tâches, et la nature des tâches sont décidés au fur et à mesure de l’exécution, et il est donc très
difficile d’automatiser de tels processus. Par conséquent, un processus non structuré propose
un objectif immuable, mais pouvant être atteint de différentes façons. Cela justifie donc
l'usage de l'expression "ad hoc" qui désigne un acte spécialement fait pour un objet déterminé.
En effet, la réalisation d'un processus non structuré peu impliquer à chaque fois l'exécution
d'un nouvel enchaînement des tâches, voire de nouvelles tâches.
Dans les processus ad hoc, le système intervient essentiellement pour gérer les échanges entre
rôles (qui font en général uniquement référence à des acteurs humains), gérer l’accès aux
sources d’informations et fournir l’historique du workflow. Comme le font remarquer
[GEORGAKOPULOS et al. 95], l'approche de ces systèmes est souvent de type "pull", c'est à
dire que leurs utilisateurs doivent les interroger pour connaître l’état du processus et en
déduire leurs tâches. Dans les autres types de systèmes, l'approche est plutôt de type "push",
c'est à dire que les utilisateurs sont informés par le système des travaux qu’ils ont à traiter.
Techniquement, la métaphore utilisée dans ce type de système est celle du "dossier"
[WAINER et al. 95]. Les utilisateurs font circuler un dossier virtuel dans lequel sont "placés"
des documents et des données électroniques. Chaque utilisateur en possession du dossier
décide du prochain destinataire. Il peut baser son choix sur un schéma directeur général établi
au préalable ou décider seul (s'il en a le privilège), du prochain destinataire. Les Systèmes
Workflow Ad hoc. En effet, le qui sont surtout utilisés pour des besoins de travail collaboratif,
pour la co-décision [INCONCERT 97], [GEORGALOPOULOS et al. 95] ou dans le
26
Chapitre II : Workflow - Présentation, définitions et Concepts
traitement d’événements imprévus dont on n’a pas une modélisation [MARSHAK 95], par
exemple comme auxiliaires des systèmes workflow de production.
Les systèmes Workflow collaboratifs sont dédiés au support de travail de groupe, tels la
conception, la gestion de projet ou la résolution de problèmes faisant appels à différents
niveaux d’expertise. Les Systèmes Workflow Collaboratifs permettent de réunir un certain
nombre d’intervenants dans le but d’atteindre un objectif commun, les clients du processus y
étant souvent eux-mêmes directement associés. Les tâches des processus gérés sont le plus
souvent complexes et leur réalisation implique l’intervention d’acteurs très compétents (dans
la spécialité qui est la leur). Dans ce cas également, les workflows à traiter sont faiblement
structurés et peu répétitifs. Ils sont par contre à forte valeur ajoutée par rapport à l’entreprise
qui les met en place. Certains spécialistes classent les Systèmes de Workflow ad-hoc et
collaboratifs dans la catégorie des Collecticiels asynchrones [GEORGAKOPOULOS et al.
95].
Il est légitime de se demander quelle est vraiment la différence entre systèmes workflow ad
hoc et collaboratifs et si la distinction est justifiée. En effet, ces deux types de systèmes se
basent sensiblement sur les mêmes concepts et proposent à peu près les mêmes services. On
retrouve principalement la possibilité de gérer des workflows non structurés et de partager des
documents et des informations. Pour certains, la distinction réside dans la complexité des
tâches à réaliser et dans leur valeur ajoutée : peu de complexité et faible valeur ajoutée pour
les premiers, grande complexité et forte valeur ajoutée pour les deuxièmes. Toutefois, ces
critères ne sont pas suffisamment représentatifs pour un grand nombre d’experts qui ne font
pas de distinction entre les deux types de systèmes.
L'analyse des types de systèmes Workflows présentés ci-dessus nous permet de distinguer
certains critères permettant de caractériser chacun des types de systèmes. Par exemple nous
pouvons remarquer que les systèmes Workflows ad hoc et collaboratifs apportent plus de
"souplesse" d'utilisation que les systèmes workflows de production et les systèmes
administratifs. En effet, ces derniers se basant sur une modélisation bien précise du processus,
ils sont beaucoup plus rigides sur la façon de réaliser les activités. A l'opposé, ces derniers
permettent entre autres, une gestion plus efficace du processus et un accès facilité à
l'information nécessaire, justement grâce au fait qu'ils se basent sur une modélisation bien
structurée. D'autres critères sont également visibles, tels la capacité à gérer des processus
complexes, à accéder à plusieurs systèmes d'informations, etc. Nous proposons de lister
l'ensemble de ces critères et de les discuter, dans le paragraphe suivant
Des descriptions données dans les paragraphes ci-dessus, nous pouvons donc extraire un
certain nombre de critères de classification, que nous nommons critères de répartition. Nous
les avons qualifiés ainsi car ils nous permettent de répartir les systèmes Workflows dans des
espaces à deux dimensions (deux critères) complémentaires, en fonction de leurs spécificités.
27
Chapitre II : Workflow - Présentation, définitions et Concepts
Les figures suivantes décrivent la répartition des systèmes Workflows en fonction des critères
que nous avons relevés, dont nous donnons ensuite la liste.
Complexité
Valeur Des tâches
ajoutée Production
Production
Collaboratif Collaboratif
Figure II.4.a - Répartition par valeur Figure II.4.b - Répartition par complexité des
ajoutée et volume des transactions Processus et structure du workflow
Durée Souplesse
de vie Administratif d’utilisation
Collaboratif
Production
Ad hoc
Collaboratif
Production
Ad hoc
Administratif
Automatisation Puissance
§ Degré d’automatisation. C'est une conséquence directe du premier critère. Plus les
processus sont prédictibles, plus ils sont identifiés et plus il est simple d'en donner une
représentation informatique qui servira à l'automatisation de l'exécution. Le degré
d'automatisation correspond au pourcentage de travail qui pourra être géré par le
système Workflow.
28
Chapitre II : Workflow - Présentation, définitions et Concepts
§ Volume des transactions effectuées. Ce critère réunit le volume des accès à des
systèmes d'informations pour la récupération de données, le volume des tâches et des
interactions effectuées.
A ces remarques, nous pouvons également ajouter la relative fragilité des frontières définies
par les termes servant à classer les systèmes. Cette constatation s'applique notamment sur les
systèmes administratifs et ceux de production. Ainsi, un système workflow administratif ne
peut-il pas être de production si la raison d'être de l'organisme qui le met en œuvre est de
gérer des processus administratifs ? En d'autres termes, si le critère retenu est celui de la
valeur ajoutée, alors un système workflow administratif apporte une forte valeur ajoutée à un
29
Chapitre II : Workflow - Présentation, définitions et Concepts
Pour T. Koulopoulos, les systèmes orientés processus ont été les premiers à être présents sur
le marché (ce qui n'est pas l'avis de tous, nous l'avons vu) et sont les plus répandus
actuellement. Un système Workflow est dit orienté processus s'il utilise sur une modélisation -
précise - des processus qu'il gère et exécute. Les systèmes Workflows orientés processus sont
donc dédiés à l'automatisation de l'exécution et la gestion des processus métiers des
entreprises, ce qui leur vaut le qualificatif de "mission critical". En effet, ces systèmes sont
fondamentalement impliqués dans la réussite de processus critiques des organisations où, pour
reprendre T. Koulopoulos, le processus définit le business ("the business is the process"). La
gestion efficace des processus métiers est donc un élément clé de la réussite de ces
organisations.
Techniquement, les systèmes orientés processus basent l'automatisation des processus métiers
sur une modélisation fine de ceux-ci. Ces modèles sont généralement réalisés grâce à un outil
propre au système et à l'aide de formalismes propriétaires ou plus répandus (Réseaux de Petri,
SADT, etc..). En plus des processus (décrit en termes d'activités interconnectées), les modèles
permettent d'associer les rôles responsables de la réalisation des activités, d'identifier les
acteurs disponibles ainsi que d'attribuer des ressources (documents, formulaires, etc..) aux
activités. Mentionnons enfin que ce type de systèmes fait partie des outils utilisés lors de la
mise en œuvre des méthodes de CPI et de BPR, certains d'entre eux proposant également des
fonctions de simulation et d'analyse des processus modélisés.
30
Chapitre II : Workflow - Présentation, définitions et Concepts
applications de GED intégrant des capacités Workflow, notamment pour la gestion du routage
et de la distribution des documents. Ce fait s'explique par l'évolution des applications de GED
vers l'intégration de fonctionnalités de routage, en réponse aux besoins des clients.
Conséquence logique de cette évolution, on observe aujourd'hui l'intégration de moteurs
Workflow au sein d'applications plus vastes, telles les Systèmes de GED et de Gestion de
Données Techniques (SGDT) [STARK 98] et [KOULOPOULOS 98] ou les outils d'ERP
(Engineering Ressources Planning) [ZUR MULLEN et al. 00]. Nous reviendrons d'ailleurs
plus longuement sur ces aspects d'intégration dans un paragraphe dédié à l'évolution des
systèmes Workflows.
Certains éditeurs de logiciels [INCONCERT 97] et auteurs tels [FRYER 94] et [COURTOIS
96] interprètent le sens du terme "Communication" par la présence d'outils de messagerie
sophistiqués fournit par le système workflow ("mail centric workflow systems"). Cette
interprétation n'est pas la bonne. En fait, les systèmes Workflow de Communication se basent
sur la théorie du "Discours/Action" reprise par Winograd et Flores [WINOGRAD 87] pour
établir une méthodologie de modélisation de workflows. Cette théorie quand elle est
appliquée au domaine du Workflow et sur laquelle nous reviendrons ultérieurement,
représente les étapes d'un processus non pas en termes d'activités mais en termes de
transactions entre un client et un fournisseur, donnant lieu à des interactions dont l'objectif est
le succès de la transaction. A chaque étape du processus on identifie un client et un
fournisseur, qui peut prendre à son tour le rôle de client par rapport à un autre intervenant.
L'objectif principal étant la réussite de la transaction, le système offre les moyens de trouver
le meilleur chemin pour que la transaction ait lieu de manière satisfaisante pour le client. En
1998, [KOULOPOULOS 98] constatait que ce type de système, le plus récent, avait connu
une progression de 40 % pour l'année 1997 et pronostiquait une progression annuelle de
l'ordre de 30 à 50 %, ce qui ne s'est pas tout à fait vérifié.
La typologie décrite ci-dessus ne présente que trois critères de classification, assez bien
définis puisqu'ils correspondent aux fonctionnalités des systèmes Workflow. Il s'agit
respectivement de :
Orienté
Processus
Orienté Orienté
Documents Communication
31
Chapitre II : Workflow - Présentation, définitions et Concepts
Bien que ces trois critères soient distincts, il est par contre facile de remarquer qu'ils se
retrouvent souvent ensemble (à des degrés certes différents) dans les trois types de systèmes.
En effet, un système orienté processus aura nécessairement besoin d'accéder aux documents,
de les lier aux activités des processus puis de les gérer. Réciproquement, un système orienté
documents a également besoin d'une modélisation (même grossière) du processus
correspondant au routage des documents. Il en est de même pour les systèmes dits de
coordination. Par conséquent ce7s trois classes de systèmes se recouvrent partiellement,
comme on peut le constater dans la représentation de la figure II.5.
L'avantage de la classification par objectifs est que chaque classe correspond à une
technologie et que chaque technologie est dédiée à un type de problème bien spécifique. La
compréhension en est ainsi facilitée. Grossièrement, on pourrait dire : si l'on a des processus à
gérer, alors on a besoin de systèmes Workflow orientés processus, si l'on est plus intéressé par
la gestion de documents il faut utiliser des systèmes orientés documents, etc.. Les
détracteurs de cette classification quant à eux, lui reprochent justement le fait de ne pas
dissocier le type de Workflow du fonctionnement du système et de la technologie qu'il utilise,
ce qui ne permet pas d'établir un rapprochement avec le métier de l'entreprise. De plus, la
frontière entre les trois classes est mal définie étant donné que les fonctionnalités se
combinent la plupart du temps. Notons enfin que les trois catégories ne tiennent pas
explicitement compte du fait qu'il est possible d'avoir des workflows peu structurés (en fait,
cette possibilité est principalement présente dans les systèmes de communication). Cette
classification reste néanmoins séduisante de par sa clarté.
Il est possible de classer les systèmes Workflow uniquement selon le degré d'automatisation
qu'ils proposent : "Human Oriented" versus "System Oriented". Cette classification est
proposée par [GEORGAKOPOULOS et al. 95].
32
Chapitre II : Workflow - Présentation, définitions et Concepts
A l'opposé, les systèmes orientés vers le support des activités automatiques impliquent en
grande majorité des interactions entre machines ou entre applications informatiques, souvent
sur des systèmes d'information hétérogènes ou répartis. Par conséquent, il est nécessaire de
fournir des mécanismes de contrôle puissants (puisque le contrôle et la coordination sont
assurés par le système Workflow), de gestion de la cohérence des données manipulées, ainsi
que des mécanismes de récupération inspirés des systèmes de gestion de bases de données
(propriétés ACID : Atomicité, Cohérence, Intégrité, Durabilité, sur lesquelles nous
reviendrons dans le prochain chapitre). A l'intersection des deux types de systèmes
précédents, [GEORGAKOPOULOS et al. 95] situent les systèmes Workflow transactionnels
qui impliquent des processus mixtes, donc composés de tâches automatiques ou humaines. Ils
combinent par conséquent les fonctionnalités des deux types de systèmes. Par analogie avec
les classes de systèmes définis dans la première classification, on peut placer les systèmes ad
hoc et collaboratifs dans la catégorie des systèmes orientés activités humaines, les systèmes
de production dans la catégorie des workflows transactionnels et les systèmes administratifs et
militaires (dont nous n'avons pas parlé) dans la partie orientée activités automatiques (fig.
II.6).
Collecticiel Workflow Transactionnel
Une autre classification possible des systèmes Workflow est réalisée en fonction du degré de
structuration des workflows, c'est à dire de la possibilité de définir au préalable un modèle du
processus [MARSHAK 95]. On parle également de workflows "formels" ou "informels"
[GUIMARAES et al. 95]. En fait, dans ces deux catégories on retrouve respectivement les
systèmes Workflow ad hoc dans la première et dans la deuxième, les systèmes Workflow
administratifs ou de production.
Cette classification qu'on retrouve entre autres dans [EDER et al. 96] et [GUIMARAES et al.
95], se base sur la technologie utilisée par le système pour fonctionner. Les systèmes
workflow basés sur la messagerie utilisent, comme leur nom l'indique, des mécanismes de
messageries électroniques pour faire circuler des documents et la description des activités
entre participants. En fait, beaucoup de systèmes workflows, parmi lesquels les systèmes dits
ad- hoc et une partie de ceux dits orientés processus et orientés documents, utilisent la
messagerie électronique ou des techniques analogues.
Les systèmes workflows basés sur les bases de données quant à eux, utilisent les mécanismes
offerts par les SGBD pour assurer trois fonctionnalités :
1. Gérer le stockage et les accès aux données utiles lors de l'exécution du workflow,
2. Gérer les droits d'accès aux informations du workflow,
33
Chapitre II : Workflow - Présentation, définitions et Concepts
3. Contrôler le flux des activités à l'aide des déclencheurs ("Triggers") utilisés dans les
SGBD [EDER et al. 96]. Nous reviendrons d'ailleurs plus longuement sur cet aspect dans
la partie consacrée à la modélisation de workflows.
La dernière classification que nous souhaitons présenter, distingue les workflows statiques des
workflows dynamiques. Par workflow statique on comprend tous les workflows basés sur une
modélisation figée des processus. Cette modélisation, si elle est remise en cause en cours
d'exécution, nécessite l'arrêt du système pour introduire des corrections ou de nouvelles
entités. C'est le cas du plus grand nombre des systèmes orientés processus et orientés
documents. Le workflow dynamique quant à lui, englobe deux situations. La première
concerne tous les systèmes workflows peu structurés, donc qui gèrent des activités de groupes
plutôt que des processus, comme nous l'avons vu précédemment. La deuxième situation
concerne les systèmes workflows et les workflows qui donnent la possibilité de s'adapter et de
faire évoluer les modèles sous jacents en cours d'exécution des processus. C'est un aspect
extrêmement intéressant du workflow, sur lequel nous reviendrons beaucoup plus longuement
dans le chapitre consacré aux workflows "avancés".
3. Modélisation Workflow
Dans leur étude sur l'intégration et l'utilisation du Workflow dans les entreprises et les
administrations, [JOOSTEN et al. 96] avaient constaté l'absence de méthodologies spécifiques
à ce domaine. Les entreprises qu'ils avaient étudiées avaient développé leurs propres
méthodes, mettant l'accent sur tel ou tel aspect leur paraissant intéressant. Il a toutefois été
possible d'extraire de cette étude des fondements pour la modélisation de workflows, en se
basant sur les critères retenus par les entreprises et ceux définis par les spécialistes
théoriciens. Ces fondements ou depuis été repris en partie par les développeurs de systèmes
Workflows ou augmentés par d'autres chercheurs. Cette partie de notre travail tente
d'identifier les principales bases de la modélisation Workflow, en synthétisant les différentes
opinions établies à ce sujet. En premier lieu, nous nous intéressons aux différents aspects qui
doivent ou qui peuvent être modélisés lors de la mise en œuvre du Workflow. Ces aspects
sont présentés dans le paragraphe qui suit.
34
Chapitre II : Workflow - Présentation, définitions et Concepts
L'exécution d'un workflow doit permettre, nous l'avons dit, de répondre aux questions
suivantes : quelles sont les activités à réaliser (quoi) ? Quelles sont les compétences
nécessaires (qui) ? Quand faut-il les réaliser (quand) ? Quels sont les outils et les informations
nécessaires (comment)? On peut donc identifier plusieurs aspects différents à prendre en
compte lors de la modélisation de workflows [JOOSTEN et al. 96], [BARTHELMESS et al.
95], [JABLONSKI et al. 93] :
1. L'aspect fonctionnel
2. L'aspect Comportemental
3. L'aspect Informationnel
4. L'aspect Organisationnel
3. L'aspect Informationnel : Cet aspect concerne l'ensemble des informations et des données
qui sont associées aux activités. Le modèle informationnel, souvent négligé lors de
l'implémentation d'un Workflow [JOOSTEN et al. 96], décrit en détail les relations qui
existent entre les données, leur type et leur structure. Ce modèle peut être assimilé par
exemple au Modèle Conceptuel de Données de la méthode MERISE [TARDIEU et al.
85] ou à un modèle de classes d'une méthode Objet. Le modèle informationnel peut
également représenter le flux des informations, c'est à dire leur circulation et les
différents états qu'elles peuvent prendre.
35
Chapitre II : Workflow - Présentation, définitions et Concepts
c'est la description des rôles associés aux différentes activités. Les rôles créent l'interface
entre le modèle organisationnel et les modèles représentant les activités.
Il est possible de faire deux commentaires sur ces quatre aspects. Tout d'abord, ceux qui
s'intéressent aux Méthodes de Modélisation d'Entreprises (MME), peuvent remarquer la
similitude entre les vues de l'entreprises identifiées par les MME et les quatre aspects cités ci-
dessus. Globalement, une MME a pour but de proposer une méthode pour la modélisation
d'une entreprise. La méthode se base sur des formalismes existants si ceux-ci s'adaptent aux
exigences de la méthode ou en propose d'autres si ce n'est pas le cas. La modélisation se fait
dans plusieurs buts, notamment dans un but d'analyse, de compréhension de simulation et
d'amélioration du fonctionnement de l'entreprise (BPR ou CPI) [SCHEER 98] [VERNADAT
96]. Dans un but d'expressivité, de clarté et de simplification, les MME telles ARIS
[SCHEER 98] et CIMOSA [VERNADAT 96] par exemple, proposent de distinguer plusieurs
vues spécifiques d'une entreprise, très similaires aux quatre aspects de modélisation que nous
venons de citer. Toutefois, et c'est notre deuxième commentaire, le but du Workflow même
étroitement lié à la structure de l'entreprise, n'est pas d'en proposer une modélisation globale.
Par conséquent ces quatre aspects, bien que fondamentaux, ne se retrouvent pas toujours
simultanément dans les modèles Workflows ou s'y retrouvent sous des formes allégées. Tout
dépend de l'importance du Workflow dans l'entreprise qui le met en place, est-il utilisé
uniquement pour la gestion des processus ou également dans des buts de reconfiguration ? En
fait, même si le modèle comportemental et le modèle organisationnel (ou une partie de ce
modèle) sont suffisants, il est intéressant d'avoir une représentation des quatre aspects dans
un but d'intégration du Workflow dans un contexte plus global, qui est celui de l'entreprise et
des ses autres systèmes d'information.
D'autre part, il est important de mentionner le fait que la plupart des MME (telles ARIS et
CIMOSA), distinguent au moins trois niveaux d'élaboration des modèles : la partie analyse et
spécification, la partie conception et la partie implémentation. Or le Workflow, nous l'avons
mentionné, a des objectifs d'implémentation et d'exécution. Par suite, un modèle Workflow
n'est pas un modèle d'analyse car dans cette phase, la granularité de la modélisation n'est pas
suffisamment fine et les modèles ne peuvent être exécutables. En fait, les points de vues
divergent sur ce sujet. En effet, pour [GEORGALOPOULOS et al. 95] par exemple, le
Workflow peut aussi bien être utilisé à des fins d'analyse pour le BPR ou le CPI, que dans un
but d'implémentation pour l'exécution automatique des processus. Par conséquent, tout
modèle permettant de décrire un organisme dans les termes que nous avons cités
précédemment, peut être qualifié de modèle Workflow. Dans le même esprit, [EDER et al.
96] distinguent plusieurs utilisations des modèles Workflows (en plus de l'exécution
automatisée) :
Nous partageons cet avis et pensons ainsi qu'il peut y avoir plusieurs niveaux de modélisation
Workflows, ayant une granularité de détail de plus en plus fines. A l'opposé, [SCHEER et al.
97] estiment que seule une modélisation fine des processus, pouvant donner lieu à une
implémentation et exécution automatique, correspond à un modèle Workflow. Les modèles
servant à l'analyse et la compréhension en restent à l'état de modèles de processus.
36
Chapitre II : Workflow - Présentation, définitions et Concepts
En marge des différents éléments à modéliser dans un workflow, il est possible de distinguer
quatre types de modélisation, basés sur des paradigmes différents :
Activité 2 [OK]
[OK]
Activité 1 AND
Activité 3
// Activité 3
[OK]
Doc.1
[NOT OK]
Activité 4
Doc.2
37
Chapitre II : Workflow - Présentation, définitions et Concepts
Doc. 1
Doc. 1 Remplir Archiver
À remplir Doc. 1 - rempli Doc. 1
- A archiver
Si ces types de modélisation sont distincts, on remarque souvent dans la pratique que les
modèles Workflows en combinent deux ou plusieurs, pour plus d'efficacité et de clarté. Cette
combinaison intervient souvent à des niveaux différents. Par exemple certains systèmes (tels
TriGSflow) utilisent des formalismes graphiques à base d'activités pour la spécification des
workflows, complétés ensuite par des ECA lors de l'implémentation. Le choix dépend de
l'expressivité et de la puissance des formalismes retenus mais aussi bien entendu, de leur
adéquation aux besoins des utilisateurs.
38
Chapitre II : Workflow - Présentation, définitions et Concepts
du Workflow. D'autres méthodes ont également été créées spécifiquement pour ce domaine,
enfin d'autres encore se sont contentées de "réinventer la roue". Souvent ou retrouvera
plusieurs méthodes combinées, afin de couvrir l'ensemble des aspects qu'il convient de
modéliser : les fonctions, le comportement, les informations et l'organisation. La principale
contrainte à respecter est de conserver la cohérence et l'intégration des modèles entre eux,
dans un soucis d'efficacité. Dans ce qui suit, nous présentons rapidement les principales
méthodes qui ont été reprises ou réadaptées par les développeurs de systèmes Workflow. Plus
de détails pourront être trouvées dans les documents cités en référence dans les différents
paragraphes.
[Link] Description
Les RdP s'expriment sous la forme de graphes orientés, composés de places, d'arcs et de
transitions (fig. II.11) [BRAMS 83]. Un réseau débute par une ou plusieurs places d'entrée et
se termine par une ou plusieurs places de sortie. Entre les places sont positionnées les
transitions. Les arcs relient les places aux transitions en entrée et les transitions aux places en
sortie. Les arcs peuvent être munis de poids. La dynamique du système modélisé est
représentée par la circulation d'un ou de plusieurs jetons entre les places. Le nombre de jetons
étant défini par le poids de l'arc liant la transition à la place en sortie. Le passage de jetons
d'une place à l'autre est soumis à la (aux) condition(s) ou l'événement (aux événements)
représenté(s) par la transition. Dès que la condition est vérifiée, la transition est mise à feu et
les jetons peuvent circuler.
Selon les besoins du modèle et le domaine d'application, une place peut correspondre à une
activité dans un processus, à l'état d'un système ou à un événement, à une file d'attente, etc..
Les transitions quant à elles correspondent le plus souvent à des événements ou des conditions
à vérifier. Elles peuvent cependant représenter des activités, en particulier si les places jouent
le rôle d'événements.
Jeton
Place
Transition
39
Chapitre II : Workflow - Présentation, définitions et Concepts
Le formalisme et la méthode des RdP sont très répandus dans les systèmes Workflow orientés
processus, sous leur forme initiale ou sous une forme modifiée. De plus, beaucoup de
méthodes destinées à la modélisation Workflow se basent sur ces formalismes. Ce succès est
du, nous l'avons dit, à la simplicité des formalismes des RdP et à leurs caractéristiques qui les
rendent particulièrement adaptés et puissants pour la représentation de la dynamique d'un
système, en particulier d'un processus. D'autre part, la possibilité d'effectuer des simulations et
de les visualiser (grâce à la circulation des jetons) permet de détecter les causes de
ralentissement et les boucles. Ceci facilite grandement le travail d'amélioration du processus
modélisé et est un avantage indéniable.
Malgré leurs avantages indéniables et l'attachement que leur portent beaucoup de spécialistes,
les RdP n'en demeurent pas moins sans inconvénients pour la modélisation Workflow. Le
premier inconvénient provient de leur simplicité qui ne permet pas de prendre en compte tous
les aspects plus compliqués qui sont utiles, voir nécessaires à la modélisation d'un workflow.
Parmi ces aspects, nous distinguons en particulier :
§ Les jetons d'un RdP ne correspondent à rien de vraiment précis. Ils peuvent servir à
indiquer où en est l'état du processus. Ils peuvent également correspondre à des objets
véhiculés d'une place à l'autre mais il n'est pas possible de distinguer plusieurs types
d'objets à l'aide d'un seul type de jeton. Une autre évolution des RdP, dite RdP colorés,
permet d'introduire des jetons de couleurs différentes au sein des places, ce qui permet
d'établir des correspondances entre jetons et objets manipulés dans le processus mais
introduit également quelques difficultés au niveau des transitions, notamment pour
fixer le routage des différents jetons. Quoiqu'il en soit, les RdP colorés restent
insuffisants pour représenter l'ensemble des objets requis par les activités d'un
processus ainsi que pour décrire les relations qui existent entre eux.
§ Les rôles responsables de la réalisation des activités ne peuvent être représentés sur un
RdP alors que la notion de rôle est fondamentale pour le Workflow. Bien évidemment,
il est toujours possible grâce à l'éditeur d'un système Workflow d'ajouter les rôles en
tant qu'attributs des places par exemple mais ces attributs ne pourront figurer sur le
modèle. Pour améliorer la clarté du RdP, il est alors nécessaire de créer des modèles de
transition entre le modèle organisationnel et celui du processus.
§ L'intégration du modèle comportemental (défini à l'aide d'un RdP) avec les autres
modèles n'est pas facilitée par l'absence d'entités pouvant jouer le rôle d'interface. Par
exemple, l'intégration avec le modèle organisationnel n'est pas simple puisque les rôles,
entités pouvant servir d'interface, ne figurent pas sur le RdP. Le problème se pose
également entre le modèle informationnel et le modèle comportemental, puisqu'on ne
peut représenter les informations requises au niveau des activités. Ce problème est
partiellement résolu à l'aide des RdP colorés.
40
Chapitre II : Workflow - Présentation, définitions et Concepts
§ Enfin, malgré la dynamique qu'ils expriment, les réseaux de Petri sont impossible à
reconfigurer dynamiquement, par exemple lors d'une modification du processus
correspondant.
Vérification
de la disponibilité
OK Fin du workflow
Article non
disponible Commande indisponible
Envoyer colis
Envoyer facture
Arrivée d’une OK facture
commande payée
Article
disponible facture Fin du workflow
Facture payée Commande aboutie
envoyée
Facture
Préparer colis impayée
Article
disponible Annuler la commande
Colis prêt
Facture
impayée Fin du workflow
Commande annulée
Dans la figure II.12, on considère qu'une place représente l'état du workflow à un moment
donné, que les transitions correspondent à des activités et qu'il est possible de leur ajouter des
conditions d'activation. On peut constater sur cette figure que les rôles ne sont effectivement
pas représentés, donc qu'il n'est pas possible de repérer la répartition des activités sur les
différentes responsabilités. De plus, on constate bien qu'on ne sait pas quels sont les objets
41
Chapitre II : Workflow - Présentation, définitions et Concepts
manipulés par chacune des activités et qu'on ne connaît pas non plus l'évolution de leur état.
Cet exemple très simple et démonstratif sera repris pour chacune des méthodes décrites dans
les pages suivantes.
En conclusion sur l'adéquation des RdP à la modélisation Workflow, il est possible de dire
que ceux-ci restent des formalismes de modélisation de bas niveau, plus adaptés à la
description des mécanismes internes et locaux des entités Workflow qu'à la représentation
claire des workflows des organisations.
La méthode SADT ("Structured Analysis and Design Technique") trouve ses racines dans le
début des années 70. Son but est de permettre la modélisation et l'analyse d'activités en les
décomposant hiérarchiquement, à l'aide d'une méthode et de formalismes standards, afin de
faciliter la communication les différentes équipes de l'entreprise [IDEF0 93]. Etant donné que
cette décomposition est possible, alors on peut généraliser en l'appliquant aux processus de
production des entreprises (eux-mêmes décomposables en activités). La méthode IDEF0
quant à elle, est basée sur la plupart des concepts et formalismes de SADT, sauf les
"datagrammes" qu'elle ne reprend pas. Elle introduit en revanche quelques ajouts au niveau
méthodologique. Nous confondons donc la description des formalismes de ces deux
méthodes.
[Link] Description
Côté formalismes, SADT ne présente pas de difficulté particulière. On distingue deux types
de diagrammes duaux : les "actigrammes" et les "datagrammes", utilisant trois formalismes
principaux (accompagnés d'autres formalismes auxiliaires) : les diagrammes parents, les
boîtes et les flèches.
Données de
Globalement, un actigramme est représenté par une Contrôle
boîte, identifiée par un verbe d'action. Il sollicite une *
Activité
entrée (une donnée) qui est transformée, modifiée ou Ou
changée d'état pour générer une ou plusieurs sorties. Entrée Sous-processus Sortie
Ce processus s'effectue suivant certains mécanismes Index
et sous des directives de contrôle. Les données de
Ressource Appel
contrôle ne sont pas modifiées par l'activité, par
opposition aux données d'entrée. Elles peuvent
déclencher, inhiber ou jouer le rôle de paramètre sur Figure II.13 – Actigramme SADT
l'activité. Les mécanismes représentent les moyens
de réaliser l'activité, le comment. Les flèches d'entrée, de sortie et de contrôle sont identifiées
dans les datagrammes par des noms.
Activité de
Contrôle
Similairement, un diagramme de données crée, à
partir d'activités d'entrées (les activités génératrices), Donnée
une donnée utilisée par l'activité de sortie. Le Activité Activité
processus s'effectue sous l'influence d'activités de génératrice Index génératrice
contrôle et en utilisant des mécanismes de support de
la donnée. Les activités génératrices, utilisatrices et Ressource Appel
de contrôle sont identifiées par des verbes et la
donnée par un nom.. Figure II.14 - Datagramme SADT
42
Chapitre II : Workflow - Présentation, définitions et Concepts
Les mécanismes sont ceux servant à mémoriser la donnée. Les formalismes utilisés pour
décrire les deux types de diagrammes sont les mêmes mais leur contenu est "inversé" - les
données deviennent des activités et vice-versa. Le sens du terme "donnée" est à prendre au
sens large, il peut s'agir de données informatiques, de documents ou d'objets physiques.
§ Les contraintes et conditions imposées sur une boîte. Ces contraintes peuvent prendre
plusieurs formes, de l'expression logique à l'occurrence d'un événement. Par exemple,
un document en sortie d'une activité peut être utilisé en tant que contrainte d'une autre
activité. Elle exprime dans ce cas que l'activité doit atteindre la disponibilité du
document pour pouvoir s'exécuter.
§ Les ressources requises pour l'exécution de la tâche (machines, personnel, objets, …),
§ Les appels émis par la tâche vers d'autres boîtes,
§ Les entrées et sorties – principalement les objets consommés et produits par la boîte.
Les flèches peuvent être annotées pour plus de clarté et leur position par rapport aux boîtes
varie en fonction du type d'élément représenté. Ainsi, les contraintes et conditions sont
représentées par des flèches descendantes, situées au dessus de l'activité. Les ressources sont
représentées par des flèches remontantes situées en dessous de la boîte, tandis que les
entrées/sorties sont exprimées par des flèches horizontales, respectivement placées à l'entrée
et à la sortie d'une boîte. Il est également possible d'exprimer des mises en parallèle ou des
boucles, sans toutefois de formalismes particuliers.
Sous-
Processus 1
2
3
P.1/1 Processus P1
Figure II.15 – Diagramme parent SADT/IDEF0
SADT présente peu d'avantages pour la modélisation Workflow, bien que ce soit une
modélisation à base d'activités. L'intérêt principal de la méthode est la possibilité de
représenter des activités avec en plus, une approche descendante dans le niveau de granularité
ce qui permet d'obtenir plusieurs vues de la même activité. Plus globalement, les autres
43
Chapitre II : Workflow - Présentation, définitions et Concepts
Par rapport à la modélisation Workflow, SADT souffre de certaines lacunes qui limitent son
intérêt. Nous en donnons ci dessous la liste des plus importantes :
§ Les formalismes utilisés par SADT sont clairs mais trop pauvres. Si le formalisme qui
permet de représenter les activités (et par extension, des processus) est intéressant (les
diagrammes parents et les boîtes), on constate en contrepartie qu'on utilise les mêmes
formalismes pour les datagrammes et le reste des éléments du modèle (boîte, flèche et
description textuelle). Par conséquent, la clarté du modèle et sa lisibilité s'en ressentent
quand le nombre d'entités augmente. Les lacunes suivantes en sont d'ailleurs toutes des
conséquences.
§ La représentation des ressources et des contraintes est redondante, donc source d'erreurs.
De plus, chaque fois qu'une ressource ou qu'une contrainte est requise par une activité ou
un processus (une boîte), elle est représentée par une flèche annotée qui est un symbole
"anonyme", c'est à dire qu'il se perd parmi les autres flèches.
§ Il n'y a pas dans SADT de formalisme qui permette de représenter clairement les
contrôles de flux. Aussi, malgré la possibilité d'introduire des activités en parallèles ou
des points de rencontre, aucun symbole de SADT ne permet de le faire explicitement.
§ De même que pour les RdP, l'intégration d'un modèle fonctionnel SADT avec les autres
modèles (organisationnels et informationnels) n'est pas simple.
44
Chapitre II : Workflow - Présentation, définitions et Concepts
Comme nous pouvons le constater, SADT permet de représenter les rôles impliqués dans la
réalisation des activités, contrairement aux RdP. Il est même possible d'indiquer quels sont les
objets produits ou manipulés à chaque étape (quel que soit leur type – physique ou
informatique) ce qui apporte un "plus" au niveau de la compréhension du processus. Par
contre, ces avantages sont infirmés par le manque de clarté du modèle, dont la cause
principale est due à la pauvreté des formalismes, comme nous l'avons déjà souligné. En effet,
il est par exemple difficile de distinguer les événements enclenchant les activités des objets
qu'elles consomment ou produisent. De même, comme il est possible de représenter un
événement ou un objet en tant qu'entrée d'une activité ou en tant que contrainte, cela introduit
des problèmes de confusion et de redondance de l'information. Tous ces facteurs aboutissent à
des modèles trop chargés à la lisibilité réduite.
En conclusion, on pourra dire que la méthode SADT est trop rigide et qu'elle n'est pas assez
complète pour être appliquée dans le domaine du Workflow, en particulier pour la production
de modèles exécutables. SADT reste néanmoins intéressante pour la modélisation rapide de
processus, destinés à la compréhension et au début d'une phase d'analyse pour la
reconception. Par ailleurs, il est étonnant qu'une méthode aussi structurée et précise au niveau
de la description des processus le soit très peu au niveau de la description des ressources,
informations et contraintes. Enfin, par rapport aux systèmes Workflow du marché, le seul
élément repris à SADT est la représentation des processus à des niveaux de granularité
différents. Toutefois, cette caractéristique n'est pas uniquement spécifique à SADT car elle se
retrouve dans plusieurs autres méthodes.
1. Les vues sur les processus, dont les modèles sont appelés "schémas de processus"
2. Les vues sur les objets manipulés dans un processus, appelés "schémas des objets".
3. Un langage d'élaboration qui permet de décrire d'une façon logique et textuelle, les
schémas de processus. Nous ne parlerons cependant pas de ce langage dans ce travail.
1. Les schémas de processus : les schémas des processus d'IDEF3 ressemblent beaucoup
aux actigrammes de IDEF0. Ils en reprennent d'ailleurs un des éléments les plus
importants : les boîtes (actigrammes), qui correspondent à des processus ou des activités,
avec la possibilité de décomposition des vues sur les boîtes. Dans IDEF3, une boîte est
appelée "unité de comportement" (UDC) ("unit of behavior" - UOB). Cette dénomination
est intéressante puisqu'elle permet de réunir sous le même qualificatif, une activité ou un
ensemble d'activités. Les UDC sont reliées par des liens, exprimés par des flèches dont la
45
Chapitre II : Workflow - Présentation, définitions et Concepts
A B A B
IDEF3 abandonne par contre tous les autres types de flèches indiquant les contraintes sur
les activités ou les ressources allouées, ce qui a le mérite d'augmenter la lisibilité du
modèle. Par ailleurs, IDEF3 introduit de nouveaux symboles très intéressants de contrôle
de flux, appelés "jonctions" ("junctions"). Il s'agit des opérateurs logiques classiques :
AND noté "&", OR noté "O" et XOR noté "X", auxquels il est possible d'ajouter des
contraintes de synchronisation. Un opérateur de jonction est représenté à l'aide d'une case
dans laquelle figure l'opérateur. Si ce dernier est asynchrone, la case est marquée d'une
barre à gauche. Si elle est synchrone elle est barrée de part et d'autre (fig. II.18). Les
opérateurs de jonction peuvent être utilisés en entrée d'UDC ou en sortie. Ainsi, dans la
figure II.18, la première jonction "&" indique que les activités B et C sont exécutées en
parallèle une fois que l'activité A se termine. Toutefois, le fait que la jonction soit
asynchrone permet à l'une ou l'autre des activités de commencer sans attendre l'activité
parallèle. Le symbole "O" suivant l'activité C est synchrone. Il indique que E ou F est
exécutée après C. Les deux peuvent également s'exécuter simultanément. La contrainte de
synchronisation implique que si plusieurs occurrences de l'une de ces activités sont créées,
alors elles doivent s'exécuter simultanément. Le "O" synchrone en sortie indique que E et
F doivent être terminées avant de lancer l'activité G. L'utilisation d'un "O" non synchrone
aurait assoupli la contrainte et aurait permis à G de s'exécuter après la fin de l'une ou
l'autre des activités. Enfin, la jonction synchrone "&" précédant l'activité F contraint cette
dernière à ne s'exécuter que si D et G sont terminées.
B D
A & & H
E
C O O G
F
46
Chapitre II : Workflow - Présentation, définitions et Concepts
2. Les schémas d'objets : ces schémas constituent eux aussi une amélioration intéressante
d'IDEF3 par rapport à IDEF0. Ils appartiennent à la catégorie des modèles basés sur les
artefacts (§ 3.1.2) pour laquelle nous n'avions jusqu'à présent pas donné d'exemple.
Globalement, un schéma d'objet sert à représenter les différents états que peuvent prendre
les objets utilisés par les UDC lors de l'exécution. Par conséquent, les schémas d'objets
reflètent en général des scénarios et non tous les cas possibles. Il peut donc y avoir
plusieurs schémas d'objets pour un même schéma de processus. Cela n'empêche pas, bien
entendu, de pouvoir afficher tous les cas possibles sur le même schéma d'objets. Un état
est représenté par un cercle dans lequel on affiche le nom de l'objet suivi de l'état qu'il
prend. Les schémas d'objets se spécialisent en deux autres types de schémas : les
"schémas de transition" et les "schémas étendus de transitions ". Les schémas de
transitions (fig. II.19.a) permettent d'associer les UDC des schémas de processus aux
états des objets. Comme une UDC intervient dans le passage d'un objet d'un état à un
autre, on l'appelle une "transition". Les transitions utilisent un formalisme légèrement
différent de celui des UDC. Les états sont reliés aux transitions par des liens décrits par
des flèches. Il est de plus possible d'attribuer un poids à un lien de transition. On
distingue donc les liens de transition normale, sans poids, des liens de transition forte,
décrit par une double flèche. Un objet pouvant prendre plusieurs états suite à la
réalisation d'une UDC, les schémas d'objets font également l'usage des opérateurs
logiques, sans toutefois avoir la possibilité de préciser la synchronisation. Enfin, il est
possible d'associer des conditions aux objets, lors de leur entrée ou de leur sortie d'un état
ou lors du passage d'une transition. Ces conditions sont notées sur des formulaires
indépendants du schéma d'objets.
T1 T2
: objet
1 2 O2:
OK x : transition
O1: O2: i
vide plein X
: opérateur
O2:
refus
Les schémas étendus de transition sont des représentations plus complètes des schémas
de transition (fig. II.19.b). En effet, en plus de l'état des objets et des transitions, ces
schémas représentent les liens qui existent entre les objets concernés par les transitions, et
entre ces objets et ceux du monde extérieur. Il est donc possible de décrire l'ensemble des
relations qui existent entre les objets créés et manipulés par les UDC ou de lier les objets
à ceux qui sont chargés de les manipuler. Il est possible d'exprimer n'importe quel type de
relation à l'aide d'un lien entre des objets, des relations d'utilisation, de composition et
même de spécialisation.
T1 T2
1 2 O2:
OK
O1: O2:
vide plein X
O2:
Traité refus
Doit
O4 composé contenir par
de
R1 : Lien entre
composé O3 les objets
O5 de
47
Chapitre II : Workflow - Présentation, définitions et Concepts
Dans la figure 1.19b, nous avons ajouté des informations supplémentaires sur les objets qui
sont manipulés par les transitions. En premier lieu, nous avons exprimé sous forme de lien, la
contrainte que l'objet O1 devait contenir l'objet O3. Ce dernier est lui-même composé de deux
autres objets O4 et O5. Enfin, la liaison entre O2 et l'objet R1 (ressource) exprime que l'objet
O2 est traité par la ressource R1. Nous avons donc utilisé les liens entre objets pour exprimer
différentes relations (contrainte, composition, utilisation), qui enrichissent le diagramme de
départ (II.19.a).
La méthode IDEF3 présente des caractéristiques qui la rendent très intéressante pour la
modélisation Workflow. Il est important de mentionner que nous n'avons parlé ci-dessus que
des concepts et des formalismes les plus importants d'IDEF3. Il en existe d'autres tout aussi
intéressants que nous ne n'évoquerons pas ici, mais qu'il est possible de découvrir dans
[MAYER et al. 95].
IDEF3 nous l'avons dit, est dans l'ensemble bien adaptée à la modélisation de workflows.
Toutefois, bien qu'elle présente plusieurs aspects très attrayants, elle n'en reste pas moins
exempte de quelques défauts non négligeables. Le premier de ces inconvénients est celui de
l'absence de la notion d'événement dans une représentation IDEF3, que ce soit au niveau d'un
schéma de processus ou d'un schéma d'objet. Les seuls événements qu'il est possible de
prendre en compte sont les "fins d'activités" (qui sont implicites et non représentés) pour les
schémas de processus, ainsi que les états d'objet pour les schémas de transition. La transition
d'un objet d'un état à un autre peut être confondue avec l'occurrence d'un événement qui
permet de décider du routage à suivre dans la suite. Par contre, il ne semble pas possible de
représenter des événements non prévus par la méthode. Par exemple, il n'est pas possible de
représenter explicitement des événements externes ou des événements correspondant à l'état
des activités et non à celui des objets, pourtant essentiels pour la gestion du workflow. Ce
48
Chapitre II : Workflow - Présentation, définitions et Concepts
manque dans la modélisation IDEF3 est assez handicapant pour la modélisation de workflows
qui est en grande partie, basée sur l'occurrence d'événements.
Un autre inconvénient à nos yeux est l'absence de la notion fondamentale de rôle, qui
n'apparaît pas clairement dans les schémas IDEF3. Bien sûr, il est possible de lier un objet
manipulé par les transitions à un objet "personne" dans les schémas étendus de transition mais
sans que cet objet "personne" ne corresponde nécessairement à un rôle référencé dans un autre
modèle. En fait, la possibilité offerte dans les schémas étendus de transition de lier des objets
à d'autres objets constitue un intérêt certain mais risque d'être en même temps une source de
confusion. En effet nous avons vu qu'IDEF3 représente tous les objets par un seul formalisme,
le cercle. Ces objets peuvent donc être de n'importe quel type et correspondre à "n'importe
quoi : " un objet du processus, une personne, un lieu ou même un concept. Il n'existe pas de
formalismes spécifiques pour différencier les objets entre eux, ni les objets externes au
processus de ceux qui lui sont internes. Il n'existe pas non plus de moyens de classer ces
objets en des types différents. Par conséquent, même si un schéma étendu de transition est
plus riche en information que les schémas de transition "classiques", celle-ci n'est pas
suffisamment typée ni structurée pour pouvoir être exploitée correctement, notamment pour
une exécution automatique. Par exemple, dans la figure I.19b, on indique bien que l'objet O2
est traité par R1 mais nous n'avons aucune information sur ce dernier objet - pas de type (est-
ce une ressource, une personne, etc.) ni d'attributs qui permettent de le caractériser ou de le
repérer.
Envoyer
Lettre
d’excuse
2 Magasinier Livreur
Vérification Commande Commande Envoyer
indisponible
avortée Le
de la
commande colis
Livré par
Envoyer Préparé par 6
1
Facture Colis Colis
commande X préparé & livré
3
Commande
validée &
Traitée par Référence
à activité
Préparer externe Facture
Agent colis payée
x
marketing
4 Facture
envoyée X
Facture Annuler
non commande
Agent Envoyée par payée
marketing
5
Commande
& annulée
Figure II.20.b – Modélisation d'un workflow avec IDEF3 : schéma étendu de transition
49
Chapitre II : Workflow - Présentation, définitions et Concepts
L'exemple ci-dessus nous permet de constater deux faits : premièrement, nous pouvons
observer qu'il est nécessaire d'avoir les deux types de schémas pour obtenir une modélisation
exploitable des processus modélisés. Chacun des schémas pris séparément n'est pas
suffisamment explicite pour bien comprendre le processus et encore moins l'exécuter
automatiquement. Deuxièmement, nous pouvons constater dans le schéma de transition, que
le déroulement du workflow est orchestré par les changements d'états des objets qui y sont
manipulés et non par des événements. Bien sûr, si les événements qui régulent le workflow
sont exprimés par les changements d'états des objets, il n'y a pas de problème. Par contre si ce
n'est pas le cas, alors la notation ne permet pas de l'exprimer.
En conclusion sur IDEF3, nous pouvons dire que c'est une méthode aboutie et réfléchie,
présentant d'indéniables intérêts pour la modélisation de workflows. IDEF3 est certainement
plus performante que les méthodes présentées jusqu'à présent. Les schémas obtenus sont
globalement implémentables, bien que plus dédiés à l'analyse qu'à l'exécution automatique de
workflows. Il existe d'ailleurs des outils commerciaux de modélisation et d'analyse de
processus basés sur IDEF3 (téléchargeables sur le site [Link] mais à notre
connaissance, il n'existe pas de systèmes Workflows commerciaux basés sur cette méthode.
Objet Processus
D'après le métamodèle de la figure II.21, on peut comprendre par l'association entre les entités
"Activité" et "Evénement", que l'occurrence des événements est un élément déclencheur
d'activité. La relation d'agrégation / appartenance est par contre moins claire : comment un
événement peut-il appartenir à une activité ? Le TMW considère en fait qu'une activité est un
ensemble d'événements dont l'occurrence a lieu suite à la réalisation de l'activité. En d'autres
termes, un événement survient toujours suite à la réalisation d'une activité est y est donc
1
Bien que les documents de la WfMC auxquels nous nous référons dans ce chapitre soient de 1995 et au delà,
ces derniers ont pour la plupart, en particulier le modèle de référence, une première version rédigée en 1994.
50
Chapitre II : Workflow - Présentation, définitions et Concepts
intimement lié. A notre avis, cette conception de la relation entre événements et activité est un
peu limitative. En effet, elle suppose que les seuls événements à représenter dans un workflow
sont ceux qui indiquent la fin des activités. Ce fait est regrettable car le métamodèle, tel qu'il
est défini aurait pu supporter tous les types d'événements et augmenter ainsi l'expressivité des
modèles obtenus.
La méthode distingue également les acteurs responsables d'une activité de ceux qui la
réalisent. Cette distinction sous-entend donc qu'un acteur peut avoir plusieurs rôles dans une
organisation. Toutefois, la notion de rôle n'apparaît pas clairement dans le métamodèle.
Enfin, la méthode du Trigger Modelling propose trois étapes de modélisation que l'on pourrait
comparer aux étapes classiques de l'élaboration des logiciels : l'analyse, la conception et
l'implémentation. A chacune des étapes, le TMW associe respectivement trois types de
modèles. Chaque modèle possède ses propres formalismes et propose, selon l'étape de la
modélisation à laquelle il est lié, une vue plus ou moins détaillée des processus modélisés.
51
Chapitre II : Workflow - Présentation, définitions et Concepts
§ Les rectangles enfin, représentent des activités qu'il est possible de décomposer en
d'autres modèles TMW.
La méthode TMW présente certains aspects intéressants mais reste globalement assez limitée.
Comme premier intérêt, nous pouvons noter que la méthode propose de décomposer le
processus de modélisation en plusieurs étapes – analyse, conception, implémentation – en
plus des possibilités de décomposition des activités ("rectangles" du modèle de conception).
Deuxièmement, la notion explicite de flux dirigé par les événements est très intéressante et
correspond très bien aux concepts du Workflow. Il est cependant regrettable qu'elle se limite
aux événements marquant la fin des activités. Enfin, le TMW est un moyen d'enrichir le
formalisme des RdP. L'intérêt est double puisque d'une part, la méthode profite des avantages
des RdP et de leur base mathématique, et d'autres part, elle introduit des formalismes
permettant d'augmenter la clarté des modèles obtenus.
[Link] Exemple de modélisation d'un workflow avec le Trigger Modelling for Workflow
Comme cela a été le cas pour les autres méthodes et formalismes, nous proposons une
modélisation à l'aide du TMW, du workflow de prise en charge d'une commande client. Cet
exemple nous permet de vérifier certains des inconvénients présentés par la méthode,
notamment en ce qui concerne les événements. En effet, comme on peut le constater sur les
figures de la page suivante, il n'est pas possible dans certains cas, de définir la cause de la
réalisation d'une activité - donc l'événement déclencheur. Par exemple, il n'est pas possible de
dire dans quel cas une commande sera annulée ou quand le colis sera livré, suite à la décision
du client. Bien évidemment, dans notre exemple, la compréhension est facilitée de par la
simplicité du cas. Par contre dans des exemples plus compliqués, la notation ne suffit plus
pour exprimer correctement l'ensemble des situations.
52
Chapitre II : Workflow - Présentation, définitions et Concepts
Facture
r
Annuler Facturer Préparer Annuler
indispo. colis non dispo.
Préparer
Payer. colis
Décision
Ne
Livrer pas
Annuler Annuler
colis payer.
non payé non payé Livrer
colis
Annuler Annuler
Figure II.24.a - Exemple de workflow non Payé non Payé
Modèle d'analyse TMW
Passer
commande
Figure II.24.c – Modélisation d'un
workflow avec TMW. Modèle de
Vérifier
conception
disponibilité Facturer Préparer colis
Payer
Livrer
Ne pas colis
payer
Annuler Annuler
non payé non payé
53
Chapitre II : Workflow - Présentation, définitions et Concepts
des processus métiers d'une entreprise doit se concentrer en priorité sur la façon d'améliorer la
communication, la collaboration et l'interaction entre les différents membres de l'organisation.
Chaque étape donne lieu à des actes biens définis, commis par les rôle associés à l'étape en
question. En effet, Winograd et Flores estiment que quel que soit le type de transaction liant
un client et un fournisseur, elle peut toujours se résumer à des actes biens définis, liés à l'une
des quatre étapes principales. Par exemple, l'étape de négociation donne lieu à un acte de
"proposition de contre offre" de la part du fournisseur. Le client peut refuser commettre les
actes de "refuser l'offre", "d'accepter l'offre" ou de "faire une nouvelle proposition". Les
quatre étapes peuvent de plus se répéter plusieurs fois pour une même transaction, jusqu'à la
satisfaction du client. Signalons par ailleurs que si le client est en général l'initiateur de la
requête, il est également possible qu'il réponde parfois à une offre faite par le fournisseur.
Dans ce cas, c'est ce dernier qui est l'initiateur du workflow.
Bien entendu, la méthode prévoit la possibilité - tout à fait réaliste - qu'une transaction
nécessite la réalisation d'autres transactions en cascade. Par conséquent, on distingue deux
types de workflows : le "workflow primaire" ("primary workflow") et les "workflows
secondaires" ("secondary workflows") qui le composent. Le workflow primaire correspond à
l'objectif global du workflow en question, il distingue le client et le fournisseur principaux du
workflow. Les workflows secondaires sont représentés sur le même modèle ou séparément.
S'ils figurent sur le même modèle, alors ils sont liés au workflow primaire ou entre eux par
liens représentés par des flèches. On distingue deux façons d'établir des liens entre workflows:
§ Les liens orientés par les actes, qui signifient qu'un workflow secondaire est instancié
lorsqu'un des actes d'une étape est en cours de réalisation. Ce lien est représenté par
une flèche partant du début de l'étape en question.
§ Les liens orientés par les états, qui expriment qu'un workflow secondaire est initialisé
lorsque le workflow auquel il est lié entre dans l'une des quatre étapes répertoriées.
Dans ce cas le lien est représenté par une flèche partant de la fin de l'étape en question.
54
Chapitre II : Workflow - Présentation, définitions et Concepts
1. Le lien conditionnel, qui est représenté par un losange. Chaque flèche partant du losange à
destination d'un workflow secondaire, correspond à un choix. Il est utile de décrire
textuellement sur le lien la nature du choix ou la cause le justifiant.
2. Le lien de flux normal, il est représenté par une flèche pleine. Il déclenche un workflow
dont la réalisation permet l'avancée du processus métier vers la réussite.
3. Le lien de flux exceptionnel qui est par contre représenté par une flèche rouge et instancie
un workflow qui permet de prendre en charge des situations exceptionnelles ou des
problèmes.
4. Le lien de parallélisme, il indique que des workflows secondaires sont lancés en parallèle.
Les flèches représentant les liens doivent avoir la même origine sur le modèle.
5. Le lien de séquence, qui signifie que les workflows sont réalisés séquentiellement. Une
séquence est représentée par une flèche partant de la dernière étape d'un workflow et
aboutissant à la première étape du workflow qu'elle relie.
Workflow
Choix 1 a
Workflow
b
séquence Workflow Choix 2
préparation négociation primaire
But de la transaction
Workflow
Workflow c
acceptation réalisation e
workflow
Workflow parallèles
d
Signalons enfin la possibilité de représenter les données associées aux workflows par une
flèche grisée, liée à une symbole représentant un support de stockage (cylindre). Il est de plus
possible de signaler des contraintes de temps sous la forme de petites horloges.
55
Chapitre II : Workflow - Présentation, définitions et Concepts
Les personnes peuvent plus facilement comprendre leur rôle - client ou fournisseur - et sont
plus impliquées dans leur travail puisqu'elles sont responsables de la qualité du résultat obtenu
dans la transaction. De plus, la possibilité d'itérer les workflows (donc les transactions)
jusqu'à obtention des résultats fixés est un facteur de qualité et d'amélioration des processus,
similaire à l'approche de CPI.
Enfin, dernier avantage non négligeable, il est important de signaler que la méthode
Communication / Action est utilisée dans un produit assez puissant, commercialisé sous le
nom de "Action Workflow".
Etant donné que la méthode ne se base pas dans son ensemble sur les mêmes concepts que les
méthodes que nous avons présentées précédemment, il est parfois délicat de la juger sur les
mêmes critères qui n'y sont pas toujours significatifs. Par exemple nous pourrions dire que les
événements ne sont pas pris en compte. Mais les événements sont-ils toujours dans le cas
présent des éléments importants, puisque l'essentiel lors de l'exécution, n'est pas d'enchaîner
sur une autre activité mais de réussir la transaction ? D'autre part la possibilité de représenter
des choix, d'établir des liens en fonction de l'état d'un workflow, et la prise en charge des
situations problématiques recouvre en grande partie cet aspect événementiel.
En fait, le premier inconvénient de la méthode est qu'elle est surtout destinée à des processus
qu'il est possible d'assimiler à des négociations. En effet, dans plusieurs cas les processus ne
sont pas composés d'activités nécessitant une négociation entre plusieurs acteurs mais
uniquement des compétences individuelles. L'aspect collectif du processus est alors donné par
l'assemblage des compétences individuelles et non par la communication entre les entités. Si
l'activité est individuelle, comment y représenter un client et un fournisseur ? Il est bien
entendu hors de question de considérer qu'un système d'information est un client ou un
fournisseur s'il n'a pas de rôle actif dans le processus mais n'est là qu'en tant que ressource.
D'autre part, on peut dire que la méthode est essentiellement dédiée à des utilisateurs humains
puisqu'elle ne descend pas dans le détail des workflows et se limite à des actes prédéfinis -
assez abstrait pour des machines ou des logiciels.
Enfin, nous pouvons signaler un autre inconvénient de la méthode - plutôt mineur - qui est sa
notation graphique. En effet, dès qu'il est nécessaire de représenter plusieurs workflows reliés
entre eux, le modèle (également appelé "carte du workflow" dans la méthode ("workflow
map")), prend vite des aspects tentaculaires, nuisibles à la compréhension du processus.
L'exemple que nous avons utilisé jusqu'à présent - celui du traitement de la commande d'un
client - n'est pas très adapté à la méthode de modélisation Communication / Action. En effet,
comme il est possible de le voir sur la figure II.27, plusieurs activités du processus sont des
56
Chapitre II : Workflow - Présentation, définitions et Concepts
activités individuelles ne nécessitant pas la mise en place d'une négociation entre deux
acteurs. Le modèle de l'exemple met donc plus en avant les inconvénients de la méthode que
ses intérêts, quand elle est appliquée à des cas similaires.
Sur la figure II.27, nous pouvons constater que nous avons représenté un workflow secondaire
pour la recherche de la disponibilité des articles commandés par le client. Ce workflow met en
communication le magasin et le marketing. Il est en fait évident que la recherche de la
disponibilité de la commande ne nécessite que la consultation de la base de donnée du stock
de l'entreprise et non une communication directe. Plus encore, l'activité d'annulation de la
commande est représentée par un workflow secondaire vide car il ne met pas en relation des
acteurs pouvant tenir les rôles de client ou de fournisseur. On s'aperçoit donc bien par cet
exemple que la méthode ne permet pas d'entrer dans le détail des processus. En fait, pour
modéliser le workflow de prise en charge de la commande du client, seul le workflow
primaire aurait pu être suffisant, puisque effectivement les seuls à établir une vraie
négociation sont le client et l'entreprise (via le marketing).
Workflow primaire
Facturation Agent
Client
Payé Comptable
Cet exemple ne doit pas pour autant faire oublier l'intérêt de cette méthode, notamment en ce
qui concerne les aspects de communication et de qualité qu'elle suscite chez les utilisateurs.
La méthode ARIS [SCHEER 98] est une Méthode de Modélisation d'Entreprises (ou "en
entreprise") qui connaît un fort succès ces dernières années. Les outils informatiques qui ont
été développé autour font les premières ventes du marché et ont été intégré dans plusieurs
logiciels d'ERP ("Enterprise Ressource Planning") dont le plus célèbre est SAP.
Nous avons mentionné au début de ce chapitre que le Workflow n'était qu'un des aspects
couverts par la modélisation d'entreprise, dont le champ d'action est beaucoup plus vaste
puisqu'il ne se limite pas uniquement à la modélisation des processus et de leur flux. Nous
avons également dit qu'il existait une intersection entre les domaines traités par les MME et le
Workflow. Cette intersection concerne les quatre aspects théoriquement nécessaires à la
modélisation Workflow : l'aspect Informationnel, l'aspect Organisationnel, l'aspect
57
Chapitre II : Workflow - Présentation, définitions et Concepts
Fonctionnel et l'aspect Comportemental. Ces aspects ne sont toutefois pas toujours développés
de façon égale dans la pratique, où l'accent est beaucoup plus mis sur l'aspect comportemental
et fonctionnel. Nous avons pu le constater lors de la description des méthodes et des
formalismes précédents, utilisés pour la modélisation Workflow. Quel est alors l'intérêt d'une
MME telle que ARIS pour la modélisation Workflow ?
En réalité, nous ne nous intéressons pas à l'ensemble de la méthode mais à certains de ses
aspects et de ses formalismes, qui nous semblent particulièrement bien adaptés à la
modélisation Workflow. Nous en donnons une description sommaire dans le paragaraphe
suivant.
Afin de réduire la complexité des modèles de l'entreprise, la méthode ARIS propose de les
décomposer en quatre modèles complémentaires correspondant aux quatre vues d'une
entreprise, respectivement :
1. La vue des données ("Data view"), qui représente l'ensemble des données utilisées lors de
l'exécution des activités de l'entreprise. Par donnée on comprend toute entité informatique
porteuse d'information, tel un document électronique ou une table de base de données. Un
modèle de donnée établit les liens qui existent entre les données elles-mêmes et entre elles
et des entités extérieures. Les données peuvent également être liées à des contraintes
temporelles ou autres, conditionnant leur état ou à des événements.
2. La vue des fonctions ("Function view"), décrit sous forme d'arbre la décomposition des
fonctions de l'entreprise. Les feuilles de l'arbre correspondent aux activités réalisées par
les employés.
4. La vue des Ressources ("Ressources view"). Cette dernière vue concerne l'ensemble des
ressources de l'entreprise (logicielles et matérielles) qui peuvent être affectées aux
activités, lors de l'exécution.
A l'instar des méthodes de génie logiciel, ARIS propose plusieurs niveaux de modélisation, à
la granularité de détail toujours plus fine :
58
Chapitre II : Workflow - Présentation, définitions et Concepts
Comme nous l'avons dit, la granularité du détail s'affine en fonction du niveau. A chaque
étape les vues : fonctionnelle, organisationnelle et informationnelle sont modélisées, en y
apportant au besoin un complément de précision. La vue ressource quant à elle, n'apparaît qu'à
l'étape de conception car elle concerne un niveau de détail beaucoup trop fin pour les étapes
précédentes.
Les vues de l'entreprise modélisées dans ARIS sont interconnectables deux à deux. Il est donc
facile d'établir des liens entre les vues pour obtenir une vue plus globale et complète de
l'entreprise. Cette vue existe dans ARIS et porte le nom de vue de contrôle ("Control view").
Les quatre vues : organisationnelle, fonctionnelle, informationnelle et de contrôle forment
l'architecture d'ARIS décrite par la figure – emblématique d'ARIS – présentée ci-après.
Par rapport à la modélisation Workflow, nous nous intéressons plus particulièrement à la vue
de contrôle, aux entités qui y sont représentées et à leurs formalismes. La vue de contrôle
étant la vue fédératrice des trois autres vues de l'entreprise, on y retrouve donc l'ensemble des
entités leur appartenant respectivement, ainsi que d'autres éléments supplémentaires. On
distingue ainsi :
Vue organisationnelle
Définition
des besoins
Conception
implémentation
Définition Définition
Définition
des besoins des besoins
des besoins
implémentation
implémentation implémentation
Un workflow est décrit dans la vue de contrôle par des modèles associant ces éléments de
modélisation. Ce type de modèle est appelé "diagramme d'enchaînement de processus" ou
"Process Chain Diagram". Un PCD peut être représenté de deux façons :
§ A l'aide d'un tableau réunissant les entités provenant des différents modèles de vues.
Chaque colonne du tableau correspond à un type d'entité. Trois colonnes spéciales du
59
Chapitre II : Workflow - Présentation, définitions et Concepts
Événement
2
∧
Événement
3 Système Unité B
Activité 2
logistique
SGBD Unité B
Activité 3 ∨
Véhicule Unité C
Activité 4 Donnée 2
de transport
§ A l'aide d'un diagramme en forme de graphe, qui reprend la plupart des formalismes du
PCD tableau :
Unité B
Unité A Activité 3
Événement
3 Activité 2
∧ ∨
Événement Activité 1 Activité 4
Événement
1
2 Donnée 2
Donnée 1 Unité C
Figure II.30 – Modélisation d'un workflow à l'aide d'un Process Chain Diagram de la
méthode ARIS
La méthode ARIS est une méthode qui connaît un succès assez important dans le milieu de la
modélisation d'entreprise. Certains diront que la méthode n'a rien inventé et qu'elle reprend
des concepts somme toute classiques. Ce fait est possible, d'ailleurs beaucoup des
formalismes utilisés dans les vues d'ARIS sont repris de modèles existants tel par exemple le
modèle entité / association pour la vue des données, ou la méthode CIMOSA pour
l'architecture [VERNADAT 97]. Il n'en reste pas moins que la méthode est claire, bien
structurée et que les différentes vues sont facilement intégrables les unes aux autres. En ce qui
concerne la modélisation Workflow en particulier, deux aspects nous semblent
particulièrement avantageux : d'une part les vues proposées par ARIS peuvent facilement être
"mapées" aux aspects à modéliser dans un workflow, et d'autre part, les PCD proposent des
formalismes qui concentrent toutes les entités nécessaires à la modélisation d'un workflow :
60
Chapitre II : Workflow - Présentation, définitions et Concepts
données, contrôleurs de flux, événements et rôles. Il est même possible en suivant toutes les
étapes de la méthode d'arriver à un niveau de détail très fin, séparant les rôles des ressources.
En ce qui nous concerne, nous considérons que les PCD et ARIS en général sont très
intéressants pour la modélisation Workflow.
A priori, la méthode ARIS et les PCD ne présentent pas d'inconvénients particuliers pour la
modélisation Workflow, notamment pour la modélisation à base d'activités.
Agent
Marketing
Envoyer Facture
Facture envoyée
∧ Livrer
Disponible colis
Facture
∧ Excuse
payée
Préparer Colis
colis prêt ∧ Annuler
commande
Facture
Magasinier
non
payée Agent Agent
Comptable Marketing
Figure II.31 – Modélisation d'un workflow avec les PCD de la méthode ARIS
Signalons enfin que nous n'avons rapidement présenté ici que la partie de ARIS présentant le
plus d'intérêts pour le Workflow. Il existe encore beaucoup de formalismes et d'aspects de la
méthode, que nous n'avons pas développé faute de place mais surtout parce qu'ils sont surtout
orientés vers la modélisation d'entreprise.
61
Chapitre II : Workflow - Présentation, définitions et Concepts
La notation unifiée objet UML [MULLER 98], [RATIONAL 96] est le résultat de
l'unification des principales méthodes d'analyse, de conception et de développement Objet –
ou plutôt de leurs formalismes. Trois remarques sont importantes par rapport à UML :
premièrement, UML n'est pas une méthode mais une notation proposant un large éventail de
diagrammes et d'outils. Deuxièmement, UML n'est pas une notation spécifique au Workflow
mais est une notation générale, plutôt dédiée au développement de systèmes informatiques.
Enfin troisième remarque importante, UML est une notation "ouverte", c'est à dire qu'il est
possible d'augmenter et d'adapter son métamodèle. UML nous paraît intéressante pour
plusieurs aspects que nous aurons l'occasion de détailler par la suite. Notons tous simplement
pour l'instant la richesse de ces formalismes et la flexibilité de son métamodèle.
UML propose plusieurs types de diagrammes, que l'on peut regrouper grossièrement dans
trois catégories principales :
1. Les diagrammes statiques : le premier type de diagramme d'UML permet de représenter les
entités du domaine modélisé, leurs propriétés et les relations qui les unissent. Dans cette
catégorie on distingue les diagrammes de classes (fig. II.32.a) et les diagrammes d'objets.
Les diagrammes de classes décrivent les
Classe A Classe C
relations entre classes d'objets. Selon la phase
attributs attributs
méthodes
1..1 *
méthodes
de modélisation (analyse ou conception) il est
possible d'ajouter la liste des attributs et des
fonctions des objets - appelées "méthodes",
Classe B
Classe D Classe E ainsi que d'indiquer leur visibilité par rapport
attributs
méthodes attributs attributs aux autres objets et leur type.
méthodes méthodes
: héritage / spécialisation Les diagrammes d'objets quant à eux sont des
Classe D
: composition diagrammes d'instances, c'est à dire qu'ils
attributs
méthodes : agrégation expriment les relations entre les objets et non
entre les classes des objets.
: association
2. Les diagrammes dynamiques : la dynamique du système est décrite par deux facettes : le
comportement des objets et la collaboration entre objets, que nous décrivons ci-dessous :
a) Le comportement interne des objets : Ce comportement est décrit selon deux points de
vues distincts :
§ Le premier point de vue décrit les états qu'un objet peut prendre en fonction de
l'occurrence de certains d'événements. Les diagrammes utilisés sont appelés
"diagrammes d'états / transitions" (fig. II.32.b), inspirés des "statecharts". Un
62
Chapitre II : Workflow - Présentation, définitions et Concepts
diagramme d'états / transition décrit les différents états d'un objet, depuis sa création
jusqu'à sa destruction. Chaque case marquant un état peut être détaillé. Il est ainsi
possible d'indiquer la ou les actions déclenchées lors de l'entrée de l'objet dans l'état,
les actions ou activités réalisées par l'objet Création
tant qu'il est dans cet état, ainsi que l'action
réalisée lorsqu'il le quitte.
Etat 1
Enfin, signalons qu'il est possible d'inclure [Événement b]
b) La coopération des objets entre eux : cette coopération peut être décrite par trois types de
diagrammes différents :
63
Chapitre II : Workflow - Présentation, définitions et Concepts
Les messages sont indexés chronologiquement. Il est possible de représenter des mises
en parallèle, des boucles, des comportements conditionnels et des synchronisations de
messages.
64
Chapitre II : Workflow - Présentation, définitions et Concepts
Bien que la notation UML ne soit pas spécifiquement dédiée à la modélisation Workflow, elle
n'en présente pas moins certains avantages – et des avantages certains. D'une façon générale,
nous notons trois intérêts principaux :
§ L'intégration des diagrammes UML entre eux. Cela permet de proposer plusieurs vues
totalement complémentaires d'un système, d'où une modélisation plus puissante.
Par rapport à la modélisation Workflow, nous nous intéressons plus particulièrement à trois
types de diagrammes : les diagrammes de cas d'utilisation, les diagrammes d'activités et les
diagrammes de classes. Les diagrammes de cas d'utilisation permettent de saisir rapidement
65
Chapitre II : Workflow - Présentation, définitions et Concepts
les besoins des processus modélisés en phase d'analyse. Cela est par exemple le cas pour la
méthode WIDE de modélisation de workflows [WIDE 97]. Les diagrammes de cas
d'utilisation permettent de distinguer rapidement les principaux sous-processus et rôles du
workflow.
Les diagrammes d'activités sont les diagrammes les plus intéressants et les mieux adaptés à la
modélisation Workflow. En effet, ils se prêtent très facilement à la représentation des
processus et plus particulièrement de l'ensemble des éléments des modèles Workflows à base
d'activités, respectivement : les rôles, les activités, les événements, les contrôle de flux et les
flux de données. De plus, chaque entité d'un diagramme d'activité peut être décrite en détail
par d'autres diagrammes. Par exemple on peut décrire les propriétés et le comportement des
données à l'aide de diagrammes d'états / transitions, et les relations qui existent entre les
données à l'aide de diagrammes de classes. Il en est de même pour les rôles et les acteurs
associés aux activités.
Autre avantage, UML peut être utilisé en tant que moyen de communication entre les
différents acteurs du projet Workflow – par exemple entre les analystes de processus et les
programmeurs. En effet, étant donné que la notation UML est générale et non spécifique à un
domaine particulier, elle peut être utilisée à différents niveaux du projet. Ainsi que le souligne
P. Hruby [HRUBY 98], l'avantage est donc que les différents spécialistes puissent utiliser les
mêmes formalismes ou des formalismes appartenant à la même notation, donc
compréhensibles par tous. Enfin dernier point très important à souligner qui est la base objet
d'UML et tous les avantages qui découlent des caractéristiques intrinsèques des objets, en
particulier les propriétés d'adaptation et de spécialisation. Nous reviendrons d'ailleurs plus
longuement sur la discussion de ce dernier aspect dans les prochains chapitres.
UML nous le rappelons, n'est pas initialement dédiée à la modélisation Workflow mais à la
modélisation objet de systèmes informatiques. Ce que nous proposons donc, c'est une
adaptation des outils proposés par UML à la modélisation Workflow. Il existe en fait dans la
notation UML, une réflexion et certains formalismes dédiés à la modélisation de processus.
C'est la partie intitulée "UML for business Modelling" [RATIONAL 96]. Cette partie
introduit des stéréotypes spécifiques à la modélisation de processus, tels les stéréotypes
d'acteur, d'activité ou de processus métier. Néanmoins, cette percée reste très peu développée
dans la version 1.1 d'UML et peu attirante. Cela ne nuit cependant en rien à l'intérêt des outils
proposés par UML. Il s'agit juste d'organiser une réflexion sur comment les utiliser et les
adapter à la modélisation Workflow, ce qui est le cas actuellement dans la communauté UML.
Etant donné qu'UML n'est pas une notation Workflow, il est probable qu'elle présente
certaines lacunes. Une présentation intéressante a été réalisée à ce sujet par O. Wiegert de
SAP [WIEGERT 98]. Ce dernier distingue principalement six aspects à perfectionner dans
l'application d'UML à la modélisation de processus, respectivement :
66
Chapitre II : Workflow - Présentation, définitions et Concepts
§ Permettre la mise en parallèle non contrainte des activités, c'est à dire permettre de décrire
les interactions entre activités parallèles, ce qui n'est pas explicitement mentionné par la
notation.
§ Permettre que le nombre de threads parallèles soit défini en cours d'exécution au lieu
d'être fixé par le modèle.
§ Fournir des formalismes et des opérateurs décrivant des événements, ce qui est important.
On pourrait ajouter à cela la nécessité de fournir des opérateurs de contrôle de flux plus
développés que ceux proposés par UML, tels par exemple des opérateurs logiques.
§ Etendre les capacités de représentation des flux de données dans les diagrammes
d'activités
§ Proposer des solutions organisationnelles, par exemple établir un lien explicite entre rôles
et un modèle organisationnel en UML, introduisant des concepts organisationnels tels
ceux que l'on peut retrouver dans ARIS.
67
Chapitre II : Workflow - Présentation, définitions et Concepts
L'exemple de la figure II.33.a reprend notre problème de prise en charge d'une commande
client. Nous utilisons un diagramme d'activités pour représenter le workflow correspondant.
Comme nous pouvons le constater, le diagramme suffit amplement à représenter tous les
aspects nécessaires à la modélisation d'un workflow. On peut facilement distinguer les
contrôle de flux et de données, qui se confondent lorsque les données sont consommées par
les activités suivant l'activité émettrice. Les événements sont représentés ainsi que les
mécanismes de mise en parallèle et de synchronisation. On peut toutefois regretter l'absence
d'opérateurs logiques dont la présence permettrait parfois d'augmenter la clarté du modèle. Par
ailleurs, la figure ci-dessous montre comment il est ensuite facile de lier les différentes vues
entre elles via leurs modèles, preuve qu'UML est un bon outil d'intégration.
Agent
Client Marketing
Unité
Passer Organisationnelle
commande
*
Commande Vérifier
disponibilité Service
Financier
1..1 Commande
valide
Excuse
Facturer * *
Agent Agent
Marketing Comptable
Agent
*
Comptable
Article Vue
Vue
comportementale Vue
Données
organisationnelle
68
Chapitre II : Workflow - Présentation, définitions et Concepts
4. Evolution du Workflow
Ainsi que nous l'avons mentionné au tout début de ce chapitre, le marché du Workflow a
connu une croissance spectaculaire du début jusqu'aux deux tiers des années 90, pour
connaître ensuite une réorientation des stratégies du marché. En effet, le Workflow est apparu
au moments où les besoins de gestion de processus et de travail coopératifs étaient mis en
évidence. Cette apparition a de plus coï ncidé avec les méthodes de management orientées vers
les processus, telle le BPR et la CPI dont nous avons parlé précédemment. Par conséquent le
succès du Workflow, technologie proposant des solutions aux problèmes de l'heure ne s'est
pas fait attendre. Ce succès est également du au phénomène que nous pourrions qualifier de
"mode technologique" et que P. Strassman nomme "the Joneses syndrome" - selon
l'expression anglo-saxonne consacrée [STRASSMAN 97]. Ce phénomène se traduit par le fait
que les entreprises mettent parfois en œuvre une nouvelle technologie parce que ses
concurrents l'ont fait. Cela est souvent le cas en informatique où l'on voit tous les six ou sept
mois une nouvelle technologie se présenter et connaître le plus souvent, un rapide
engouement. Cela ne va toutefois pas jusqu'à dire que le Workflow n'est qu'un phénomène de
mode, bien au contraire. Aujourd'hui, le marché du Workflow continue de croître mais d'une
façon moins exponentielle. Trois tendances sont en concurrence [ZUR MULLEN et al. 00]:
§ Les systèmes Workflows propriétaires, qui sont indépendants des autres systèmes de
l'entreprises avec lesquels ils coopèrent ou qu'ils utilisent en tant que ressources. C'est le
cas aujourd'hui du plus grand nombre des systèmes Workflow.
§ Les systèmes Workflow s'intégrant en tant que module ou moteur de gestion de processus
dans des progiciels, notamment les systèmes d'ERP (Engineering Ressource Planning) tels
69
Chapitre II : Workflow - Présentation, définitions et Concepts
le célèbre SAP, qui se situent à un niveau plus global - celui de l'entreprise en entier. C'est
la tendance la plus forte actuellement
§ Enfin, on distingue également les systèmes Workflow s'intégrant dans une suite complète
de solutions, dont un exemple est la suite MQSeries de IBM.
Outre la réorientation stratégique des systèmes Workflow au sein des entreprises, la nouvelle
génération de systèmes doit également affronter un problème de taille, celui de la flexibilité.
En effet, les avantages et points forts des systèmes Workflow sont également leurs principales
faiblesses. En effet les systèmes Workflow - notamment les systèmes orientés processus - ont
bien atteint leur objectif principal qui est de permettre de contrôler les flux de tâches et de
données, de gérer au mieux les processus. Mais ils ont également figé les entreprises dans des
cadres et des modèles trop rigides où toute modification est coûteuse en temps et par
conséquent en argent. Par suite, l'une des priorités des nouveaux systèmes Workflow réside
dans la mise en œuvre de solutions flexibles, permettant aux modèles d'absorber les incidents
et d'évoluer plus facilement pour s'adapter aux besoins de changements extérieurs. Ces
aspects de flexibilité et de nouvelle orientation du Workflow sont la base du chapitre suivant,
où ils sont présentés, décrits et commentés.
Bibliographie
[ACTION 99] Action Technologies. "Introducing ActionWorkflow Methodology
overview and Implementation guidelines". 1999. [Link]
[THUILLIER et al. 98] F. Thuillier, G. Saccone, "Workflow SI et Objets métiers". Présentation à la
réunion du groupe de travail sur la Conception Orienté Objet des Systèmes
d'Information. 27 mai 1998.
[ALONSO et al. 97a] G. Alonso, C. Hagen. 'Geo-Opera: Workflow Concepts for Spatial
Processes". Proc. 5th Intl. Symposium on Spatial Databases
(SSD '97), Berlin, Germany. Juin 1997.
[ALONSO et al. 97b] G. Alonso, C. Mohan, "Workflow Management Systems: The Next
Generation Of Distributed Processing Tools". In "Advanced Transaction
Models and Architectures", S. Jajodia and L. Kerschberg (Eds.), Kluwer
Academic Publishers, 1997, pp. 35--62.
[ANAXAGORAS 94] ANAXAGORAS B.P. Innovations. "Trigger Modelling for Workflow
Analysis". [Link] 1994.
[BANNON 90] L.J. Bannon. 'Pilgrim's Progress: From Cognitive Science to Cooperative
Design". AI & Society, 4,4, Fall Issue. 1990. pp. 259-275
[BARESI et al. 99] L. Baresi, F. Casati, S. Castano, S. Ceri, M.G. Fugini, I. Mirbel, B. Pernici.,
G. Pozzi. "WIDE Workflow Development Methodology". Report n°3027-6.
ESPRIT Project 20280. 3 Mars 1999.
[BARTHELMESS et al. 95] P. Barthelmess, J. Wainer, "Workflow Modeling". CYTED-RITOS
International Workshop on Groupware", Lisbon, Portugal, Septembre 1995.
[BERRY 98] P. Berry. "Intelligent Workflow – State of the Art in Workflow".
[Link] 1998.
[BRAMS 83] G.W. Brams. " Réseaux de Petri : Théorie et Pratique". Ed. MASSON.
1983.
[CASATI 96] F. Casati, S. Ceri, B. Pernici, G. Pozzi. 'Deriving Active Rules
for Workflow Enactment". DEXA Database and Expert
Systems Applications. Zurich, Suisse. 9-13 Septembre 1996.
[CHAT 98] CHAT. "CHAT - Theoritical framework – Cultural – Historical Activity
Theory". Center for Activity Theroy and Developmental Work Research.
Univeristy of Helsinki. [Link] 1998.
[COURTOIS 96] [Link], "Logiciels & Systèmes N°11", p. 46. Septembre-Octobre 1996.
[DUPOIRIER 94] G. Dupoirier. "Technologie de la GED : l'édition électronique". Hermes.
1994.
70
Chapitre II : Workflow - Présentation, définitions et Concepts
[EDER et al. 96] J. Eder, H. Groiss, W. Liebhart. "Workflow Management and Databases".
2eme Forum International d'Informatique Appliquée, Tunis, Mars 1996.
[EDER et al. 98] J. Eder, W. Liebhart. "Contributions to Exception Handling in Workflow
Management". Proc. EDBT Workshop on Workflow Management Systems,
Valencia, 1998, pp 3-10
[FRYER 94] C. Fryer. "Move to workflow Provokes Business Process Scrutiny".
Software Magazine. Avril 1994.
[GEORGAKOPOULOS et al. 95] D. Georgakopoulos, M. Hornick, A. Sheth, "An Overview of Workflow
Management : From Process Modeling to Workflow Automation
Infrastructure", Distributed and Parallel Databases, An International Journal,
3, 1995.
[GUIMARAES et al. 95] N. Guimarães, A.P. Pereira. "Workflow Modeling, Automation,
Augmentation – Enlighting experiences in the ORCHESTRA project". NSF
Workshop on Workflow & Process Automation in Information systems,
State of the Art and Future Directions. Athen
[HRUBY 98] P. HRUBY, Specification of Workflow Management Systems with UML,
OOPSLA 98: Workshop on Object Oriented WMS, 1998.
[INCONCERT 97] InConcert. "InConcert Specifications Document".
[Link] 1997.
[IDEF0 93] IDEF0. "Integration Definition For Process Modeling". Draft federal
Information Processing Standard Publications I83. 23 Décembre 1993.
([Link]
[JABLONSKI et al. 94] S. Jablonski, C. Bussler, "Process Modeling and Execution in Workflow
Management Systems". Proc. of the 3rd International Workshop on
Information Technologies and Systems, Orlando, FL, Décembre 1993.
[JOOSTEN 94] S. Joosten, "Trigger modelling for workflow analysis ". CON’94 : Workflow
Management, pp. 236-247,publ : R. Oldenbourg, Vienna, München, 1994.
[JOOSTEN et al. 95] [Link], S. Brinkkemper, "Fundamental Concepts for Workflow
Automation in Practice", ICIS’95 conference, Amsterdam, Décembre 1995.
[KOULOPOULOS 98] T. Koulopoulos. "Workflow Reference Market Point 97".
[Link] 1998.
[MARSHAK 95] R. Marshak, "Rethinking workflow part I & II". [Link]
[Link]/alunos/dti/wdl/workflow/[Link]. 1995.
[MAYER et al. 95] J. Mayer, [Link], [Link], [Link]. "A Framework and a
Suite of Methods for Business Process Reengineering", Part one.
[Link] 1995.
[McCREADY 93] S. McReady. "There is more than one kind of workflow software".
Computerworld. 2 Novembre 1992.
[MULLER 98] P.A. Muller, "Modélisation Object avec UML". Eyrolles. 1998
[NURCAN 96] S. Nurcan, "Analyse et conception de systèmes d'information coopératifs".
Techniques et science informatiques, Vol. 15, n°9, pp. 1287 – 1315. 1996.
[REENSKAUG 95] T. Reenskaug. "Working With Objects. The OORAM Software Engineering
Method" . Manning/Prentice Hall. 1995.
[PELLETIER 98] F. Pelletier. Introduction à la GEIDE. MOS Magazine. ARCA Editions.
1998.
[RATIONAL 96] Rational Software Corporation. "UML Resource Center, Unified Modeling
Language, Standard Software Notation V. 1.3". 1996.
[RATIONAL 97b] Rational Software Corporation. "UML Extension for Business Modeling
version 1.1". 1997.
[RYDER 98] M. Ryder. "Spinning Web of Significance, Considering Anonymous
Communities". 4th Congress of the International Society for Cultural
Research And Activity Therory. Aarhus University, Aarhus, Denmark. 7-11
Juin 1998.
[SCHAEL 97] Thomas Schaël. Théorie et Pratique du Workflow. Springer-Verlag. 1997.
[SCHEER et al. 97] A.W SCHEER, R. ROBOWSKY, S. KALBUNDE, A. TAUT, Flexible
industrial applications through model based workflows, Proc. Of the
International conference on Enterprise Integration and Modeling
Technology. Torino, Italy. 1997.
[SCHEER 98] A.W. SCHEER, Business Process Engineering, Springer 1998
[STARK 98] [Link], "Introduction to Engineering Workflow ".
71
Chapitre II : Workflow - Présentation, définitions et Concepts
[Link] 1998
[STRASSMAN 97] P. STRASSMAN, "Has Business Squandered The IT Payoff ? ", Computer
Finance, Issue Number :8.01, Janvier 1997.
[TARDIEU et al. 85] Tardieu, Rochfeld. "Méthode MERISE, démarche et pratique". Tome 2.
Editions D'Organisation. 1985.
[VAN DER AALST et al. 99] W. Van der Aalst, D. Moldt, R. Valk, [Link]. "Enacting
Interorganizational Workflow Using Nets in Nets". Workflow Management
'99, Conference on Workflow Based Applications. University of Muenster,
Germany. 9 Novembre 1999.
[VERNADAT 96] F. Vernadat. "Enterprise Modeling and Integration – Principles and
Applications". Chapman & Hall, 1996.
[VERNADAT 98] F. Vernadat. "Enterprise Integration Issues--An application viewpoint";
ICEIMT'97 International Conference on Enterprise Integration Modeling
Technology. 1997 28/30 Octore, Torino, Italy. 1997.
[WAINER et al. 95] J. Wainer, M. Weske, G. Vossen, C. Medeiros. "Scientific workflow
systems". NSF Workshop on Workflow and Process Automation, USA.
1996
[WfMC 95] WfMC. "The Workflow Management Coalition specifications".
[Link] 1994.
[WfMC 99] Workflow Management Coalition. "Terminologie et Glossaire Workflow".
v. 2.0 Fev. 1999. ([Link]
[WIEGERT 98] O. WIEGERT. "Business Process Modeling & Workflow Definition with
UML". [Link]
[WIDE 97] WIDE. "The WIDE Workflow model and Language". Report n°4080-2.
ESPRIT Project 20280. 31 Octobre 1997.
[WINOGRAD 87] T. Winograd. "A language/action perspective on the design of cooperative
work," Human-Computer Interaction 3:1. 19987. pp. 3-30.
[WINOGRAD 90] T. Winograd. "What can we teach about Human-computer interaction?"
Proc. of the CHI90 Conference on Human Factors in Computing, Seattle,
Avril 1990. pp. 443- 449.
[ZUR MULLEN et al. 00] M. zur Mühlen, R. Allen, "Autonomous and Embedded Workflow. A
Workflow Management Coalition Classification". Workflow Management
Coalition White Paper, Lighthouse Point (FL), USA. 2000.
72
Chapitre 3 : Workflow et Systèmes Workflows avancés
Chapitre III
Workflow et Systèmes Workflows avancés
§ La volonté qu'ont certaines entreprises de gérer plus que les processus métiers. Ce
besoin fait que les systèmes Workflows "de la première génération", notamment les
systèmes propriétaires - majoritaires sur le marché - ne sont pas vraiment en
adéquation avec les attentes de ces entreprises. Ce fait s'exprime clairement par les
nouvelles orientations du marché dont nous avons parlé précédemment.
73
Chapitre 3 : Workflow et Systèmes Workflows avancés
1. Les évolutions technologiques : ces évolutions, tant au niveau matériel que logiciel,
apportent des améliorations significatives et des solutions nouvelles, dont doivent tirer
profit les entreprises, ou rendent obsolètes leurs équipements, qui doivent être mis à jour.
Cette opération nécessite d'adapter les processus existants et de construire de nouvelles
interfaces, utilisateurs et matériels.
3. Les besoins des clients : les entreprises veillent constamment à satisfaire aux attentes du
marché, aux exigences des clients en termes de qualité, de prix et de fonctionnalités. Par
conséquent, l'évolution de ces contraintes a une incidence directe sur les processus
métiers des entreprises, qui doivent sans cesse être améliorés.
A ces cinq principales sources de modifications des processus, il est possible d'en rajouter
d'autres, relevées par [OUKSEL et al. 98] :
74
Chapitre 3 : Workflow et Systèmes Workflows avancés
8. Les conflits : les systèmes Workflows sont le plus souvent conçus sur l'idée qu'il existe un
certain consensus entre les utilisateurs des systèmes, régissant leur comportement et
éliminant les conflits qui pourraient se créer entre eux. Cela est cependant loin d'être le
cas et il arrive bien sûr que des conflits d'origines diverses (sociales, techniques ou
personnelles) freinent le bon déroulement des workflows. Il est par conséquent nécessaire
de pouvoir prendre en compte et traiter ces conflits lorsqu'ils surviennent.
Comme nous l'avons dit précédemment, les systèmes Workflow sont théoriquement les outils
de référence de la mise en œuvre de l'amélioration des processus, du support de leur
automatisation et plus globalement, de la flexibilité des entreprises. Or en examinant les
systèmes Workflow positionnés sur le marché avant la fin des années 90 – ceux que l'on
pourrait qualifier de "première génération" - on constate qu'ils ne supportent en réalité qu'une
partie des exigences : celle qui concerne la gestion et l'exécution des processus modélisés.
Côté adaptabilité, flexibilité et support des modifications, les mécanismes sont assez
rudimentaires [EDMOND et al. 98]. La raison de cette carence est autant due aux bases
technologiques que méthodologiques du Workflow. En effet, les systèmes Workflows sont
construits sur des bases technologiques qui en font des produits finis, orientés vers la prise en
charge de scénarios prédéfinis ne leur permettant pas de prendre en compte les changements
[OUKSEL et al. 98]. De plus, les systèmes Workflows et plus particulièrement ceux dits
orientés processus et documents, utilisent une modélisation précise et bien structurée des
processus à exécuter. Or ce type de modélisation est justement une arme à double tranchant.
En effet, la modélisation bien structurée permet de déterminer, de définir et décrire l'ensemble
des éléments intervenants dans un workflow. L'avantage est donc bien évidemment de
pouvoir assurer un environnement d'exécution théoriquement stable et fiable, un suivi
rigoureux ainsi qu'une bonne coordination des acteurs, grâce à la modélisation précise du flux
des activités. C'est d'ailleurs sur ces aspects là que les systèmes Workflows ont démontré leurs
capacités et leur intérêt. D'un autre côté cependant, la situation est moins optimiste. En effet,
il est évident qu'il n'est pas possible de prendre en compte dans un modèle Workflow,
l'ensemble des éventualités pouvant se présenter. Cela n'est d'ailleurs pas souhaitable à la
limite, pour des raisons de clarté et de lisibilité du modèle [HORN et al. 98], [REICHERT et
al. 98] ainsi que de temps du déploiement de l'application Workflow [DEITERS et al. 98].
Un modèle workflow ne représente donc en général que les situations les plus plausibles et ne
peut prendre en compte toutes les alternatives ou les situations exceptionnelles. Par ailleurs,
certaines parties du modèle ne peuvent être connues en détail que lors de l'exécution – pour
des raisons déjà citées d'incertitude et d'incomplétude de l'information. Par conséquent, les
modèles workflows risquent parfois de ne plus correspondre à la réalité ou de ne pas pouvoir
absorber les événements imprévus qui ont lieu.
75
Chapitre 3 : Workflow et Systèmes Workflows avancés
L'un des principaux problèmes des systèmes Workflow est donc, comme nous allons le voir
plus en détail, celui de la flexibilité : les modèles, aussi bien que les systèmes, ne sont pas
suffisamment flexibles, ni pour permettre de réagir aux perturbations, ni pour permettre aux
modèles d'évoluer. Il s'agit toutefois de rester objectif. En effet, selon [SHETH 97], les
systèmes Workflows actuels permettent de prendre en charge 70 à 80% des processus pour
lesquels ils sont utilisés – chiffre qu'il faut malgré tout prendre avec précaution. Néanmoins, il
est vrai que pour des entreprises dont l'environnement est plus ou moins stable,
l'automatisation des processus reste la priorité alors que la flexibilité est secondaire. C'est
notamment le cas des organisations qui utilisent des systèmes Workflows dits administratifs.
De plus, dans un bon nombre de cas, une modélisation bien étudiée, basée sur des
formalismes puissants, permet souvent d'éviter les modifications fréquentes ou trop
importantes.
La flexibilité n'en reste pas moins une caractéristique essentielle à retrouver dans les systèmes
Workflow de la "nouvelle génération" ou des systèmes Workflows "avancés" [HORN et al.
98], [BOLCER et al. 96]. Les paragraphes suivants s'attachent à mieux définir ce qu'est la
flexibilité par rapport au Workflow, quels sont les besoins à satisfaire par ces systèmes et que
sont les systèmes Workflows avancés.
Comme nous l'avons vu, le Workflow ne recouvre pas un mais plusieurs domaines et aspects,
qui sont les processus, les données et l'organisation. Par conséquent, les contraintes de
flexibilité du Workflow ne s'appliquent pas à un seul domaine mais à la combinaison des
trois. Il s'agit donc d'une part d'absorber tous les événements pouvant inquiéter la cohérence et
l'intégrité des données mais également de conserver la cohérence du déroulement du
processus en toute circonstance, ainsi que d'intégrer les modifications qui peuvent avoir lieu
dans l'organisation de l'entreprise. Dans la pratique, on constate cependant que la flexibilité du
Workflow se reflète principalement au niveau des processus, bien qu'elle implique et s'appuie
également sur les deux autres niveaux – données et organisation.
[WESKE et al. 96] définissent la flexibilité du Workflow comme étant la capacité de pouvoir
changer la définition d'un workflow en cours d'exécution ainsi que celle de réutiliser les
modèles pour la conception d'autres workflows. Plus globalement, nous pouvons dire que la
flexibilité du Workflow se définit par, et s'applique à deux niveaux complémentaires :
76
Chapitre 3 : Workflow et Systèmes Workflows avancés
§ Il est évolutif, c'est à dire que lui ou les entités qui le composent peuvent être modifiés,
sans remettre en cause l'intégralité et la cohérence globale du modèle. En particulier
nous nous intéressons à une faculté primordiale : l'adaptabilité des modèles. Bien que
nous revenions plus longuement sur l'adaptabilité dans la suite de ce chapitre, il est
intéressant de donner ici quelques définitions. L'adaptabilité d'un modèle est sa
capacité à intégrer des situations nouvelles. Cette intégration (qui peut aboutir à une
restructuration du modèle) peut être faite par le modèle lui-même, qui est qualifié dans
ce cas "d'auto-adaptable" ou "d'adaptatif". Si l'adaptation est possible mais qu'elle est
réalisée par l'intermédiaire d'une intervention extérieure, on dit que le modèle est
"adaptable".
§ Il est réutilisable, c'est à dire que l'on peut s'en servir comme base pour la construction
d'autres modèles ou que l'on peut réutiliser certains de ses composants.
77
Chapitre 3 : Workflow et Systèmes Workflows avancés
Pour [BOLCER et al. 96], le Workflow avancé est un amalgame regroupant les connaissances
et le savoir-faire de plusieurs disciplines, telles le groupware, les systèmes de gestion de
l'information, la gestion de processus, la gestion de projet et bien entendu, le Workflow
"traditionnel". Plus exactement, le Workflow avancé propose d'apporter des solutions et des
améliorations aux principales faiblesses des systèmes Workflow traditionnels. Remarquons
que le concept de Workflow avancé n'est pas une remise en question des acquis – une sorte de
BPR du Workflow – mais naît de la conclusion que le Workflow n'a pas atteint tous les
objectifs fixés au départ et qu'il est possible pour y arriver, de tirer profit des technologies et
disciplines connexes. Ce fait est également souligné par d'autres chercheurs dont A. Shet
[SHETH 97] qui déplore que toutes les avancées technologiques dans les diverses disciplines
de l'informatique (gestion de l'information, gestion des transactions, gestion de la coopération,
applications d'intégration des systèmes hétérogènes et distants, etc..) n'aient pas été réunies et
exploitées autour d'un même objectif - l'amélioration des performances des systèmes
Workflows. Pour A. Sheth, ceux-ci devraient évoluer vers un nouveau type qu'il nomme
"systèmes de collaboration et coordination du travail" ("Work coordination and collaboration
systems – WCCSs"). Plusieurs travaux ont défini les principales fonctionnalités et
caractéristiques que devraient présenter ces systèmes – dont celles des systèmes Workflows
avancés. Nous en proposons une synthèse dans ce qui suit, en ne retenant que les
fonctionnalités les plus importantes :
1. Support des processus dynamiques, c'est à dire permettre de gérer et d'exécuter deux
types de processus : ceux qui sont peu structurés et ceux à la structure instable, donc
pouvant changer sous l'influence d'événements remettant en cause leur adéquation. Le
support des processus dynamiques recouvre plusieurs aspects :
78
Chapitre 3 : Workflow et Systèmes Workflows avancés
directement cette possibilité au sein des systèmes Workflows, donc sans avoir recours
à des systèmes auxiliaires. Le deuxième cas de modélisation ad-hoc concerne la
"modélisation tardive" ("late modelling"), encore appelée "dynamic refinement". En
effet, il arrive qu'en phase de modélisation il ne soit pas possible de déterminer
explicitement une partie d'un processus. La partie manquante pourrait alors être
remplacée par une ou plusieurs entités génériques qui seront détaillées lors de
l'exécution.
2. Fournir un support robuste des transactions, en d'autres termes, assurer que les
transactions sont réalisées en intégralité ou être capable de faire face à tout problème
pouvant remettre en cause leur intégrité. C'est principalement le problème soulevé par la
gestion des exceptions sur lequel nous reviendrons plus en détail dans la suite de ce
chapitre.
79
Chapitre 3 : Workflow et Systèmes Workflows avancés
depuis n'importe quel navigateur Web. Cette page sert d'intermédiaire entre le système
Workflow et l'utilisateur. Elle présente en général les mêmes fonctionnalités que
l'application utilisateur cliente du système. L'accès aux systèmes informatiques via le
Web est un des facteurs principaux de la flexibilité du Workflow puisqu'elle permet aux
utilisateurs – Humains – de s'impliquer dans un workflow sans contraintes
technologiques dues au système sous-jacent. Cette fonctionnalité est d'ailleurs une des
premières à avoir été mise en œuvre par les vendeurs de systèmes Workflow.
Les fonctionnalités présentées ci-dessus donnent une vue globale de ce que devraient être les
systèmes Workflow avancés, en fait ceux d'aujourd'hui. Dans les parties suivantes, nous
allons plus particulièrement nous concentrer sur les deux caractéristiques primordiales de la
flexibilité du Workflow : la gestion des exceptions (support robuste des transactions) et
l'adaptabilité (support des processus dynamiques).
80
Chapitre 3 : Workflow et Systèmes Workflows avancés
Ces définitions sont adaptées et généralisées dans le domaine du Workflow où une exception
peut être définie comme étant une déviation du comportement du système par rapport à son
comportement normal [CASATI 98] ou encore, comme un besoin apparu dans un cas
Workflow (l’instance d’un workflow) et qui ne peut être satisfait à partir du modèle initial
duquel le cas est instancié [DEITERS et al. 98]. Plusieurs définitions complémentaires d’une
exception coexistent dans la littérature Workflow mais on considère globalement qu’une
exception est un événement à faible probabilité d’occurrence, ayant un effet perturbateur
empêchant le déroulement d’un processus tel qu’il a été défini au préalable.
Dans le cas proactif, deux comportements sont possibles. Dans le premier, le système évalue
le déroulement du processus et lance une procédure de gestion d'exception s'il prévoit un
comportement anormal. En fait, il n'est pas tout à fait exact de parler de proactivité dans ce
81
Chapitre 3 : Workflow et Systèmes Workflows avancés
cas, puisque par définition, un système proactif anticipe les problèmes et permet de redéfinir
le processus "normal" en fonction. Dans le cas d'une exception, le processus résultant n'est pas
un processus normal mais un processus de prise en charge d'exception. Le deuxième
comportement proactif possible consiste à détecter la possibilité d'un dysfonctionnement, puis
à redéfinir la suite du processus en fonction de cet événement. Cela nécessite cependant le
support des processus dynamiques et reste assez coûteux en temps. Cette méthode est donc
très rare dans les systèmes Workflows existants.
Afin de faciliter la prise en charge des exceptions, il est intéressant d'en établir une
classification. Une des premières contributions sur la classification des exceptions en
Workflow a été proposée par [EDER et al. 95]. Elle répartit les exceptions en quatre
catégories se recouvrant partiellement. La raison de ce recouvrement provient du fait que les
classes se basent sur des critères différents : l'origine de l'exception pour les deux premières
classes, alors que les deux dernières se fondent sur sa prédictibilité. Nous proposons donc de
les décrire en premier lieu, puis de proposer ensuite une autre classification plus cohérente.
La classification proposée par Eder et Liebhart distingue les quatre niveaux suivants :
1. Les échecs de base correspondent à des pannes, des erreurs ou des dysfonctionnements du
matériel ou des systèmes informatiques sous-jacents au Système Workflow. La catégorie
des systèmes informatiques englobe en particulier le système d'exploitation ou le SGBD
qui gère les instances des workflows. Dans la catégorie du matériel informatique, on
retrouve principalement les réseaux et tout le matériel utilisé par les machines sur
lesquelles tourne le système Workflow. Par conséquent, il est possible de répartir les
exceptions de base en deux sous-catégories, les exceptions systèmes et les exceptions
matérielles. Un échec de base doit en principe être pris en charge par le système ou le
matériel sous-jacent. Par exemple les SGBD fournissent plusieurs fonctionnalités leur
permettant de faire face à des problèmes de sécurité ou d'interruption des transactions. En
général, un échec de base n'est donc pas explicitement pris en compte dans le workflow,
sauf dans le cas où il pourrait empêcher la réalisation d'une de ses activités.
82
Chapitre 3 : Workflow et Systèmes Workflows avancés
3. Les exceptions prévues définissent l'ensemble de toutes les exceptions qu’il est possible de
prévoir ou qui sont identifiées pendant la phase de modélisation. Il est alors éventuellement
possible de leur associer un traitement approprié et d’éviter une interruption de la
réalisation du processus en cours. Les avis sont partagés quant à la représentation des
exceptions prévues et de leur traitement. Pour certains, les exceptions prévues et la
description de leur traitement, sont intégrés au modèle du processus. En d'autres termes, le
modèle doit représenter l'ensemble des exceptions prévues ainsi que les sous-processus de
prise en charge. Ceux-ci font donc partie intégrante de la description du flux des activités
dans le workflow. Pour d’autres spécialistes tel [PURDON et al. 95], la modélisation des
exceptions d’un processus fait l’objet d’une modélisation et d’une prise en charge à part,
quoique directement référencée par le modèle du processus.
Nous illustrons ces deux points de vue respectifs dans les figures III.1.a et III.1.b. Les
tâches qui y sont représentées font partie d'un processus de recyclage automatique de
composants de produits usagés. Un composant donné doit être extrait de chaque produit
soumis à l'automate chargé du démontage. Ce dernier est normalement équipé d'une
gamme d'outils lui permettant de traiter sans problème ce type de produit. Or il se peut que
sur l'un des appareils démontés, un changement de pièce - effectué par exemple lors d'une
réparation - fait que l'outillage de l'automate n'est plus adapté et l'extraction impossible : il
s'agit donc d'une exception. La figure III.1 représente la modélisation du processus de
gestion de l'exception à l'intérieur du processus initial, alors que dans la figure III.2, ce
processus n'est que référencé.
Composant Arrivée d’un produit
Arrivée d’un extrait Stocker
produit Extraire
composant exception : outils
non adaptés
Extraire Exception :
composant outils non adaptés
Composant
extrait Composant extrait
Extraction Annuler
manuelle Récupération
stocker
impossible
sans destruction
Pour F. CASATI [CASATI 98], les exceptions prévues sont des événements qui font
dévier la réalisation du processus vers des alternatives établies lors de la modélisation mais
qui ne correspondent pas aux chemins pris lors du déroulement "normal" du processus. Il
donne l'exemple d'un processus de réservation dans une agence de voyage, où l'annulation
de la réservation entraînant la fin du processus correspondrait pour lui à une exception
prévue. En effet, dans le déroulement normal, le processus doit se terminer par la livraison
des réservations, billets, etc.
83
Chapitre 3 : Workflow et Systèmes Workflows avancés
§ Les exceptions qu’on ne peut associer qu’à un type générique d’événements car
elles ne peuvent être complètement définies avant d’avoir eu lieu. Par exemple le
type d’événements "erreur système" est générique, tandis que l’événement
"programme ne répond pas" en est une instance spécifique.
4. Les exceptions imprévues sont des événements qui ne font pas partie ou ne sont pas
initialement associés au modèle d’un processus car ils n'apparaissent qu’en cours
d’exécution. Selon F. Casati, ils correspondent à des inconsistances entre le processus
opérationnel et le monde réel. Dans un modèle de workflow, une exception peut être
imprévue pour plusieurs raisons :
Il est intéressant d'apporter ici une nuance entre une exception imprévue et une exception
non identifiée au préalable (ou inconnue). Une exception est imprévue par rapport au
modèle du workflow dans lequel elle n'est pas prise en compte. Cela ne l'empêche pas
d'être éventuellement connue des concepteurs du workflows qui auraient jugé non
nécessaire de la reporter sur le modèle. A l'opposé, une exception non identifiée au
préalable est un fait dont l'existence était inconnue des concepteurs avant son occurrence.
Par exemple, lors du processus de fabrication d'un médicament, ce dernier peut avoir un
effet secondaire insoupçonné avant sa déclaration sur un "cobaye", ce qui peut remettre en
cause l'avancée du processus. La nuance entre exception inconnue et exception imprévue
entre en compte dans le déclenchement des procédures de prise en charge "manuelle",
comme nous aurons l'occasion de le voir plus tard.
84
Chapitre 3 : Workflow et Systèmes Workflows avancés
Les problèmes posés par les exceptions imprévues sont bien évidemment plus délicats à traiter
que dans le cas où elles sont prévues. En effet, il n'est pas possible d'en connaître le moment
ni la localisation d'occurrence. Nous verrons dans la suite de ce chapitre quelles sont les
méthodes les plus courantes pour prendre en charge ce type d'exceptions. Enfin, notons que la
classification proposée ci-dessus est acceptée et reconnue par une grande partie des
spécialistes du Workflow. Bien sûr, elle reste à un niveau assez général et il est toujours
possible et même souhaitable, d'établir de nouvelles classifications, de les diversifier ou plus
simplement, de spécialiser les quatre classes d'exceptions précédentes.
La classification proposée dans le paragraphe précédent est intéressante mais ne nous satisfait
pas pleinement, pour deux raisons principales :
§ La première, comme nous l'avons mentionné, est due au fait que les classes décrites se
recouvrent partiellement. Au lieu de distinguer quatre classes, il nous semble qu'il aurait
mieux valu avoir deux classifications différentes : l'une contenant les échecs de base et
d'applications, l'autre plus englobante, composée des exceptions prévues et imprévues.
§ La deuxième raison est que cette classification ne permet pas de créer des types (des
catégories) des gestionnaires suffisamment adaptés, car les classes ne sont pas assez
spécifiques.
Nous proposons donc une autre classification, basée sur une re-formulation de la classification
précédente, et dans laquelle nous distinguons quatre classes au niveau d'abstraction croissant :
1. Le niveau matériel : c'est le premier niveau d'abstraction, que nous avions déjà distingué
dans la classe des "échecs de bases". Il concerne les pannes dues au matériel utilisé par le
système Workflow ou par les systèmes avec lesquels il collabore ou encore ceux qu'il
utilise. Les types d'exceptions concernés par ce niveau vont du dysfonctionnement
physique d'un matériel (disque crashé, composant électronique grillé, etc.), au blocage
d'un réseau ou d'une ressource.
2. Le niveau système : les exceptions systèmes sont des exceptions logicielles, générées soit
par des exceptions du niveau matériel, soit par un dysfonctionnement interne des modules
du système en question. On distingue respectivement deux sous niveaux d'exceptions
systèmes : le "bas niveau", qui concerne essentiellement le système d'exploitation des
machines sur lequel tournent le système Workflow et les applications connexes. Le "haut
niveau" concerne les exceptions définies au niveau du fonctionnement du système
Workflow et des applications. Les exceptions systèmes sont normalement prises en charge
par les systèmes concernés.
85
Chapitre 3 : Workflow et Systèmes Workflows avancés
4. Le niveau Workflow. Jusqu'à présent, les trois niveaux précédents correspondent à une re-
formulation de la classification proposée par Eder et Liebhart. Il est cependant possible de
leur ajouter un quatrième niveau, qui concerne les "exceptions Workflows" [CASATI 96],
encore appelées "exceptions sémantiques" [HAGEN et al. 98], car elles sont
sémantiquement liées à la définition du processus, c'est à dire qu'elles font partie du
contexte de l'affaire traitée et peuvent aboutir à l'échec du processus et/ou remettre en
cause le modèle établi. Nous distinguons deux sous-niveaux d'exceptions Workflow :
Après ce tour d'horizon des classifications possibles des exceptions, nous allons à présent
nous intéresser aux moyens qui sont proposés et mis en œuvre dans le domaine Workflow
pour détecter et réagir aux exceptions.
La gestion des exceptions est en fait un terme générique regroupant deux phases principales
(en plus de la phase de déclaration de l'exception). La première phase consiste en la détection
des exceptions (le signalement) et le routage du processus vers des mécanismes de prise en
charge ou de traitement qui forment la deuxième phase. Celle-ci concerne le traitement des
exceptions proprement dit, c'est à dire l'application de méthodes permettant de résoudre le
problème lié à l'exception.
Nous apportons ici une distinction entre les mécanismes mis en œuvre lors de l'occurrence
d'une exception, et les méthodes de gestion d'exception. Globalement, on pourrait définir les
mécanismes comme étant des techniques permettant de traiter tout ou une partie des
problèmes engendrés par une exception. Les méthodes quant à elles définissent une approche
plus ou moins originale, composée de règles structurant l'utilisation d'un ensemble de
mécanismes (fig. III.2). Ces règles peuvent être exprimées de diverses façons, en particulier
sous la forme d'algorithmes.
86
Chapitre 3 : Workflow et Systèmes Workflows avancés
2 Méthode 1
Compensation
Contingence 3
Forward recovery
Annulation 2
Méthode 2
Nouvel Essai 1
...
Mécanismes Méthodes
S’il est primordial de traiter les exceptions, il n’en est pas moins important de pouvoir d'abord
les détecter. L’habileté du système à détecter une exception et/ou les moyens qu’il offre pour
les signaler reste une garantie du bon déroulement du processus. Dans le domaine du
Workflow, on distingue principalement deux modes et trois approches principales de
détection.
Modes de détection
§ La détection asynchrone est réalisée grâce à l’évaluation des résultats des tâches et
l’application de prédicats sur les données internes du workflow : elle n'est donc pas
faite en temps réel. La détection synchrone est en général réactive mais il est
envisageable de l'utiliser d'une façon proactive, pour prévoir l'occurrence d'exceptions
et les éviter. Par exemple, supposons qu'on utilise un système Workflow pour gérer un
atelier de désassemblage. Chaque cellule de l'atelier est assignée à des tâches par le
workflow et doit rendre compte de son état d'avancement. Si grâce à ce retour
d'information le système détecte un ralentissement au niveau de certaines cellules, il
peut "prévoir" un problème dans l'atelier et décider a priori d'une modification des
paramètres du processus - par exemple augmenter la capacité des files d'attentes - et
éviter le problème. Dans la réalité, il est plus vraisemblable que la tâche d'analyse et de
prévision soit affectée à un module d'ordonnancement ou un système de gestion de
production auquel serait couplé le système Workflow. Ce dernier joue alors le rôle
d'interface entre le système d'analyse auquel il fait remonter un ensemble
d'informations issues de l'atelier.
87
Chapitre 3 : Workflow et Systèmes Workflows avancés
Méthodes de détection
1. La détection "manuelle"
2. Les gestionnaires d'exceptions
3. Les déclencheurs ou règles
2. Le gestionnaire d'exceptions est une approche très intéressante et assez répandue, inspirée
des langages de programmation. Le principe de base est le même que pour les langages
traitants les exceptions, tels Eiffel, C++, Java, Smalltalk, Ada, etc. Chaque tâche d'un
workflow peut être associée à des exceptions prises en charge par un gestionnaire. Chaque
exception correspond en fait à un signal émis par la tâche - ou par son réalisateur - vers le
ou les gestionnaires appropriés (fig. III.3).
88
Chapitre 3 : Workflow et Systèmes Workflows avancés
Branchement
non
exceptionnel
( contrôleur
de flux )
BD Workflow
L'approche proposée par [PURDON et al. 95] est très intéressante et constitue la base d'autres
méthodes fondées sur le même principe. Elle souffre toutefois de deux inconvénients :
§ En premier lieu, nous y avions fait illusion auparavant, le fait de passer la main d'un
workflow à un autre nécessite de bons mécanismes de synchronisation et de
communication entre les deux. Le problème est accentué si le workflow "exceptionnel" est
exécuté sur un autre système que celui où le workflow initial a lieu, en particulier si cet
autre système est ad hoc, donc non structuré. Il convient alors de définir des points de
rencontre entre les différents workflows.
§ Le deuxième problème qui est soulevé par les auteurs eux-mêmes est celui de l'aspect
statique de l'arborescence des signaux. En effet, tout changement dans la stratégie de
détection ou de prise en charge se répercute au niveau de la hiérarchie des signaux, de la
définition du processus et même parfois des applications clientes. De plus, la détection et
l'identification de nouvelles exceptions requiert l'insertion de nouvelles catégories ou de
nouveaux nœuds dans l'arbre. Il est par la suite nécessaire d'établir une mise à jour
continue de l'arborescence et des applications clientes qui y font référence. Ce problème
d'importance a suscité la recherche et la conception de différentes solutions. Nous y
revenons à la fin de ce paragraphe consacré aux méthodes de détection des exceptions.
D'autres approches fondées sur les gestionnaires d'exceptions existent. Nous nous intéressons
notamment à celle proposée dans le système OPERA [ALONSO et al. 97],[HAGEN et al. 98].
Le principe de base y est le même que dans le cas précédent : les exceptions sont levées par la
combinaison d'un signal et d'un contexte - celui de la tâche en cours. Néanmoins, plusieurs
améliorations sont apportées, d'une part dans le cadre de la détection des exceptions et d'autre
part dans celui de leur prise en charge.
OPERA fait une distinction entre les deux types de détection : synchrone et asynchrone. Dans
le cas de la détection synchrone, on associe à chaque tâche du workflow un "signal proxy" ou
"mandataire de signal", qui fait explicitement partie du contrôle de flux de workflow (fig.
II.4). Chaque mandataire est associé à un nom, une catégorie et à un gestionnaire d'exception,
89
Chapitre 3 : Workflow et Systèmes Workflows avancés
fixé par le concepteur du workflow. Si aucun gestionnaire n'a été défini, un gestionnaire par
défaut est automatiquement associé à la tâche. La catégorie de l'exception quant à elle, permet
de restreindre le comportement du gestionnaire. Par exemple la catégorie "escape" signifie
que le gestionnaire doit arrêter l'exécution du processus en cours après le traitement de
l'exception. Le gestionnaire d'exceptions est activé par le mandataire si ce dernier est atteint
par le contrôle de flux. Dans la figure III.5 par exemple, le signal proxy "E_excep1" est atteint
si la condition X n'est pas vérifiée.
Activités
La prise en charge des exceptions dans le
système OPERA est récursive : si un If (X)
Act. 1 Act. 2
gestionnaire n'a pas été capable de traiter
l'exception qui lui est passée, il la fait If (!X)
OPERA traite également, nous l'avons dit, les exceptions asynchrones, c'est à dire celles qui
ne sont pas détectées en temps réel mais par application de règles et de prédicats sur les
données du workflow. Dans ce cas, OPERA propose une base de "déclencheurs" ("triggers"),
écrit sous la forme de règles Evènement(s) - Condition -Action (ECA). Une règle ECA permet
de déclencher une action en réaction à un ou plusieurs évènements, si la condition liée à
l'action est vérifiée. Les déclencheurs restent actifs pendant toute la durée du processus, c'est à
dire qu'ils sont constamment "informés" de l'évolution des données du workflow. Ainsi, il
n'est pas besoin d'associer de règle ECA à une tâche car toutes les tâches du workflow sont
automatiquement liées à l'ensemble de règles.
Les règles ECA sont très utilisées dans le domaine du Workflow, que ce soit pour le
contrôle de flux (description de la dynamique du processus) ou plus particulièrement pour
la gestion des exceptions. Dans ce dernier cas, trois possibilités se présentent.
90
Chapitre 3 : Workflow et Systèmes Workflows avancés
un événement, ce dernier est testé par les règles. S'il correspond à l'entrée de l'une
d'entre elles, la procédure de prise en charge de l'exception est activée.
§ Enfin la troisième méthode est mixte et consiste à mélanger des règles spécifiques
pour les exceptions prévues et l'ensemble de règles pour les exceptions imprévues.
Figure III.6 - Gestion d'exception à l'aide Figure III.7 - Gestion d'exceptions à l'aide
de déclencheurs associés aux activités de déclencheurs en pool
La première solution, qui est aussi la plus intéressante, est proposée par le système WERDE et
se base sur le concept de "patterns" [CASATI et al. 98]. Un pattern se définit comme étant
une façon éprouvée, performante et générale de résoudre une catégorie particulière de
problèmes [ECKEL 99], une solution type à un problème récurrent [RIEHLE et al. 96]. Le
système WERDE est un éditeur de patterns de gestion d'exceptions Workflows. WERDE
permet de conserver dans une base, un catalogue (semblable à l'arbre des signaux cité plus
haut) de patterns d'exceptions classés en catégories. Ceux-ci peuvent ensuite être directement
réutilisés par les concepteurs de workflows auxquels WERDE offre également la possibilité
très intéressante de créer de nouvelles catégories ou de nouveaux patterns, grâce à la
réutilisation et la spécialisation des patterns existants. Cette approche permet d'enrichir le
catalogue des gestionnaires d'exceptions au fur et à mesure des besoins, en se préservant d'une
redondance inutile grâce à la classification.
91
Chapitre 3 : Workflow et Systèmes Workflows avancés
Une seconde solution, cousine éloignée de la précédente, est mise en œuvre dans le système
ADOME [CHIU et al. 98]. Elle est particulièrement adaptée aux exceptions imprévues qu'il
est difficile de classer ou pour lesquelles il n'existe pas de traitement spécifique. Dans le
système ADOME, toute exception imprévue ainsi que la description de la procédure ayant
permis de la traiter, sont enregistrées dans une base de données. Celle-ci peut être consultée
ultérieurement par tout utilisateur faisant face à un problème imprévu.
Enfin la troisième solution, mise en œuvre dans certains systèmes et architectures comme
ADOME et WAMO [EDER et al. 98] se caractérise par la possibilité d'introduire de
nouveaux gestionnaires en cours d'exécution, donc de façon ad hoc.
Dans leur grande majorité, les mécanismes de traitement des exceptions dans le Workflow
sont directement calqués sur ceux utilisés en gestion de transactions et dans les Bases de
Données. Les paragraphes qui suivent donnent une vision globale des mécanismes les plus
couramment utilisés dans les systèmes Workflows. Avant de poursuivre, signalons que dans
cette partie, nous utilisons le mot tâche au sens large - c'est à dire activité ou sous-processus.
§ L'essai répétitif ou "retry" [EDER et al. 98] ou re-exécution [HAGEN et al. 98] : le
système tente d'exécuter la tâche jusqu'à ce qu'elle réussisse ou qu'un nombre critique
d'essais soit atteint. Cette approche est assez coûteuse en temps et n'est valable que dans
certains cas. Par exemple un appareil tentera d'envoyer un fax jusqu'à ce que le numéro du
correspondant soit disponible. L'essai répétitif peut également être utilisé après un autre
mécanisme, afin de relancer le processus.
§ La compensation : dans les cas où le roll back seul est difficilement applicable, il est
possible d'envisager l'utilisation de tâches ou de processus de "compensation". La
compensation consiste à associer à une activité - ou à un processus selon la granularité -
une autre tâche ou un sous-processus qui permet de corriger l'effet occasionné par
l'exécution de la tâche en question. Dans l'architecture Workflow WAMO [EDER et al.
98], il est possible de définir des tâches de compensation en fonction de l'activité qui a
généré l'exception. Les concepteurs du modèle introduisent un certain nombre de
concepts, dont celui de "vitalité" et de "complexité". La vitalité d'une tâche (au sens large
du terme) correspond à son importance vis à vis du processus. Une tâche non vitale pourra
92
Chapitre 3 : Workflow et Systèmes Workflows avancés
être annulée ou abandonnée en cas de problème ou d'exception, ce qui n'est pas le cas
d'une tâche vitale. Les tâches vitales sont associées à des mécanismes de gestion
d'exceptions, notamment le roll back, la compensation et la contingence. La notion de
complexité d'une tâche équivaut au fait qu'une tâche peut être composée de sous-tâche (il
s'agit donc d'un sous-processus). Dans ce cas, il est peut être nécessaire de propager les
mécanismes de traitement des exceptions vers les tâches composantes, selon la vitalité de
la tâche à traiter. Par exemple une tâche vitale sur laquelle on souhaite appliquer un roll
back devra annuler l'effet de toutes ses sous-tâches.
§ La contingence : elle consiste à proposer une ou plusieurs alternatives à une tâche vouée
à l'échec après avoir levé une exception. L'exécution du processus est redirigée vers une
ou plusieurs autres tâches de secours, dites de contingence. La contingence s'utilise en
général en association avec d'autres mécanismes tels que le roll back et la compensation.
Il est curieux de constater l'existence dans le Workflow, d'un mécanisme de contingence
proposant des choix alternatifs à une tâche, alors que la modélisation de chemins possibles
est critiquée comme étant source de confusion et de surcharge du modèle. En fait, la
distinction entre contingence et choix multiples réside surtout dans la mise en forme du
mécanisme au sein du modèle. En effet, s'il est évident que les tâches de contingence
peuvent être représentées sous la forme de routes alternatives - ce qui est d'ailleurs le cas
dans la plupart des systèmes Workflows - la bonne solution consiste à éviter une "sur-
modélisation", en créant des artifacts de modélisation, graphiques ou syntaxiques. C'est
notamment le cas du système OPERA précédemment cité, qui propose un langage de
modélisation - OCR - intégrant la notion d'exception.
93
Chapitre 3 : Workflow et Systèmes Workflows avancés
déroulement du processus. Par conséquent une tâche vitale ne peut être annulée, à moins
d'annuler l'ensemble du processus.
Remarquons que dans certains cas on apporte une distinction entre annulation et
abandon (abort) de la tâche. Quant cette distinction est proposée, on définit l'abandon
comme le fait de stopper une tâche au cours de son exécution, suite à une exception et
après avoir essayé d'autres mécanismes de traitement ou de récupération. L'abandon d'une
tâche implique la notion de vitalité et nécessite souvent de mettre en œuvre par la suite,
des mécanismes de compensation et/ou de contingence. La distinction entre annulation et
abandon peut également être importante lors de l'analyse de l'état des activités.
§ "Berner" le système : c'est une solution parfois valable, souvent utilisée dans la réalité,
qui correspond au fait de faire "comme si" l'exception n'avait pas eu lieu. Par exemple,
considérons le processus de gestion de commandes clients. La livraison ne peut se faire
qu'à la condition explicite que le paiement soit bien arrivé. Or, il se peut
qu'exceptionnellement, pour des raisons diverses, on admette de livrer le colis sans
règlement préalable. Dans ce cas on peut envisager d'inventer un règlement fictif qui sera
utilisé pour permettre au système de poursuivre le processus. Bien entendu, cette solution
ne peut être mise en œuvre que pour certaines exceptions "sémantiques" (donc hors
pannes, erreurs, échecs systèmes et autres) et sous certaines conditions, par exemple que
la tâche soit traitée par une personne, qu'on ait la possibilité de corriger les données
fictives ultérieurement etc.
94
Chapitre 3 : Workflow et Systèmes Workflows avancés
Pour en terminer avec la gestion d'exceptions, il reste à rappeler que les mécanismes décrits
ci-dessus sont ceux qui sont principalement utilisés dans les méthodes de traitement des
exceptions. Toutefois, bien qu'ils aient pour la plupart été éprouvés dans d'autres systèmes
d'informations, leur utilisation au sein de systèmes Workflow nécessite certaines évolutions.
En effet dans un workflow, les transactions ne peuvent pas toujours vérifier certaines
propriétés, comme par exemple l'atomicité ou l'isolation [GEORGAKOPOULOS et al. 95].
Un sous-processus Workflow nécessite la réalisation d'un ensemble d'activités et de sous-
processus, eux-mêmes liés à la réalisation d'un sous-ensemble de tâches etc.. La complexité
est encore augmentée par le fait que l'exécution peut avoir lieu en parallèle et sur des systèmes
différents ou géographiquement distants. Il y a donc un risque "d'effet de bord" qu'il faut
prendre en compte lors de l'exécution des activités des workflows. Par conséquent, il est
difficile d'isoler et de définir des transactions uniques et de leur associer des mécanismes de
récupération, en particulier quand il s'agit d'échecs d'applications. Pour ce faire, les
mécanismes de traitements des exceptions classiques s'accompagnent souvent d'autres
mécanismes, ainsi que d'algorithmes de propagation des exceptions. Cette propagation se fait
selon le cas vers l'amont ou vers l'aval, répercutant d'une façon récursive l'effet d'une
exception et le résultat local du mécanisme de traitement correspondant. C'est le cas pour un
grand nombre de méthodes ou de systèmes Workflows expérimentaux ou industriels, tels
OPERA, WAMO ou ADOME précédemment cités.
L'adaptabilité d'un workflow est définie par sa capacité à modifier la définition du modèle de
processus sur lequel il est basé [KAMMER et al. 98]. Les causes qui font qu'il est nécessaire
d'adapter un modèle workflow sont diverses mais peuvent toutefois être réparties en deux
catégories principales :
§ Pour particulariser un schéma général à des cas plus spécifiques. L'exemple le plus
commun est celui d'une entreprise ayant des implantations dans différentes régions ou
différents pays. Ces ramifications fonctionnent toutes sur le même modèle (qui
caractérise l'entreprise), elles se basent donc toutes sur les mêmes processus métiers.
Néanmoins, étant donné leurs disparités géographiques, il se peut que ces processus
différent légèrement sur quelques aspects propres à chaque site. Ces différences
peuvent être dues à certaines contraintes locales, d'ordre législatif, culturel ou autres.
Par exemple on peut imaginer que dans un pays, une loi particulière nécessite l'ajout
95
Chapitre 3 : Workflow et Systèmes Workflows avancés
2. Le besoin d'apporter des modifications au modèle des processus, pour deux raisons
principales :
§ Pour des motifs de correction du modèle des processus. Il est en effet possible qu'à un
certain moment, le processus en cours d'exécution dévie des objectifs qui lui sont
associés. Il est alors nécessaire d'intervenir sur le modèle des processus pour en
corriger la "trajectoire". Une autre source de correction peut être la réponse à une
exception. Il arrive en effet parfois, que la définition préétablie du processus soit à
l'origine d'une exception. Même si l'exception est traitée sur le moment, le fait qu'elle
ait pour origine la définition même du processus implique que son occurrence sera
récurrente. Par suite il est nécessaire d'intervenir sur le modèle workflow pour y
apporter des corrections. Pour illustrer cela, considérons le processus d'admissions de
patients dans un hôpital, pour une opération. La première activité du processus
consiste en la création impérative du dossier administratif du patient (numéro de
sécurité sociale, mutuelle, assurance, etc.). Or l'on constate que dans les cas
d'urgences, la première activité ne peut être réalisée qu'à posteriori (une fois le patient
soigné). On peut en déduire que le modèle du départ n'exprime pas entièrement la
vraie situation. Ceci a donc pour effet de générer des exceptions au niveau du
workflow et oblige les utilisateurs à utiliser des processus de gestion d'exceptions.
Afin d'éviter d'avoir à traiter de façon exceptionnelle des cas finalement "normaux", il
convient donc de revoir la définition du modèle workflow. Dans le cas de notre
exemple, il s'agira par exemple d'intégrer la possibilité de paiement différé.
Que ce soit pour des motifs de correction ou d'actualisation, nous pouvons constater qu'il
est souvent impératif d'apporter des modifications aux modèles des processus, voir au
système lui-même. Ces modifications peuvent revêtir plusieurs formes. Il peut s'agir d'une
modification du flux des activités, de l'ajout de nouvelles entités (activités, rôles, acteurs,
etc.), de la suppression d'entités existantes ou de leur redéfinition en termes de
comportements.
S'il est clair que l'adaptabilité des workflows est nécessaire dans les deux cas - réutilisation et
modification - il est important d'indiquer qu'elle ne s'y applique pas de la même façon. En
effet, la réutilisation des workflows n'est pas contraignante au niveau du temps, c'est à dire
qu'elle peut se faire hors exécution des processus. Il s'agit surtout d'un moyen rapide et
96
Chapitre 3 : Workflow et Systèmes Workflows avancés
efficace de récupérer l'existant pour l'adapter. La modification des processus quant à elle doit
se faire en cours d'exécution, sans arrêt du système Workflow ni du processus en cours de
réalisation. Si les mécanismes de base pour l'adaptation sont les mêmes dans les deux cas,
l'adaptation en cours d'exécution introduit des contraintes supplémentaires importantes, qu'il
convient de traiter. Nous reviendrons plus en détails sur ce point là dans la suite de ce
chapitre. Enfin, pour terminer la partie des définitions, il convient de distinguer deux
déclinaisons de l'adaptabilité. Quant le besoin d'adaptation du workflow en cours d'exécution
est détectée par le système et que l'adaptation est réalisée par le système ou par un de ses
agents, on dit que le système et que le modèle sont adaptatifs, c'est à dire qu'ils sont capables
de s'auto-adapter. Quand les modifications et les adaptations sont réalisées par une personne
(via les moyens fournis par le système et le modèle), on dit que le Workflow est adaptable.
[HAN et al. 98] estiment qu'il existe quatre niveaux d'adaptabilité dans le domaine du
Workflow. Ces niveaux sont classés par ordre décroissant d'abstraction :
1. L'adaptation au niveau du contexte. Les systèmes Workflows sont dans la plupart des cas
intégrés à un environnement informatique et informationnel, dans lequel ils jouent un rôle
particulier. Ces systèmes sont donc en collaboration avec d'autres systèmes d'information
et d'autres applications informatiques. Le rôle joué par le système Workflow est défini par
un certain contexte organisationnel et métier, qui définissent la configuration des systèmes
d'information de l'entreprise. Les contextes étant changeants (pour des raisons stratégiques
ou/et technologiques) leur modification peuvent avoir un impact sur la façon dont le
système Workflow s'intègre dans son environnement. Cet impact se répercute en fait sur
l'un des niveaux inférieurs de la classification, lequel devra mettre en œuvre des
mécanismes d'adaptation.
3. L'adaptation au niveau des ressources. Pour [HAN et al. 98], ce niveau d'adaptation se
subdivise en deux sous niveaux :
§ L'adaptation liée au données. Si les données dont dépendent les processus sont
modifiées ou si leur structure est modifiée, il convient alors de répliquer les
modifications sur les modèles qui leurs sont associés.
97
Chapitre 3 : Workflow et Systèmes Workflows avancés
qu'il est nécessaire d'adapter les configurations des systèmes d'informations et des
applications sous-jacentes.
Cette classification est intéressante mais à notre sens, il aurait été plus exact de distinguer
uniquement deux niveaux principaux : celui du processus et celui du système. Le niveau
processus (ou plutôt niveau Workflow) englobe tout ce qui a trait avec la cohérence et
l'exactitude du modèle workflow. En effet, par définition (voir chapitre 1), un modèle
workflow traite différents aspects : l'aspect comportemental et fonctionnel, l'aspect
organisationnel (qui englobe l'aspect ressources) et l'aspect informationnel. Par conséquent le
niveau "processus" est concerné par toute modification ou changement sur l'un de ces aspects
et non uniquement par l'aspect comportemental comme semblent l'indiquer [HAN et al. 98].
Le niveau système quant à lui correspond au niveau infrastructure mentionné ci-dessus et
englobe tous les problèmes de mise à jour de matériel, de logiciel ou d'intégration avec
d'autres systèmes composant l'environnement du système Workflow.
En plus des niveaux sur lesquels il est possible d'agir en terme d'adaptation, il est également
intéressant de se pencher sur l'impact des modifications sur le modèle workflow initial,
autrement dit sur la "profondeur" des modifications. Nous distinguons en effet trois niveaux
de profondeur, qui dépendent de l'importance des modifications par rapport au modèle initial :
le niveau "local", le niveau "local généralisé" et le niveau "global". Avant d'entrer dans le
détail de ces niveaux, il convient de décrire rapidement le fonctionnement global d'un système
Workflow lors de l'instanciation de "cas". Un cas, nous le rappelons, est une réalisation
pratique d'un workflow, c'est à dire une situation réelle d'un processus modélisé (voir chapitre
2). Chaque cas est instancié à partir du modèle workflow de référence que nous qualifions
"d'initial" et qui est stocké dans la base de données du système Workflow (fig. III.8). Il existe
plusieurs instanciation possible d'un workflow, donc plusieurs cas. Ces instances fonctionnent
toutes selon le schéma définit par le modèle initial.
Base de données
du système Workflow
Système Workflow
instanciation
Modèle du
processus de traitement
d ’un dossier
médical
Nous distinguons donc trois niveaux de profondeur où il est possible d'adapter un workflow :
1. Le niveau local est le plus superficiel. Il correspond à une adaptation appliquée au niveau
d'une instance. Adapter un workflow au niveau local signifie qu'un besoin d'adaptation a
98
Chapitre 3 : Workflow et Systèmes Workflows avancés
été constaté lors de l'exécution d'un cas du workflow mais que ce besoin se limite à ce cas.
Il s'agit donc d'adaptations spécifiques, sans récurrence ou à très faible fréquence
d'apparition. Par conséquent il n'est besoin d'adapter le workflow que pour ce cas, donc
"localement".
2. Le niveau local généralisé est plus profond que le niveau local et correspond
proportionnellement à un besoin d'adaptation plus sérieux. Ce niveau englobe toutes les
instances d'un workflow en cours de réalisation. En d'autres termes, si la nécessité d'une
adaptation est constatée sur l'une des instances, alors elle doit être répercutée sur toutes les
instances en cours d'exécution. L'adaptation au niveau local généralisé ne remet en cause
que la validité des instances en cours d'exécution. Par suite, elle ne s'applique pas aux
nouvelles instances du processus.
Ce type d'adaptation est réalisé dans le but d'actualiser les instances en cours d'exécution
ou pour corriger le processus. Un problème se pose quant à la stratégie d'application des
modifications : soit celles-ci ne concernent que les instances qui en sont au même degré de
réalisation, soit elles recouvrent l'ensemble des instances, y compris celles étant à un stade
plus avancé. Ce dernier cas est assez difficile à mettre en œuvre dans la réalité pour
plusieurs raisons. En particulier, cela nécessite de stopper l'activité en cours, d'appliquer
des mécanismes de roll back et de compensation performants, ce qui n'est pas toujours
possible, puis de reprendre l'exécution au point le plus éloigné dans le processus ayant
nécessité une adaptation (au cas où plusieurs points aient requis des modifications)
[HORN et al. 98]. En général par soucis de simplicité, seules les instances pouvant
intégrer l'ensemble des modifications sans nécessité de retour arrière sont concernées par
les adaptations ("tout ou rien"). Dans ce cas, le workflow ayant en premier lieu émit le
besoin d'adaptation sert de référentiel. Une autre solution consiste à poser une borne
"virtuelle". Dans ce cas, toutes les instances dont l'exécution n'a pas atteint la borne sont
concernées par les modifications. Les figure III.9 et III.10 montrent respectivement un
exemple d'adaptation locale généralisée avec un workflow référentiel et un exemple
d'adaptation avec une borne.
workflow du cas
m
workflow du cas n
workflow du cas p
workflow du cas q
99
Chapitre 3 : Workflow et Systèmes Workflows avancés
Dans la figure III.9, le workflow m sert de référentiel, par conséquent, seul le workflow n
est capable d'intégrer l'ensemble des modifications, puisqu'il n'a pas atteint le même stage
d'avancée que le workflow m. Par contre, bien qu'il soit encore possible de modifier une
partie du workflow q (la dernière activité), l'adaptation n'est pas réalisée pour satisfaire la
contrainte du "tout ou rien". Enfin, il est évident que le workflow p ne peut en aucun cas
absorber l'une ou l'autre des modifications.
L'exemple de la figure III.10 montre une adaptation avec une borne virtuelle servant de
référentiel. La borne, définie par un utilisateur compétent, indique un point de réalisation
processus avant lequel toute modification est possible. Toutes les instances du workflow
n'ayant pas atteint ce point peuvent donc intégrer les adaptations. Dans ce cas, il est
possible au workflow q de prendre en compte les modifications initialisées par le
workflow m. Toutefois, le workflow q doit mettre en œuvre des mécanismes de roll
back et de compensation.
workflow du cas
m
workflow du cas n
workflow du cas p
workflow du cas q
Avant de passer au niveau suivant, il est ici possible d'introduire une variante de
l'adaptation locale généralisée que nous nommons "adaptation locale contrainte". Cette
stratégie d'adaptation concerne toutes les instances en cours d'exécution répondant à
certains critères spécifiques. Par exemple, imaginons un processus de production et de
distribution de matériel technologique pointu. On peut imaginer qu'une imperfection a été
détectée sur un élément faisant partie d'un lot ou de plusieurs lots ayant été produits
pendant une période déterminée. Alors on peut souhaiter modifier uniquement le
workflow de production et de distribution de ces éléments pour les diriger vers un
processus de recyclage ou de réhabilitation.
3. Le niveau global. C'est le niveau le plus profond de l'adaptabilité car les adaptations sont
directement répercutées sur toutes les instances en cours d'exécution mais aussi et surtout
sur le modèle initial. Réaliser une adaptation au niveau global signifie que le modèle de
référence est remis en cause et qu'il ne correspond plus à la réalité. Par conséquent, les
nouvelles instances sont elles aussi concernées par les modifications. Notons que le niveau
100
Chapitre 3 : Workflow et Systèmes Workflows avancés
global rencontre les mêmes problèmes que le niveau précédent, quant à la stratégie
d'applications des modifications. Les solutions y sont donc similaires.
Enfin, et pour terminer ce paragraphe, la figure III.11 se propose de résumer et d'illustrer les
trois niveaux de profondeur de l'adaptabilité.
Instances en
cours
modifications d ’exécution modifications
modifications
Mettre en œuvre l'adaptabilité des workflows est certes un aspect impératif des nouveaux
systèmes Workflows, encore faut-il savoir qui en est responsable, notamment dans le cas du
Workflow "adaptable". En effet, dans le cas "adaptatif", nous avons précédemment dit que le
système ou l'un de ses agents est chargé d'introduire les modifications. Sans rentrer dans les
détails - chose que nous ferons par la suite - il est clair que le cas adaptatif est plus
contraignant puisqu'il suppose la présence d'une certaine forme "d'intelligence" au sein du
système. Dans la majeure partie des cas, les modifications sont en fait réalisées par des acteurs
humains. Cela n'est toutefois pas non plus sans poser quelques problèmes. En effet, lorsque la
nécessité de modifier un processus se présente, trois questions fondamentales se posent :
La conception d'un modèle de processus n'est en général pas triviale mais est le résultat de
réflexions importantes. C'est l'œuvre de spécialistes, analystes, managers, concepteurs, etc.
Par conséquent, modifier un modèle pour y apporter des adaptations n'est pas à la portée de
tout utilisateur mais nécessite certaines compétences. D'une part, il faut être certain que les
modifications sont nécessaires et d'autre part, il faut s'assurer que l'intervention de l'utilisateur
n'apporte pas plus de problèmes qu'elle n'en résout [DEITERS et al. 98]. En particulier, un
contrôle de la cohérence du nouveau modèle doit être assuré, soit par le système Workflow
lui-même, soit par un système d'analyse de processus, qui s'y interface [REICHERT et al. 98].
Pour éviter des interventions non désirables, la méthode la plus couramment utilisée est celle
101
Chapitre 3 : Workflow et Systèmes Workflows avancés
des droits d'accès (permissions) associées aux workflows et à leurs données. Dans certains
systèmes Workflows, ces droits correspondent à ceux attribués aux utilisateurs par
l'administrateur du système d'exploitation. Les personnes pouvant modifier les workflows
sont donc des utilisateurs spéciaux ou appartenant à des groupes spéciaux. Toutefois dans la
majorité des systèmes Workflows, il est possible d'établir une hiérarchie de permissions et de
privilèges, via le module de modélisation de l'organisation de l'entreprise. En général, les
permissions sont des caractéristiques intrinsèques aux rôles que peuvent prendre les
utilisateurs inscrits dans la base du système. Il est de plus souvent possible d'avoir des rôles
prédéfinis, tels "administrateur", "créateur" (d'un processus) ou "ayant droit".
Enfin, l'autre problème qui se pose est de savoir comment faire en sorte que des utilisateurs
non-spécialistes de la programmation, puissent adapter un workflow. L'adaptation n'étant pas
uniquement rappelons-le, un problème de réordonnancement mais elle concerne souvent la
définition même des entités impliquées dans le processus. Nous discuterons plus en détail ce
problème dans la suite de ce chapitre et dans le chapitre suivant.
Jusqu'à présent, il a été question des niveaux d'applicabilité des adaptations, de leur impact sur
les modèles de processus, ainsi que de leurs conséquences sur les questions de sécurité et de
cohérence des modèles. Toutefois, un aspect de l'adaptabilité n'a pas encore été abordé : celui
de la mise en œuvre de l'adaptabilité Workflow. Quelles sont les approches existantes et quels
sont leurs intérêts et leurs défauts ? Cet aspect étant l'un des plus importants de l'adaptabilité,
nous proposons de lui consacrer un paragraphe complet dans ce chapitre.
Ainsi que le mentionnent [HAN et al. 98], il existe deux catégories principales d'approches
pour la mise en œuvre de l'adaptabilité Workflow : les approches ponctuelles et les approches
par métamodèles. Ces approches diffèrent dans les techniques qui y sont développées et
adoptées mais également en efficacité en terme d'adaptabilité. Dans les paragraphes suivants,
nous détaillons et discutons chacune de ces approches séparément.
1. La technique des choix multiples est l'expression la plus simple de l'approche ponctuelle.
Elle consiste comme son nom l'indique, à placer des "bornes" au sein du modèle du
processus. Chaque borne, quand elle est atteinte, permet de stopper l'exécution du
processus pour offrir à l'utilisateur plusieurs alternatives pour la poursuite de l'exécution.
Une borne est en général associée à une activité ou à un événement ayant lieu dans le
102
Chapitre 3 : Workflow et Systèmes Workflows avancés
processus. La technique des choix multiples est utilisée lorsque l'on ne peut pas fixer des
choix lors de la conception du workflow mais qu'on a une évaluation globale de la
situation, qui permet de concevoir différentes alternatives. Une évolution hybride de cette
technique permet à l'utilisateur d'introduire des "morceaux" de processus ou des sous-
processus, stockés dans une librairie. Cette dernière technique est en fait à l'intersection
entre celle des choix multiples et la modélisation tardive. Elle est notamment proposée
par le système pour "workflows Scientifiques" WASA [WESKE 96]. Ce dernier donne
aux utilisateurs, le moyen de choisir un sous-processus dans une librairie, afin de
compléter le workflow en cours. Deux modes sont possibles : le premier mode est de type
"actif", ce sont les utilisateurs qui interviennent sur l'exécution du processus et indiquent
leur choix au serveur Workflow (à l'aide d'instructions SQL). Le deuxième mode est de
type "passif" : c'est le serveur qui relance les utilisateurs afin de connaître l'évolution du
processus, en leur proposant éventuellement des sous-processus possibles.
103
Chapitre 3 : Workflow et Systèmes Workflows avancés
souvent aucune distinction ne soit faite dans la littérature. Dans les deux cas, il s'agit
d'ajouter des éléments au modèle du processus, qui n'avaient pas pu être représentés pour
des raisons diverses - dont nous avons discuté au début de ce chapitre.
L'affinage dynamique des modèles représente en quelque sorte, une entrée en la matière
de la modélisation tardive. En général, l'affinage dynamique s'exprime surtout par
l'instanciation ou la particularisation de valeurs génériques appartenant au modèle avant
exécution. Il s'agit donc de définir au niveau du modèle initial, des "templates" (modèles)
dans lesquels certaines entités sont exprimées sous forme générique, que l'on instancie en
cours d'exécution. La figure III.12 donne un exemple d'un modèle de processus (construit
à l'aide d'un pseudo langage Workflow).
Process makeReservation
Le processus "makeReservation" est utilisé
Activity check_train (<journey>) pour organiser les voyages des membres d'une
if not (free_places)
Process <exception_Process>
entreprise. Dans le modèle de ce processus, on
else Activity check_hotel( hotel du nord) a deux éléments génériques : <journey> qui
if not (free_rooms)
Activity try_Hotel2
correspond à un type global de voyage et
<exception_Process>, un processus générique
traitant les exceptions mais n'ayant pas été
Process makeReservation identifié au préalable. Lors de l'exécution, il est
Activity check_train (businessTravel(paris))
if not (free_places) possible de remplacer les entrées génériques
Process check_plane par des instances particulières. Par exemple ici,
else Activity check_hotel( hotel du nord)
if not (free_rooms) le terme <journey> est remplacé par un type
Activity try_Hotel2 spécifique nommé "businessTravel(paris)",
qu'on suppose être défini dans la base du
< xxx > : terme générique
xxx : mot clé - xxx : instance système Workflow. Le processus générique de
xxx : valeur gestion d'exceptions est quant à lui, remplacé
par un vrai processus "check_plane".
Figure III.12 - Instanciation de parties
génériques d'un modèle de processus
104
Chapitre 3 : Workflow et Systèmes Workflows avancés
Cette technique fait en fait appel à des mécanismes réflexifs, dont nous reparlerons dans
la partie concernant les approches par métamodèles. Toutefois, la technique développée
par Baan présente un inconvénient majeur malgré son intérêt. En effet, les activités
d'extension ne servent que pour l'insertion de nouvelles activités. Elles sont donc toujours
positionnées à la fin d'une partie d'un processus, susceptible d'être augmentée. Si le
processus est composé de plusieurs parties en parallèle, alors le modèle fini vite par être
105
Chapitre 3 : Workflow et Systèmes Workflows avancés
Démonter activité
lave-linge à insérer
Extraire le
mélangeur
Extraire le Extraire le
moteur tambour
Ôter le
couvercle Récupérer
le tableau
Un modèle est, nous l'avons dit, une abstraction d'une partie du monde réel (ou d'un
problème). Il est composé d'un ensemble d'éléments en relation, traduisant des entités réelles
en relation, qu'elles soient physiques ou conceptuelles. Un modèle sert généralement à décrire
le comportement de ces entités lorsqu'elles sont placées dans une situation particulière, dans
un but de compréhension et/ou de simulation. Un modèle se situe donc au premier niveau
d'abstraction "au-dessus" des objets du monde réel. Les objets traduits par un modèle et les
relations qui existent entre eux, sont représentés au travers de formalismes et des vues
spécifiques. A un deuxième niveau d'abstraction, plus élevé, se pose alors le problème de la
structuration et de la réglementation des comportements des formalismes et des relations,
utilisés pour la création des modèles. C'est le niveau des "métamodèles". Un métamodèle est
un modèle permettant de décrire les comportements et les relations existants entre des
formalismes d'un même domaine, afin de permettre, grâce à leur utilisation, la conception
correcte de modèles d'objets du monde réel. Par exemple, la notation unifiée objet UML
propose un métamodèle qui décrit la façon d'utiliser l'ensemble des formalismes de la
notation, dans les différents types de diagrammes qu'elle propose.
Au niveau du Workflow, l'approche par métamodèle a donc pour but de permettre d'apporter
des modifications sur les modèles workflow, via leurs métamodèles. Plus généralement, une
approche par métamodèles s'étend au recouvrement de deux objectifs principaux :
106
Chapitre 3 : Workflow et Systèmes Workflows avancés
3.2.2 La réflexivité
Selon le dictionnaire en ligne des éditions Hachette [HACHETTE 99], un acte est réflexif s'il
est fondé sur une réflexion. La réflexion est définie comme étant un "retour opéré par la
pensée sur elle-même en vue d'une conscience plus nette et d'une maîtrise plus grande de ses
processus". Plus simplement, la réflexion d'un objet (par exemple dans un miroir) est l'image
qu'un objet a de lui-même. Ces définitions sont intéressantes car elles s'appliquent bien à
l'utilisation du terme de réflexivité en informatique.
Un système informatique est dit réflexif s'il intègre une représentation (un modèle) de sa
structure et de son comportement [FOOTE 90], [DOURISH 95], [DOURISH 96], [SOBEL et
al. 96]. Ce modèle est directement lié à l'état et au comportement du système par une relation
"causale", qui établit une connexion à deux sens entre le modèle et le comportement que le
modèle décrit. Cette relation permet ainsi au système d'obtenir une représentation de son
comportement et de son état, mais lui permet également de les contrôler et de les modifier. En
d'autres termes, la relation causale implique que toute modification fait sur la représentation
du système se "réfléchit" immédiatement sur son état et son comportement [FOOTE 90]. Un
système réflexif est donc un système capable d'observer et de modifier son propre
comportement en cours d'exécution. Par conséquent, un modèle réflexif est un modèle "actif",
tel que nous l'avons défini dans le premier chapitre de ce mémoire.
"introspection". La faculté d'un système à Méta entité Méta entité ... Méta entité ...
modifier son état et son comportement est
introspection
appelée "intercession". La réflexivité est mise intercession relation causale
réification
en œuvre dans un système par une conception Niveau de base
de ce dernier en deux niveaux d'abstraction :
le niveau d'abstraction inférieure est le niveau
Entité du
domaine
d’application
Entité du
domaine
d’application
...
"de base". Les entités qu'il contient
appartiennent au domaine d'application du
système. Le niveau d'abstraction supérieure
est le niveau "méta", où le domaine de Entité du Entité du Entité du
définition des entités est le système lui-même. monde réel monde réel monde réel
La relation causale s'applique donc entre les
Domaine d’application - monde réel
entités des deux niveaux. On parle de
"réification" lorsqu'une entité du niveau de
base renvoie son état et sa structure (attributs Figure III.15 - Système réflexif
plus comportements) sous la forme d'une
107
Chapitre 3 : Workflow et Systèmes Workflows avancés
structure de données, vers une méta entité. Cette dernière peut alors agir sur cette structure de
données et réfléchir les modification vers l'entité du niveau inférieur qui reprend alors son
exécution sur de nouvelles bases. On parle dans ce cas de "méta traitement".
Si la réflexivité est l'un des principes de base suivis par les approches par métamodèles,
l'application de ce principe - la façon dont il est mis en œuvre - diffère d'un système
Workflow à un autre ou d'une architecture à une autre. Ainsi, nous avons vu précédemment
que beaucoup de systèmes Workflows s'inspirent des théories des SGBD avancés, dont ils
emploient et enrichissent les outils; cela est notamment vrai dans le cas de la gestion
d'exceptions. Les systèmes WASA et WISE précédemment cités en sont de bons spécimens.
Dans le système WASA par exemple, outre les choix multiples qui sont proposés en cours
d'exécution (approche ponctuelle), il est possible de modifier un modèle Workflow en y
accédant directement. Cet accès est réalisé par l'intermédiaire Interface
d'instructions SQL - définies en tant que primitives - de contrôle Base des spécifications
intervenant sur la définition des composants de la "base de tâche_1
spécifications". Ces composants correspondent aux entités
des workflows ou aux règles ECA qui définissent le flux
de contrôle. Remarquons que les concepteurs ou les SQL Modèle
tâche_2
Un exemple plus intéressant est proposé par le modèle ROK ("Reflexive Object Model")
[EDMOND 98], [EDMOND 00]. Ce modèle a initialement été conçu pour introduire de la
flexibilité dans les SGBD et les systèmes coopératifs répartis et a évolué vers les systèmes
Workflows. ROK propose d'associer à tout objet d'une application informatique – en
particulier d'un workflow – cinq méta objets qui correspondent chacun à une facette de l'objet.
1. Le premier de ces méta objets est celui "d'état" ("State"). Un objet d'état définit l'ensemble
des attributs d'un objet, son contexte (en fait le nom de la classe de l'objet), un ensemble
de prédicats sur les valeurs que les attributs peuvent prendre, ainsi que des conditions et
des valeurs d'initialisation. Plusieurs objets peuvent appartenir au même contexte, et sont
de fait, lié au même objet d'état.
2. Le deuxième méta objet est l'objet de "comportement" ("Can"). Il décrit l'ensemble des
comportements – ou activités - que peut réaliser un objet. Chaque comportement est
associé à un ensemble de pré et de post conditions qui définissent, à la manière des règles
ECA, les conditions d'activation d'une activité. Enfin, chaque activité est décrite par une
spécification générique, traçant dans sa globalité la façon dont elle est réalisée. Cette
spécification générique se rapproche des "templates" de l'affinage dynamique. A l'instar
de l'objet d'état, plusieurs objets appartenant au même contexte peuvent être liés au même
objet de comportement. Remarquons qu'un objet comportement décrit uniquement les
108
Chapitre 3 : Workflow et Systèmes Workflows avancés
compétences d'un objet mais non la façon dont il les réalise. Par conséquent, des objets
partageant les mêmes comportements peuvent les réaliser de façons différentes. A la
limité, un même objet pourra avoir différentes réalisations pour un comportement.
4. Le quatrième méta objet, l'objet "acte" ("Act"), est directement lié au méta objet "Tâche",
pour lequel il définit un ensemble d'attributs fondamentaux décrivant l'état de la tâche :
"programmée", "terminée", "en cours", etc..
Toute modification faite sur un objet, par exemple sur un composant d'un processus, est
réalisée via l'un des méta objets. Ces derniers sont munis de primitives qui leur permettent de
modifier le contenu de leurs attributs et de réfléchir ces modifications vers les objets auxquels
ils sont associés. La méthode ROK propose donc un vrai exemple de réflexivité. Elle utilise
en plus d'autres concepts importants, notamment la séparation entre "interface" et
"réalisation". En effet, le méta objet de comportement définit clairement l'interface d'un objet.
En d'autres termes, il donne des indications sur la façon dont l'objet peut être utilisé, sans
dévoiler le comment de la réalisation (ce qui est fait par le méta objet acte). Cette séparation
permet à l'objet de changer la façon dont il réalise une activité (donc le contenu de "acte"),
sans perturber ses relations avec les autres objets, puisque celles-ci se basent sur le contenu de
l'interface. Ceci est bien évidemment d'un grand intérêt pour les besoins d'adaptation des
workflows. Nous développerons cet aspect beaucoup plus en détail dans un prochain
paragraphe.
Les deux exemples précédents – WASA et ROK - nous ont permis de présenter deux cas
typiques d'approches par métamodèle, avec des niveaux de complexité différents dans leur
mise en œuvre. D'autres méthodes et d'autres façons d'appliquer la réflexivité sont également
proposées par d'autres systèmes et d'autres modèles. Ces méthodes partagent des points de
109
Chapitre 3 : Workflow et Systèmes Workflows avancés
vues communs, et se distinguent sur d'autres. Nous aurons l'occasion d'y revenir dans le
prochain chapitre de ce travail.
Dans les paragraphes 3.1 et 3.2, nous avons décrit les deux principales catégories d'approches
mettant en œuvre l'adaptabilité des Workflows. Comme nous avons pu le constater, la
complexité de cette mis en œuvre, mais aussi son efficacité, diffèrent selon les approches.
Globalement, nous pouvons dire que les approches ponctuelles sont plus "facile" à réaliser
mais que leur efficacité se limite aux points d'entrée prévus sur les modèles. A l'opposé, les
approches par métamodèles sont plus efficaces puisqu'elles permettent d'adapter l'ensemble
des parties d'un workflow, que ce soit en termes de flux ou en termes de définitions des
composants des modèles. Par contre, leur réalisation est plus complexe, pour les concepteurs-
développeurs Workflows, ainsi que pour les utilisateurs, qui ne sont pas nécessairement
spécialistes des concepts utilisés. Afin de tirer profits des avantages de chacune des deux
approches, [HAN et al. 98] proposent d'adopter des approches mixtes. Celles-ci combinent les
techniques de la première catégorie pour les besoins d'adaptation localisés et pour les
problèmes de gestion de ressources, alors que les techniques de la deuxième catégorie sont
utilisées pour les besoins plus importants d'adaptation en cours d'exécution, ou en vue d'une
réutilisation.
Jusqu'à présent, nous avons vu quelles sont les approches possibles pour réaliser l'adaptabilité
Workflow. Toutefois, nous n'avons pas vu quels sont les concepts et les outils sur lesquels se
basent et sont élaborées ces approches. En d'autres termes, comment les différentes approches
sont-elles réalisées ? Parmi ces concepts, nous nous intéressons plus particulièrement à celui
des objets informatiques et encore plus spécifiquement au concept de Workflow Orienté
Objet.
110
Chapitre 3 : Workflow et Systèmes Workflows avancés
Afin d'amoindrir le coût de l'évolution, l'une des solutions est de réutiliser des parties des
applications existantes, en les adaptant aux nouveaux besoins des utilisateurs. Pouvoir
réutiliser et adapter des parties de logicielles à faible coût nécessite de satisfaire deux
conditions :
§ Avoir un cloisonnement entre les différents composants d'une application, une certaine
"indépendance du code" qui fait qu'il est possible de modifier une partie d'un logiciel
sans avoir à répercuter la modification sur les autres parties avec lesquelles le
composant modifié interagit.
§ Avoir des mécanismes permettant de réutiliser des parties de logiciels sans avoir à
connaître leur code source ou à le réécrire. Cet aspect est entre autres particulièrement
intéressant quand on souhaite adapter et spécialiser les éléments d'une librairie.
Le concept des objets informatiques apporte une réponse très satisfaisante à ces deux
conditions. Un objet informatique - nous dirons simplement un objet - est une abstraction
d'une entité du monde réel, physique ou conceptuelle. Un objet est en général définit en
fonction du point de vue que porte une personne sur l'objet réel, placé dans un contexte
particulier. La définition de l'objet est réalisée à l'aide de deux ensembles d'éléments :
§ La première catégorie comporte des fonctions qui permettent de manipuler les attributs
de l'objet ou d'en connaître la valeur.
§ La deuxième catégorie des comportements est composée de services que peut rendre
l'objet, on parle également de compétence. Les compétences d'un objet ne sont pas
toutes nécessairement directement accessibles.
111
Chapitre 3 : Workflow et Systèmes Workflows avancés
Les objets qui peuvent être décrits par les mêmes attributs et présentant les mêmes
comportements sont réunis dans un ensemble appelé "classe". Une classe définit un type
d'objets, donc une conceptualisation de l'abstraction introduite par l'objet. La création d'un
objet d'une classe donnée s'appelle instanciation de la classe. Tout objet est donc l'instance
d'une classe. Il existe toutefois des classes, dites abstraites, qui ne peuvent être instanciées car
elles représentent des concepts trop génériques. Une classe n'est abstraite que par rapport au
point de vue adopté dans le problème où elle s'insère. Par exemple la classe "Véhicule" peut
être une classe abstraite pour une application de gestion de parc automobile car elle représente
une notion trop générique pour être instanciée.
Un langage de programmation est dit "orienté objet" s'il permet d'appliquer "naturellement"
les propriétés des objets, en particulier l'encapsulation, l'héritage et le polymorphisme, que
nous décrivons plus avant. Un langage orienté objet est un langage dont le vocabulaire, la
syntaxe et la sémantique intègrent les notions des objets. A l'opposé, un langage est dit "basé"
objet s'il ne met pas en œuvre l'ensemble des concepts des objets (en particulier l'héritage et le
polymorphisme) [BOOCH 92], ou s'il ne peut le faire que par des artifices de programmation.
Un langage orienté objet peut être entièrement basé sur les concepts des objets, c'est à dire
qu'il ne permet que de créer des objets. C'est le cas des langages Java, Eiffel, Smalltalk, etc.
Enfin, un langage peut être étendu aux objets, s'il ajoute des mécanismes de programmation
objets à des mécanismes de programmation procédurale classique. C'est le cas des langages
C++, ADA, Pascal Objet, etc.
Les objets possèdent également plusieurs propriétés intrinsèques, parmi lesquelles trois sont
fondamentales et sont des conditions nécessaires pour qu'un langage de programmation
puissent prétendre à l'appellation de "langage objet" ou "orienté objet" [BOOCH 92],
[MULLER 98] :
112
Chapitre 3 : Workflow et Systèmes Workflows avancés
3. Le polymorphisme. Le polymorphisme est une propriété en relation directe avec les deux
précédentes. En effet, si une classe fille introduit de nouvelles propriétés (attributs et
comportement) à la définition de la classe mère, elle peut également modifier la façon
dont elle réalise un comportement dont elle a hérité. Le polymorphisme est donc la
possibilité de définir au niveau de classes héritières, différentes réalisations d'un (ou de
plusieurs) comportement(s) hérité(s) d'une classe mère. Par exemple considérons la classe
d'une forme géométrique d'une application graphique, munie d'une méthode "dessiner()"
lui permettant de s'afficher à l'écran. Cette classe peut être dérivée en plusieurs sous-
classes, par exemple la classe des carrés et la classe des cercles. Etant donné que la forme
d'un cercle diffère de celle d'un carré alors il est légitime que la méthode dessiner() soit
redéfinie par chaque classe fille, pour afficher la forme adéquate à l'écran.
D'autres concepts sont également liés aux objets, que nous ne présentons pas ici, exceptions
faites pour les notions de "métaclasse" et de "réflexivité" dont nous avons précédemment
parlé :
4. Une métaclasse est une classe dont les instances sont également des classes. Les
métaclasses se situent à un niveau d'abstraction supérieur à celui des classes. Leur intérêt
est principalement de permettre de manipuler des classes - les instances des métaclasses -
en tant qu'objets. Si une classe est en même temps une instance, alors il est possible d'agir
sur ses propriétés lors de l'exécution. Le concept de métaclasse est supporté par peu de
langages objets (dont CLOS, Smalltalk et dans une moindre mesure, Java). Le concept de
métaclasse est particulièrement utile dans la mise en œuvre de la réflexivité.
5. La réflexivité. Dans le paragraphe 3.2.2, nous avons définit la réflexivité des systèmes
comme étant leur capacité à générer une représentation de leur état et de leur
comportement, et de les modifier dynamiquement. Nous apportons ici quelques notions
supplémentaires concernant les langages objets réflexifs. Un langage orienté objet réflexif
est un langage qui supporte la redéfinition dynamique de parties d'un programme en cours
d'exécution (écrit dans ce langage). On dit de ce langage qu'il est mutable [FOOTE 92],
par opposition aux langages orientés objets dit "extensible" [STROUSTRUP 1991], qui
supportent uniquement l'ajout de nouvelles propriétés au programme.
La programmation, l'analyse et la conception objets ont fait leurs preuves dans le domaine de
la production de logiciels flexibles et réutilisables. Les propriétés des objets - parmi lesquelles
celles que nous avons décrites, constituent la raison principale de ce succès. En effet,
l'encapsulation, l'héritage et le polymorphisme et la réflexivité sont les mécanismes
113
Chapitre 3 : Workflow et Systèmes Workflows avancés
Dans un article consacré à la spécialisation des workflows, C. Bussler [BUSSLER 97] apporte
une réponse à cette question, en définissant trois niveaux pour l'application des concepts des
objets dans le Workflow.
1. Le premier niveau est celui où le système Workflow est implémenté à l'aide d'un langage
objet ou orienté objet. Dans ce cas, le système est évolutif, c'est à dire que les objets
composant le système peuvent évoluer ou être réutilisés, notamment pour la production de
code plus performant. Cependant, les workflows, leur modèles et les processus ne sont pas
eux évolutifs et ne bénéficient donc en rien de l'apport des objets. La transposition Objet –
Workflow se fait donc uniquement au niveau du logiciel. Il est important de noter que le
fait que le système est évolutif n'entraîne pas qu'il est flexible au sens du Workflow, donc
par exemple qu'il fournit des moyens pour prendre en charge les exceptions.
2. Le deuxième niveau est déjà plus intéressant. Il consiste à utiliser les langages objets pour
l'implémentation du système Workflow mais également pour la définition des entités
Workflows. Celles-ci ont donc accès à toutes ou une partie des caractéristiques des objets,
fournis par le langage de programmation sous-jacent. La transposition Objet – Workflow
se fait donc à deux niveaux : le niveau logiciel et une partie du niveau conceptuel (le
niveau Workflow), puisqu'il est toujours nécessaire de passer par le langage de
programmation pour accéder aux mécanismes des objets. Par analogie avec les langages
de programmation, nous proposons de qualifier de "basé objet" les systèmes Workflows
de ce niveau.
3. Enfin, le troisième et dernier niveau consiste à intégrer véritablement les concepts des
objets au niveau Workflow proprement dit et non uniquement au niveau logiciel. Il s'agit
donc de doter les entités Workflows de mécanismes objets à la façon des langages de
programmation. En d’autres termes, l’idée est d’élaborer un langage Workflow objet ou
l’équivalent, on parle dans ce cas de "Workflow objet" ou "Workflow orienté objet". Un
workflow objet et les entités qui le composent, présentent donc les propriétés
d'encapsulation, d'héritage et de polymorphisme. Par conséquent, il doit être possible de
spécialiser des entités Workflows, de spécialiser des modèles Workflows ou d'obtenir des
114
Chapitre 3 : Workflow et Systèmes Workflows avancés
Il existe donc une nuance importante entre orientation objet au niveau des langages
d'implémentation des systèmes Workflows, et orientation objet au niveau des langages de
modélisation Workflow. Dans ce dernier cas, les concepts des objets sont directement intégrés
au niveau du métamodèle Workflow. Parmi les trois niveaux présentés ci-dessus, seul le
dernier répond véritablement à cette contrainte, le deuxième niveau adoptant une approche
hybride.
Les paragraphes précédents nous ont appris qu'il est intéressant d'intégrer les propriétés des
objets dans le Workflow, afin de bénéficier de leurs propriétés d'adaptation, en créant des
Workflows objets et orientés objet. Cette notion en reste toutefois à un niveau conceptuel
assez général puisque nous n'avons pas encore décrit comment exploiter ces propriétés au
niveau de la modélisation de processus et de la gestion de workflow. Ce paragraphe propose
donc de descendre à un niveau plus concret, en indiquant la correspondance entre propriété
objet et bénéfice sur le Workflow.
[Link] L'encapsulation
Nous commençons part la première propriété des objets, l'encapsulation. Ainsi que nous
l'avons vu précédemment, l'encapsulation permet de séparer un objet, dans notre cas un objet
Workflow, en deux facettes : l'interface et la réalisation. Pouvoir réaliser cette séparation est
l'une des premières étapes de la flexibilité [HAN et al. 98] puisqu'elle permet au concepteur
d'un modèle Workflow d'isoler la description d'une tâche ("what to do") de la façon de la
réaliser ("how to do it") [JOERIS 00]. A l'instar de la programmation objet, il est donc
possible au concepteur d'un workflow de modifier la façon de réaliser une tâche sans
perturber le modèle du processus qui lui reste valide. Par exemple, il est possible lors de
l'exécution, de choisir la réalisation la plus valable pour une tâche en fonction du cas qui se
présente. Un exemple de mise en œuvre de l'encapsulation est donné dans [JOERIS 00] et
[JOERIS et al. 98]. Une tâche est définie à l'aide de deux parties complémentaires :
définition « context-
La partie indépendante du contexte (context définition « context-free » dependent »
d’une tâche d’une tâche
free) dans lequel la tâche va être réalisée (le
cas Workflow), et la partie réalisation, qui peut ECA
varier en fonction du contexte (context ECA Contextuel
par
dependent). Dans la première partie, une tâche défaut Remplace
est décrite par un diagramme d'états / Le ECA
Par défaut
transitions, sur lequel sont reportés tous les
Attributs de la tâche
états que peut prendre la tâche et les transitions
(activités ou événements) qui la font passer
dans ces états. Un ensemble de règles ECA
décrivant le comportement générique de la Figure III.18 - Exemple d"encapsulation :
tâche est également associé. Il peut être utilisé comportement "context free" et "context
par défaut. dependent".
115
Chapitre 3 : Workflow et Systèmes Workflows avancés
possible de modifier chaque ensemble de règles ou de choisir celui qui correspond le mieux
au cas traité. Remarquons qu'il ne s'agit pas ici de choix multiples mais bien d'encapsulation.
En effet, dans le cas de choix multiples, plusieurs tâches différentes sont candidates pour
succéder à une tâche lors de l'exécution du processus. A l'opposé, dans notre exemple
précédent, nous n'avons qu'une seule tâche candidate mais plusieurs façons possibles de la
réaliser.
[Link] L'héritage
Il est évident que l'intérêt principal de l'héritage est de permettre la réutilisation de modèles
Workflows et d'entités Workflows. Cette possibilité est très intéressante puisqu'elle donnerait
aux concepteurs de workflows, la possibilité de récupérer la définition d'un workflow existant,
pour en créer de nouveaux. Spécialiser des workflows peut se faire de deux façons, qui
dépendent du niveau d'intégration des propriétés objets. Si le Workflow est basé objet, alors
l'héritage se fait par l'intermédiaire des mécanismes du langage de programmation servant à
implémenter le système. Il s'agit donc de l'héritage de classes composant un workflow. Dans
le cas du workflow objet, un mécanisme d'héritage est intégré dans toute entité Workflow,
modèle compris. L'héritage se fait donc directement au niveau du Workflow, sans passer
explicitement par le langage de programmation sous-jacent. A titre d'illustration, nous
reprenons une partie d'un exemple tiré de [BUSSLER 97]. L'article présente un langage de
script, permettant de modéliser des workflows mais surtout, proposant des mécanismes
d'héritage de types de workflows (workflow type inheritence).
116
Chapitre 3 : Workflow et Systèmes Workflows avancés
Dans un article consacré à la spécialisation des modèles de processus [WYNER et al. 95],
[Link] et J. Lee posent la question suivante : la spécialisation d'un processus est-elle un
mécanisme qui permet d'augmenter la classe fille par rapport à la classe mère ou est-il plutôt
un moyen de la limiter ? Selon ces spécialistes, la bonne réponse est la deuxième : la
spécialisation d'un processus résulte en un nouveau processus dont les composants sont un
sous-ensemble des composants du processus père. Pour G. Wyner et J. Lee, la spécialisation
de processus est une opération qui crée un processus à partir d'un cas général pour l'appliquer
à un cas particulier. Cette définition est discutable. En effet, ces auteurs considèrent qu'un cas
général couvre plus d'aspects qu'un cas particulier. En d'autres termes, un processus père peut
traiter l'ensemble des applications possibles justifiant le processus. A l'opposé, un processus
fils ne peut traiter qu'une seule application. Par exemple, considérons le processus de gestion
des repas dans un restaurant. Ce processus peut prendre des formes différentes en fonction du
type de restaurant, trois dans le cas de notre exemple :
117
Chapitre 3 : Workflow et Systèmes Workflows avancés
Nous estimons de notre part que la spécialisation de processus n'est pas un mécanisme de
limitation. Au contraire, l'héritage et la spécialisation sont des moyens d'enrichir un modèle
initial par de nouvelles propriétés, de modifier ou de particulariser son comportement.
[Link] Le polymorphisme
Le polymorphisme est une propriété très intéressante pour le Workflow. En effet, comme
nous avons pu le voir dans l'exemple de la figure III.19, le polymorphisme permet à des
workflows héritiers de modifier une partie des propriétés qu'ils ont récupérées de leur
workflow père. Donc, outre la possibilité de réutiliser des modèles, offerte par l'héritage, le
polymorphisme introduit un "plus" de flexibilité en rendant possible la personnalisation des
comportements hérités. Au niveau d'un workflow, cela peut par exemple se traduire par une
modification du flux de contrôle des tâches, comme nous l'avons vu précédemment. Une autre
application très importante du polymorphisme, se traduit pat la possibilité de réaliser une
activité d'un workflow de différentes façons, selon le contexte d'exécution ou l'acteur qui en
est responsable. C'est en partie le cas de l'exemple de la figure III.18. La possibilité d'adopter
un comportement selon le contexte peut se généraliser à l'ensemble des composants d'un
workflow. Dans le chapitre suivant, nous reviendrons plus longuement sur les possibilités
offertes par le polymorphisme (ainsi que les deux autres propriétés) appliqué au Workflow.
Nous étudierons également la façon dont la réflexivité peut être utilisée pour concevoir des
systèmes Workflow adaptables.
Conclusion
La recherche dans le domaine de la flexibilité du Workflow est un domaine en forte
expansion. Les besoins en systèmes adaptables et flexibles sont très présents dans les
entreprises, étant donné le contexte de remise en cause perpétuel de leurs processus métiers,
du au besoin de compétitivité et aux contraintes auxquelles elles sont soumises. Plusieurs
systèmes commerciaux et expérimentaux ont apporté des solutions plus ou moins
convaincantes à ce besoin de flexibilité. Le problème de la gestion des exceptions a en
particulier été traité dans un grand nombre de systèmes expérimentaux dont nous avons
précédemment parlé, tels WIDE, OPERA ou WAMO. D'autres systèmes, également issus des
deux milieux (recherche et industrie), ont approfondi le problème de l'adaptabilité.
Néanmoins dans la plupart des cas, des lacunes dans les approches limitent l'intérêt des
solutions apportées. Nous nous sommes intéressés plus particulièrement à la mise en œuvre de
l'adaptabilité dans les modèles et les systèmes Workflow, en privilégiant l'approche par
métamodèle, basée sur le concept des Workflows objets.
Dans le chapitre suivant, nous présentons un framework objet pour Workflows adaptables. Le
framework propose une approche originale pour la conception de modèles et de systèmes
Workflows flexibles et adaptables.
118
Chapitre 3 : Workflow et Systèmes Workflows avancés
Bibliographie
[ALONSO et al. 97] G. Alonso, D. Agrawal, A. El Abbadi, C. Mohan. "Functionality and
Limitations of Current Workflow Management Systems". IEEE Expert,
Vol.2, n°5. Septembre-Octobre 1997.
[BARESI et al. 99] L. Baresi, F. Casati, S. Castano, S. Ceri, M.G. Fugini, I. Mirbel, B. Pernici.,
G. Pozzi. "WIDE Workflow Development Methodology". Report n°3027-6.
ESPRIT Project 20280. 3 Mars 1999.
[BUSSLER 97] C. Bussler. "Towards Workflow Type Inheritance". Proc. of the OOPSLA
'98 Workshop on Implementation and Application of Object Oriented
Workflow Systems. Vancouver, BC, Canada. Octobre 1998
[BOLCER et al. 96] G.A. Bolcer, R.N. Taylor. "Endeavors : A Process System Integration
Infrastructure". International Conference on Software Process (ICSP4).
Brighton, U.K.2-6 Décembre 1996.
[BOOCH 92] G. Booch. "Conception Orientée Objet et applications. Addison-Wesley.
1992.
[CASATI 96] F. Casati, S. Ceri, B. Pernici, G. Pozzi. 'Deriving Active Rules for Workflow
Enactment". DEXA Database and Expert Systems Applications. Zurich,
Suisse. 9-13 Septembre 1996.
[CASATI 98] F. Casati. "Approaches to Handling Exceptions in Workflow". CSCW-
98,Workshop Towards Adaptive Workflow Systems Seattle, WA. 14
novembre 1998.
[CASATI et al. 98] F. Casati, S. Castano, M. G. Fugini, I. Mirbel, B. Pernici. "WERDE: A
Pattern-Based Tool for Exception Design in Workflows". SEBD, Sesto
Convegno Nazionale su "Sistemi Evoluti Per Basi di Dati".
Ancona, Italie. 23-25 juin 1998.
[CHIU et al. 98] D.K.W. Chiu
, K. Karlapalem, Q. Li. "Exception Handling with Workflow Evolution in
ADOME-WFMS : a Taxonomy and Resolution Techniques". CSCW-
98,Workshop Towards Adaptive Workflow Systems Seattle, WA. 14
novembre 1998.
[DEITERS et al. 98] W. Deiters, T. Goesmann, K. Just-Haln, T. Löffeler, R. Rolles. "Support for
exceptions handling through workflow management systems". CSCW-
98,Workshop Towards Adaptive Workflow Systems Seattle, WA. 14
novembre 1998.
[DOURISH 95] P. Dourish. "Developing A Reflective Model of Collaborative Systems".
ACM Transactions on Computer-Human Interactions". Mars 1995. pp.40-
63.
[DOURISH 96] P. Dourish. "Open Implementation and Flexibility in CSCW Toolkits".
Mémoire de Thèse pour l'obtention du titre de "Doctor of Philisophy of the
University of London". Department of Computer Science. University
College London. Juin 1996.
[ECKEL 97] B. Eckel. "Thinking in Java". 1st Edition. Prentice-Hall. 1997.
[ECKEL 99] B. Eckel. "Thinking in Patterns with Java". [Link]
1999.
[ECKEL 00] B. Eckel. "Thinking in C++". Vol.1. 2nd Edition. Prentice-Hall. 2000.
[EDER et al. 95] J. Eder, W. Liebhart. "The Workflow Activity Model WAMO". Proc. of the
3rd Int. Conf. on Cooperative Information Systems (CoopIS), Vienna,
Austria, Mai 1995.
[EDER et al. 98] J. Eder, W. Liebhart. "Contributions to Exception Handling in Workflow
Management". Proc. EDBT Workshop on Workflow Management Systems,
Valencia, 1998. pp 3-10.
[EDMOND et al. 98] D. Edmond, A.H.M Hofstede. "Achieving Workflow Adaptability by means
of Reflection". CSCW-98,Workshop Towards Adaptive Workflow Systems
Seattle, WA. 14 novembre 1998.
[EDMOND 00] D. Edmond. "Applications of Reflection for Cooperative Information
Systems". Mémoire de Thèse pour l'obtention du titre de "Doctor of
Philisophy". Faculty of Information Technology, Queensland University of
Technoloy, Australia. Juillet 2000.
119
Chapitre 3 : Workflow et Systèmes Workflows avancés
120
Chapitre 3 : Workflow et Systèmes Workflows avancés
121
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Chapitre IV
2FLOW - Framework pour Workflows Objets Flexibles
1. Objectifs du Framework
La flexibilité des systèmes Workflows est un des objectifs prioritaires de la nouvelle
génération de systèmes. Si elle se décline sous deux aspects principaux : la gestion des
exceptions et l'adaptabilité, ce dernier aspect reste encore à approfondir. En effet, le problème
de la gestion des exceptions a largement été traité dans la recherche, notamment parce qu'il
peut se baser sur les fondements posés par la Gestion des Transactions, les Bases de Données
et le Génie Logiciel. Côté adaptabilité, bien que plusieurs recherches aient été initialisées et
soient toujours en cours, le champ "d'investigation" reste encore ouvert. Plusieurs solutions et
approches ont été proposées, nous en avons décrit les principales dans le chapitre précédent.
L'une de celles-ci, dite du Workflow Objet ou Workflow Orienté Objet, est néanmoins plus
prometteuse. Cette approche, qui prend ses racines dans le Génie Logiciel, a globalement pour
but d'intégrer les concepts des objets informatiques au sein du domaine du Workflow, en
particulier au niveau des modèles et des métamodèles Workflows.
Nous avons choisi d'approfondir l'approche Workflow Objet basée sur les métamodèles, pour
ses capacités de contribuer à l'adaptabilité des Workflows. Le choix de l'approche objet s'est
imposé de lui-même. En effet, l'intérêt de l'utilisation des objets dans la conception et
l'implémentation d'applications informatiques évolutives n'est plus à démontrer. La
transposition des propriétés de l'approche objet aux concepts du Workflow nous semblait
donc une approche "naturelle" pour la résolution d'un ensemble de problèmes de la même
catégorie : évolutivité - flexibilité - adaptabilité. Notre travail de thèse s'est donc orienté vers
la conception et l'élaboration d'un framework pour Workflows objets adaptables, appelé
2FLOW (Flexible Framework for Object Workflows).
§ Le fait qu'un framework fournit des objets de base, aux propriétés et aux
comportements bien définis qu'il est possible de réutiliser tels quels ou d'adapter,
toujours dans le cadre de l'architecture globale.
§ Le fait qu'il existe des relations structurelles et comportementales entres les classes
d'un framework, donc une architecture de base qui définit un cadre d'action. Par
conséquent, un framework n'est pas une bibliothèque d'objets car il définit à l'opposé
121
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
des bibliothèques de classes, des relations, des interactions entre des instances de
classes [MANHES 98].
Enfin, un troisième aspect fondamental des frameworks est le fait d'être dédié à un type
d'application donné. Ainsi, il existe des frameworks pour le développement d'applications
multimédia, pour des applications de gestion, etc. Pourquoi ne pas concevoir alors de
framework pour la construction de systèmes et de modèles Workflows ?
La conception de notre framework vise trois objectifs principaux que nous classons par
ordre croissant d'importance :
§ La deuxième raison est basée sur la première mais est la plus importante. En effet,
UML est adoptée par un grand nombre de spécialistes du monde Objet mais
également par des spécialistes d'autres disciplines. Par conséquent, UML peut
jouer un rôle d'intégration important entre les équipes des différents services d'une
entreprise, en fournissant un langage commun. En particulier, nous voyons
l'utilisation d'UML comme un bon moyen de réunir les vues des spécialistes des
processus et celles des développeurs Workflows.
2FLOW étant implémenté en Java, nous verrons que nous utilisons ce même langage
pour les besoins de customisation (pour reprendre l'expression anglo-saxonne), de
réutilisation et d'adaptation des workflows construits à partir du framework. Le choix
de Java se justifie non pas par un phénomène de mode mais pour deux raisons
majeures :
122
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Nous développerons bien entendu plus en détail ces choix et leur intérêt dans les paragraphes
suivants, notamment dans celui consacrés à la mise en œuvre de la flexibilité.
2. Description du framework
Le framework (fig. IV.1) propose un ensemble de classes en relation, correspondant toutes à
des entités constitutives de Workflow. Nous nous sommes initialement basés sur le
métamodèle de la "Wokflow Management Coalition" (WfMC), présenté dans le chapitre 2.
Ce métamodèle a été enrichi par la suite par des éléments qui nous semblent fondamentaux
pour la modélisation Workflow, ainsi que par d'autres éléments plus spécifiques à notre
framework. La figure ci-dessous donne une vue globale du framework et de ses composants,
qui seront décrits, avec leurs relations, dans les paragraphes suivants.
Dans ce chapitre, nous adoptons une approche progressive dans nos explications sur le
framework. Nous donnons d'abord une description de sa structure suivie d'explications
techniques et détaillées sur son fonctionnement. Par la suite, nous présentons la mise en
œuvre de la flexibilité dans 2FLOW, puis nous décrivons la méthode de modélisation que
nous proposons. Enfin nous terminons ce chapitre par la comparaison de 2FLOW avec
d'autres solutions workflows flexibles.
Externe
123
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
124
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Enfin, la classe "Activité" correspond à une activité du processus modélisé. Dans 2FLOW,
nous adoptons une approche du concept d'activité légèrement différente de celle des autres
systèmes Workflow. Nous la décrivons en détail dans la partie consacrée à la vue
organisationnelle.
Activité BCF
*
*
émet
* notifie
Événement
S_BCF B_BCF P_BCF
notifie
Expression_Logique
For_BCF While_BCF
Fin_Activite Exception
1. Les événements : la notion d'événement est fondamentale en Workflow, bien que certains
systèmes et métamodèles Workflows ne lui accordent pas toute sa dimension. Ainsi par
exemple, plusieurs systèmes et métamodèles ne permettent pas de créer des types
d'événements autres que ceux signalant la fin d'une activité. Nous rappelons qu'un
événement est un fait ayant lieu lors de l'exécution du processus et dont l'occurrence
(seule ou conjointement avec d'autres événements) permet de déclencher une activité.
Remarquons de plus qu'un événement ou un groupe d'événements sert de déclencheurs,
donc qu'il signifie à l'activité qu'elle doit s'exécuter. Toutefois, l'événement ne s'occupe
pas de déterminer l'ordre dans lequel les activités s'exécutent, c'est à dire le contrôle de
flux.
2FLOW introduit une classe "Evénement" de base, qui correspond à tout événement
pouvant avoir lieu au cours d'un processus. Un objet de la classe Evénement est généré par
une activité du workflow ou peut être associé à un fait externe, pour lequel on souhaite
réagir de façon appropriée.
125
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
La classe Evénement est également spécialisée en une classe "Exception", qui sert à
représenter les exceptions pouvant avoir lieu au cours de l'exécution d'un workflow. La
gestion des exceptions est développée dans le paragraphe dédié à la mise en œuvre de la
flexibilité dans 2FLOW.
2. Les expressions logiques : nous avons dit dans le paragraphe précédent qu'il était possible
que plusieurs événements soient à l'origine du début d'une activité. Dans les systèmes et
les modèles Workflows se basant sur des formalismes ou dans certaines des méthodes
décrites au chapitre 2 (telle ARIS), le contrôle de flux est en général exprimé à l'aide
d'opérateurs de contrôle permettant d'exprimer certains choix sur l'association des
événements et des activités.
A3 A1
A2 A3
A1 OR Join OR Split A2
A3 A1
A2 A3
A3 peut se réaliser si A1 et A2 ou si l ’un des deux est terminé La réalisation de A1 entraîne la réalisation de A2 ou de A3
ou des deux simultanément
A2 A3
Ax Activité / Remarque: En entrée, les activités peuvent être remplacées par des événements
126
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
de la forme : E4
Comme nous pouvons le constater dans la figure IV.5 (2), la modélisation de cette expression
donne lieu à une représentation chargée, qui n'est pas nécessairement claire mais surtout, qui
n'exprime pas correctement la situation. En effet, dans la figure on comprend bien que
l'occurrence des deux événements E1 et E2 est nécessaire. Cela est également visible pour les
événements E1, E3 et E4. La disposition des opérateurs nous permet de plus de comprendre
127
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
que A1 et A2 s'exécutent de façon exclusive. Par contre, le modèle ne permet pas de savoir
que A1 est liée à E1 et E2, alors que A2 est liée à l'autre ensemble d'événements.
Afin de résoudre les problèmes liés à la modélisation du contrôle de flux (séparation des
aspects événementiels et chronologiques, combinaison complexe d'opérateurs de contrôle de
flux), nous avons introduit dans le framework deux classes spéciales : la classe
"Expression_Logique" dédiée à la gestion des événements et la classe "BCF" (ou Bloc de
Contrôle de Flux) pour le contrôle de flux.
Chaque événement d'une expression logique peut déclencher l'exécution des activités
auxquelles il est directement associé, et sa combinaison avec d'autres événements, via
l'opérateur logique, permet de lancer un autre ensemble d'activités. Ainsi :
128
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Nous illustrons les possibilités de la classe Expression_Logique par les exemples suivants, le
tableau IV.1 donne la correspondance des opérateurs logiques dans la notation 2FLEx :
Nous voyons dans cet exemple que les événements E1, E2, E3 et E4 ne sont associés
individuellement à aucune activité. Il en est de même pour les deux opérateurs "&" et
"|". En fait, l'activité A est lancée suite à l'occurrence exclusive de ces deux ensemble
d'événements, par conséquent l'activité dépend de l'opérateur exclusif "^" avec lequel
on l'associe.
129
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
§ Exemple 3 : nous traitons dans cet exemple un cas plus compliqué que les deux
précédents. Supposons que nous ayons quatre activités, A1, A2, A3 et A4. A1 est
déclenchée par un événement E1, tandis que E2 déclenche les activités A2 et A3. E1 et
E2 sont issus de la même activité A mais ils sont disjoints (OR), c'est à dire qu'ils
peuvent être générés séparément ou pas. L'activité A4 quant à elle, est mise à feu par
l'occurrence simultanée de deux autres événements, E3 et E4, générés par une activité
B. Toutefois, l'occurrence des événements (E1, E2) et (E3, E4) est exclusive, il n'est
donc pas possible de réaliser (A1, A2, A3) et A4. L'expression 2FLEx correspondant à
cette situation est la suivante :
E1 A1
A2
OR
A E2 XOR
A3
XOR
B
E3
XOR
A4
AND
E4
Les expressions logiques de 2FLEx permettent de décrire tous les cas de figure, même
complexes, sans avoir de plus à surcharger le modèle puisqu'un seul élément -
l'expression logique - remplace l'ensemble des opérateurs de contrôle de flux
normalement nécessaires, sans faire perdre au modèle Workflow son expressivité.
Nous rappelons de plus que les expressions logiques servent uniquement à gérer les
événements et non à contrôler le flux. Cette information n'est donc pas perdue mais
exprimée dans 2FLOW à l'aide d'opérateurs spécifiques, comme nous allons le voir.
Dans 2FLOW, la gestion des événements est donc prise en charge à l'aide des instances de
la classe "Expression_Logique". La gestion de l'ordre d'exécution des activités est quant à
elle prise en charge par un autre type de contrôleurs, que nous appelons "BCF" ("Bloc de
Contrôle de Flux").
Les événements générés en parallèle indiquent implicitement que les activités auxquelles ils
sont reliés en entrée doivent également être exécutées en parallèle. Cependant, étant donné
que nous avons souhaité séparer la gestion d'événements de la gestion de l'ordre d'exécution -
130
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
pour des raisons de clarté - nous avons introduit au sein du framework un ensemble de classes
spécialisées dans le contrôle de flux, dont la classe mère abstraite, est appelée "BCF". Un BCF
se spécialise en fait en trois autres classes, dédiée chacune au traitement d'un type de flux
spécifique. Nous distinguons ainsi :
§ La classe BCF_S (ou BCF de séquence), qui est dédiée au contrôle de l'exécution
séquentielle des activités et des BCF qui y sont contenus.
a) La classe BCF_For, qui exécute les activités et les BCF contenus dans le bloc
un nombre fixé n de fois.
b) La classe BCF_While, qui exécute les activités et les BCF contenus dans le bloc
tant qu'une condition de fin de boucle n'est pas atteinte. Il peut s'agit de
l'occurrence d'un ou de plusieurs événements ou d'une expression testant le
contenu de variables du workflow.
§ Enfin, la classe BCF_P (ou BCF parallèle) qui permet d'exécuter simultanément
plusieurs activités et/ou BCF.
L'exécution d'un processus est toujours associée à un BCF_S, le flux pouvant varier par la
suite en fonction des souhaits des concepteurs, qui décomposent alors l'exécution du
processus en celle de plusieurs BCF. Ce découpage, qui est surtout utile pour l'exécution,
n'entre pas à notre sens dans la perception "naturelle" d'un processus, qui est plutôt
événementielle. Par conséquent, nous séparons notre framework en deux points de vues
complémentaires : le point de vue "processus métier", qui permet de décrire et de comprendre
complètement un processus grâce à une approche événementielle, et le point de vue "logique"
qui inclue l'aspect contrôle de flux.
Dans le chapitre 2, nous avons défini un rôle comme étant un qualificatif permettant de
décrire les compétences d'un acteur d'un processus donné. Dans la grande majorité des
modélisations et des systèmes Workflows, un rôle n'est utilisé que pour donner une
description de ce que son titulaire fait et éventuellement, lui associer des droits d'accès aux
données du workflow. Par exemple on pourrait imaginer que le formulaire de saisie de la
définition d'un rôle a la forme suivante :
131
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Figure IV.8 - Exemple de définition d'un rôle dans un système Workflow quelconque
Lors de la modélisation, les activités du workflow sont liées aux différents rôles qui ont été
identifiés. Dans la plupart des cas, elles sont attribuées aux acteurs en cours d'exécution, soit
"manuellement" soit à l'aide d'algorithmes de sélection ("approche push"). Dans certains cas
cependant (par exemple dans le système Teamware Dolphin [YOUNG 94], l'activité est
envoyée à tous les acteurs tenant le même rôle ("approche pull"). C'est ensuite à l'un d'entre
eux de s'approprier l'activité qui est immédiatement retirée des worklists des autres acteurs.
Dans le framework 2FLOW, nous proposons une approche différente des relations entre rôles
- acteurs et activités. Nous nous basons sur le fait bien admis qu'un rôle définit un ensemble
de compétences. Or dans un processus, un ensemble de compétences correspond
nécessairement à la possibilité de réaliser certaines activités. Par extrapolation, on peut donc
dire qu'un rôle correspond à un ensemble d'activités qui sont réalisables par un acteur tenant le
rôle en question. Quel que soit le processus concerné, ces activités sont invariantes, c'est à
dire qu'elles correspondent toujours à la réalisation du même objectif - ce qui ne veut pas dire
qu'elles sont réalisées de la même façon.
On dit qu'une classe implémente une interface si elle en implémente toutes les méthodes - ce
qui ne l'empêche pas de définir des méthodes qui lui sont propres. L'intérêt d'une interface est
de regrouper un ensemble de services sous une même dénomination. Ainsi, chaque classe qui
implémente les services de l'interface pourra être qualifiée par son nom, c'est à dire perçue en
tant que fournisseur des services de l'interface. Il est alors possible d'utiliser indifféremment
les instances des classes qui implémentent l'interface, à tout endroit où celle-ci est sollicitée.
132
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
<< interface >>
Par exemple, considérons la métaphore d'une Décapsuleur
interface "Décapsuleur" qui définit le service
rendu par un décapsuleur via une méthode + décapsuler (…)
"décapsuler(...)" (fig. IV.10). Considérons à
présent deux autres classes - "Couteau_Suisse" et
"Tire_Bouchon". Celles-ci, bien que n'étant pas Couteau_Suisse Tire_Bouchon
du même type (donc non issues d'une même
classe de base), implémentent à leur façon la + couper (…) + déboucher (…)
+ scier (…) + décapsuler (…)
méthode décapsuler(...), parmi d'autres méthodes + ouvrir (…) + pulvériser_bouchon(...)
qui leur sont propres. Etant donné que ces deux + décapsuler ( ...)
+ dévisser (…)
classes fournissent le service "décapsuler(...)", il + couper_les_doigts (...)
est donc possible d'y avoir recours
indifféremment, s'il est besoin d'un décapsuleur. Figure IV.10 – Exemple d'interface
Dans 2FLOW, un "Rôle" est une interface qui regroupe un ensemble de services
correspondant à certaines activités d'un processus. Un rôle étant tenu par un ou plusieurs
acteurs, les services d'un rôle sont donc implémentés par des sous-classes de la classe
"Acteur", chacune d'entre elles correspondant à un type d'acteur particulier. En réalité, les
"vrais" acteurs sont des sous-classes des classes "Acteur_Humain" ou "Acteur_Automatique" qui
spécialisent à leur tour la classe de base Acteur. Enfin, les activités (représentées par la classe
du même nom) sont associées aux rôles qui sont chargés de les réaliser.
En effet, considérons par exemple le processus simplifié d'admission d'un patient pour une
opération, dans un hôpital. La première étape du processus consiste à établir un dossier
administratif au patient (numéro de sécurité sociale, type de couverture assurance maladie ou
mutuelle, etc.). Cette tâche est attribuée à un agent administratif du personnel de l'hôpital.
L'étape suivante consiste à établir le dossier médical du patient : connaître ses antécédents
médicaux, faire des examens, établir un diagnostic, etc. La responsabilité de cette tâche est
attribuée au médecin chef du service où le patient est admis. Une fois le dossier médical établi
et la date de l'opération arrivée, le patient est opéré par un chirurgien qui aura pris
connaissance au préalable du dossier médical du patient. Enfin, la dernière activité du
processus consiste en la facturation du patient. Elle est attribuée à un des agents comptables
de l'hôpital.
133
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Dossier Dossier
administratif médical
€
Agent
€
Médecin chef
Date opération
€
Chirurgien
€Agent
administratif du service Comptable
Figure IV.11 – Processus simplifié de la prise en charge d'un patient dans un hôpital
Dans la grande majorité des systèmes Workflows actuels, nous avons dit qu'un rôle n'est qu'un
ensemble d'informations descriptif. D'autre part, un acteur est le plus souvent décrit à l'aide
d'une entité contenant des informations générales (nom, prénom, position, etc.) qui ont surtout
un intérêt administratif. De plus, la possibilité d'avoir des acteurs humains et automatiques se
fait dans très peu de cas – sur lesquels nous reviendrons, car en effet, les systèmes Workflows
sont le plus souvent principalement dédiés à des utilisateurs humains. Dans les autres cas, les
acteurs automatiques sont au mieux, assimilés à des "ressources".
Attribuer un rôle à un acteur consiste en fait à lui attribuer une "casquette", sans
nécessairement s'assurer qu'il est capable de la porter. Ainsi, l'adéquation entre les activités
d'un processus attribuées à un rôle et les compétences des acteurs tenant le rôle reste à la
charge des concepteurs du workflow. Dans l'exemple précédent, rien n'empêche d'attribuer la
tâche d'établir un dossier médical à l'agent administratif, sinon le bon sens du concepteur. Au
mieux, cela voudrait dire que l'acteur tenant le rôle d'agent administratif tient également celui
de médecin chef, donc qu'il possède une double compétence. Nous en revenons donc aux
compétences – ou aux services que doit fournir le tenant d'un rôle.
L'intérêt de l'utilisation d'une interface en tant que rôle, "force" les acteurs à fournir les
services proposés par le rôle. Un acteur ne réalisant pas les services de l'interface ne
l'implémente pas, donc ne peut pas prétendre tenir le rôle correspondant. Par conséquent la
classe Acteur implémentée dans 2FLOW n'est pas un simple ensemble d'informations sur un
acteur mais définit tous les comportements qui lui sont associés – c'est à dire l'ensemble des
activités qu'il peut réaliser. La classe Acteur est donc, pour reprendre la terminologie anglo-
saxonne, un "wrapper" de l'acteur réel, son équivalent informatique dans le système
Workflow, en quelque sorte. Les mécanismes du langage objet sous-jacent nous permettent de
valider l'adéquation des compétences d'un acteur avec celles des rôles qu'il tient, puisqu'il
s'agit pour le compilateur de ce langage, de vérifier qu'une classe donnée (un acteur)
implémente bien une ou plusieurs interfaces (les rôles). Nous aurons l'occasion de revenir sur
ces mécanismes dans le paragraphe consacré au fonctionnement du framework.
L'approche activité – rôle – acteur proposée par 2FLOW apporte un autre intérêt très
important, celui de la possibilité d'utiliser indifféremment des acteurs humains ou
automatiques. En effet, nous avons dit que dans la plupart des systèmes Workflows, les
acteurs concernés par le processus sont le plus souvent humains. Par conséquent, les activités
134
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
se résument à la notification de l'acteur d'un travail qu'il a à faire, via sa worklist. Peu de
systèmes prennent réellement en compte les acteurs automatiques. Dans certains cas, ceux-ci
sont assimilés à des ressources. Dans d'autres cas plus performants, il existe une spécialisation
des acteurs en deux types : acteurs humains et acteurs automatiques. C'est notamment le cas
du système TriGSflow [KAPPEL et al. 95] [KAPPEL et al. 98] (aujourd'hui commercialisé
sous le nom de Verve1) qui permet de créer des "Agents" humains ou automatiques. Une autre
approche est adoptée par le système commercial Ultimus [ULTIMUS 99] qui dispose d'une
technologie originale offrant la possibilité de créer des "flobots" (pour workflow robots). Ces
derniers sont des agents informatiques prédéfinis qui sont associés à des applications
informatiques (Word, Excel, Access, etc.) auxquelles ils peuvent passer des données, et
desquelles ils peuvent en récupérer. Nous décrirons plus en détail ces différentes technologies
dans un futur paragraphe comparatif.
Nous pensons, pour des raisons évidentes de flexibilité, qu'il est très important que les
systèmes Workflows prennent autant en compte les acteurs automatiques que les acteurs
humains. Toutefois, il ne faut pas que cela oblige les concepteurs du modèle du workflow à
effectuer des tâches de conception différentes selon le cas. En d'autres termes, la modélisation
et la conception d'un workflow doit nécessiter les mêmes opérations, que ce soit avec des
acteurs automatiques ou humains. Il ne faut pas non plus que le système Workflow ait à se
"soucier" de faire cette distinction qui doit rester transparente, c'est à dire que pour lui, "un
acteur est un acteur".
L'approche élaborée dans 2FLOW nous permet de satisfaire ces deux contraintes. En effet,
nous avons dit qu'un acteur est un "wrapper" de l'acteur réel. C'est une classe qui dispose d'un
certain nombre de méthodes, correspondant toutes à des activités de processus et
implémentées de façon spécifique. Ainsi, la connaissance de comment réaliser une activité est
encapsulée au sein de l'objet acteur. Lors de l'exécution, l'instance de la classe Activité notifie
l'acteur chargé de la réaliser (nous verrons plus loin le mécanisme exact) et celui-ci active sa
méthode qui porte le même nom que l'activité. L'intérêt de notre approche est donc de créer
une indépendance qui existe entre la définition du processus et sa réalisation, ce qui nous
permet d'utiliser indifféremment un acteur humain ou un acteur automatique lors de
l'exécution d'une activité. Il est également possible de remplacer un acteur par un autre sans
perturber le bon déroulement du processus.
En résumé, la notion activité – rôle – acteur développée dans 2FLOW apporte trois avantages
Pour résumer ces trois avantages, examinons l'exemple suivant, représenté par la figure IV.13.
Considérons un processus de désassemblage d'appareils électroménagers. On y distingue,
entre autres, deux rôles : un rôle "Opérateur de désassemblage" et un autre rôle "Chef
d'atelier". Deux acteurs, l'un humain, nommé "Alain", l'autre automatique, nommé
"Robot_007" sont disponibles. Alain tient les deux rôles, il implémente donc chacun des
services des deux interfaces. Robot_007 quant à lui n'implémente que l'interface "Opérateur
de désassemblage". Dans le processus, nous distinguons trois activités : "Dévisser", "Séparer"
et "Superviser". Elles correspondent aux services respectifs des deux rôles, auxquels elles sont
associées. La réalisation de "Dévisser" et "Séparer" peut être achevée indifféremment par
1
[Link]
135
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Acteur_Humain Acteur_Automatique
Opérateur Chef d’atelier
désassemblage
+ dévisser ( ) + superviser ( )
+ déclipser ( ) + notifier_opérateur ( )
+ séparer ( )
+ ranger ( )
Alain Robot_007
+ dévisser ( ) + dévisser ( )
+ déclipser ( ) + déclipser ( )
+ séparer ( ) + séparer ( )
+ ranger ( ) + ranger ( )
+ superviser ( )
+ notifier_opérateur ( )
Activité
136
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Dans le framework 2FLOW, nous avons créé une classe Artefact pour représenter les artefacts
manipulés par les activités. Nous la spécialisons en trois sous-classes de base :
§ La classe Variable_Workflow permet de créer des variables qui pourront être utilisées
lors de l'évaluation d'événements, pour faire des calculs, etc.
L'utilité de concevoir l'artefact comme étant l'équivalent informatique d'un objet nous semble
particulièrement intéressante dans le cas où le workflow doit traiter des objets physiques. Il
peut en effet paraître étrange d'avoir inclu une classe Objet_Technique dans un système
Workflow. En fait, cette classe sert à représenter l'objet physique réel, ce qui permet en
particulier de connaître son état et de le manipuler lors du processus.
Par exemple, reprenons le cas d'un appareil traité par un processus de désassemblage. Le but
de ce dernier est de démonter un lave-linge en y extrayant trois composants. On voit bien dans
ce cas que les activités ont besoin d'avoir accès au lave-linge qui est donc un artefact physique
du processus, tout comme les composants extraits par les activités. En plus des objets réels,
les opérateurs du démontage (qu'ils soient humains ou automatiques) nécessitent d'obtenir des
informations sur l'appareil qu'ils ont à traiter, telles par exemple la localisation des pièces, les
outils à utiliser, etc.
137
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
§ Faire circuler des informations techniques entre les activités du processus. C'est un
service rendu par la plupart des systèmes Workflow.
§ Faire circuler les objets physiques entre les activités auxquelles on a passé les
informations techniques. Par contre, les activités permettant cette circulation, bien
que nécessaires, ne doivent pas être représentées dans le workflow puisqu'elles
n'en font pas directement partie.
La solution que nous proposons à ce problème est concrétisée sous la forme de la classe
Objet_Technique, l'équivalent informatique de l'objet physique manipulé par les activités. Un
Objet_Technique contient des informations sur l'état de son objet physique mais surtout, sert
d'interface entre le workflow et les processus extérieurs manipulant cet objet. Nous déléguons
ainsi la responsabilité de la manipulation des objets réels à leurs "représentants" au sein du
système Workflow. Cette approche nous permet donc d'une part de libérer le concepteur du
workflow d'une modélisation inutile, et d'autre part de créer une indépendance entre le
workflow et la façon dont les objets physiques sont "envoyés" aux acteurs. Il est ainsi possible
de modifier les processus extérieurs sans perturber le workflow en cours, puisque tout se fait à
travers les artefacts Objet_Technique.
Dans l'illustration de l'exemple du processus de désassemblage donnée par la figure 4.15, trois
sous-classes d'Objet_Technique sont créées. Elles correspondent respectivement aux trois
objets physiques consommés et créés par les activités du processus : "Lave_Linge", "Moteur"
et "Tambour". Les instances de ces classes sont associées explicitement aux activités du
workflows lors de la modélisation, et implicitement à un système extérieur gérant le transport
d'objets au sein de l'atelier. Les sous-classes de Objet_Technique encapsulent les appels au
système extérieur ou à l'un des processus gérés par ce système. Lorsque ces classes sont
transmises aux activités, elles invoquent automatiquement les processus extérieurs qui se
chargeront d'envoyer l'appareil ou le composant concerné à l'activité.
Remarquons que dans notre framework, nous nous sommes limités à définir des attributs et
des comportements de base aux artefacts. La spécialisation de ces classes en d'autres entités
reste à la charge des programmeurs.
138
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
3. Fonctionnement de 2FLOW
Dans cette partie du chapitre, nous allons approfondir la description de 2FLOW en nous
intéressant à la description de son fonctionnement. Cette description englobe en fait une
première partie décrivant succinctement la façon d'utiliser le framework et une deuxième
partie décrivant le fonctionnement interne de ses classes.
Dans l'exemple de la figure ci-contre, nous créons une classe "Alain_Tairieur" qui hérite de
la classe "Acteur_Humain". Cette classe est l'équivalent dans le workflow du vrai acteur du
même nom, dans une entreprise donnée. La classe Alain_Tairieur hérite de tous les attributs et
les comportements de la classe Acteur_Humain, plus les comportements du rôle qu'elle doit
implémenter. Nous verrons dans la suite de cette partie du chapitre quels sont les
comportements de base d'un objet de type Acteur_Humain dans le framework. Sans rentrer
dans le détail, il suffit pour le moment de savoir que si des traitements particuliers ne sont pas
associés aux méthodes d'un acteur, donc si elles ne sont pas redéfinies au niveau de la
modélisation, alors celles-ci invoquent par défaut une méthode héritée qui envoie une
notification à la worklist du vrai acteur.
139
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
redéfinir à ce niveau, alors les nouvelles classes sont parfaitement fonctionnelles, grâce aux
méthodes et attributs dont elles ont hérités. Il est néanmoins nécessaire d'attribuer des valeurs
initiales à certains des attributs pour que le workflow puisse s'exécuter. Nous illustrons cela
par un premier exemple concret sur la création de classes basées sur le framework. Dans la
figure ci-dessous nous décrivons, à l'aide d'un diagramme de classes UML, l'exemple du
processus de désassemblage d'un lave-linge, précédemment illustré par la figure IV.15.
Processus BCF
Acteur_Humain Acteur_Auto
Alain
+ superviser ( ) Robot_007
+ notifier ( )
+ extraire_tambour ( ) + extraire_tambour ( )
+ extraire_moteur ( ) + extraire_moteur ( ) Extraire_couvercle Extraire_tambour Extraire_moteur
+ extraire_couvercle ( ) + extraire_couvercle ( )
+ extraire_ carte ( ) + extraire_ carte ( )
+ séparer ( ) + séparer ( )
Réalisée par
Dans cet exemple, le workflow du processus de démontage est obtenu par l'assemblage de
classes dérivées des classes de base. Chacune de celles-ci correspond à un élément du
workflow. Ainsi, les trois activités du processus sont représentées à l'aide de trois classes du
même nom, dérivées de la classe Activité du framework. De la même façon nous avons créé
deux acteurs, deux rôles et un bloc de contrôle de flux en les faisant hériter de leurs classes
mères respectives. Nous pouvons remarquer que les activités du processus correspondent aux
méthodes des rôles Superviseur et Opérateur, et qu'elles sont redéfinies au niveau des acteurs
qui tiennent les rôles.
Bien que les comportements hérités par les classes du workflow soient suffisants pour
permettre son exécution, il est toutefois nécessaire de spécifier les valeurs de certains attributs
au moment de la construction du workflow. Pour ce faire, chaque classe du framework
dispose nécessairement de deux catégories d'attributs :
§ La première sert à stocker les noms des classes associées à la classe en question. Selon la
cardinalité, les attributs de cette catégorie sont soit de type vecteur de chaînes de
caractères (StringVector, que nous présentons dans un prochain paragraphe) pour les
cardinalités multiples, soit de type chaîne de caractère (String) pour une cardinalité simple.
La classe dispose d'autant d'attributs de type String ou StringVector qu'elle est associée à des
140
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
classes différentes. En règle générale, le nom de l'attribut est composé du nom de la classe
associée suivi de "Name" (ou "Names" pour les cardinalité multiples). Par exemple, la
classe Activité est liée à des événements, des expressions logiques, des artefacts et à un
rôle. Une partie de son interface est alors de la forme suivante :
class Activité {
...
protected StringVector eventsNames;
protected StringVector logicalExpressionsNames;
protected StringVector artefactsNames;
protected String roleName;
...
}
Ce sont donc les attributs de cette catégorie qui doivent tous être initialisés lors de la
modélisation car ce sont eux qui permettront, lors de l'exécution, l'instanciation des classes
dont ils contiennent les noms.
1. Le premier niveau concerne l'ensemble des utilisateurs "cibles" des workflows, c'est à
dire les participants aux processus, ceux qui vont réaliser les activités. Les membres de
cet ensemble n'interviennent sur le modèle du workflow que pour y apporter des
corrections et des modifications, à condition d'en avoir le privilège.
3. Enfin, le troisième niveau implique des utilisateurs particuliers, que nous qualifions de
développeurs Workflows. Ceux-ci sont chargés d'enrichir le framework, de construire de
nouvelles classes en fonction des besoins des concepteurs ou de redéfinir les
comportements des classes existantes. Les développeurs Workflow doivent posséder un
minimum fonctionnel de connaissances informatiques.
141
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
1. Les classes d'objets Workflows correspondent comme nous l'avons dit, à des objets
fondamentaux du Workflow dont ils formalisent les concepts et en implémentent les
comportements. Un objet Workflow est un objet métier, spécifique au Workflow.
2. Les classes d'objets auxiliaires ne sont pas directement en relation avec le Workflow car
elles n'en formalisent aucun concept : ce ne sont pas des objets métiers. Elles ont pour
vocation de fournir des services aux objets Workflows. Leur utilisation se situe à deux
niveaux : le premier correspond au "niveau Workflow" où les services rendus par les
utilitaires qui s'y trouvent, assurent le bon fonctionnement des workflows construits à
l'aide des classes de base de 2FLOW. Le deuxième niveau est appelé "niveau Utilitaire".
Ses classes rendent des services semblables aux librairies des langages de
programmation. Leur effet se limite donc à fournir des utilitaires de programmation.
La classe InstanciatedClasses est l'une des classes auxiliaires de niveau Workflow les plus
importantes de 2FLOW. Elle sert à référencer l'ensemble des objets issus de l'instanciation des
classes d'un modèle workflow. Celles-ci s'y inscrivent automatiquement lors de leur création
(lors de l'appel du constructeur de la classe) en invoquant l'une des méthodes de la classe
utilitaire : "addObjetct( )". La classe InstanciatedClasses propose plusieurs services. Nous en
présenterons certains en fonction des besoins des explications mais nous en décrivons une
partie importante dans ce qui suit :
§ Vérification de l'instanciation d'une classe. Nous avons signalé que pour propager
l'exécution du workflow, certaines classes ont la possibilité d'en instancier d'autres. Il se
peut toutefois que deux classes (ou plus) puissent en instancier une même troisième. C'est
par exemple le cas des événements et des activités qui, comme nous le verrons plus loin,
peuvent respectivement instancier une ou plusieurs activités et être déclenchées par un ou
plusieurs événement. Dans le cas où le déclenchement d'une même activité est lié à
142
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
l'occurrence de plusieurs événements, alors seul l'un d'entre eux – le premier à avoir lieu –
doit instancier l'activité en question. Il n'est en effet pas envisageable de créer pour le
même processus, plusieurs instances de la même activité. Par conséquent, tout événement
doit vérifier au préalable que la classe d'activité à laquelle il est lié n'a pas été instanciée
au préalable. Pour ce faire, toute classe de base peut faire appel à la méthode
checkClassExistance (nom de la classe) de l'utilitaire InstanciatedClasses.
§ Ajout d'un objet au référentiel, grâce à la méthode addObject (instance d'une classe), qui est
automatiquement invoquée par les instances des classes, lors de leur création.
Certaines classes de 2FLOW sont liées les unes aux autres par des relations aux cardinalités
multiples. C'est le cas des activités, des événements, des expressions logiques et des artefacts.
En effet, comme l'indique le métamodèle de 2FLOW, une activité peut être liée à plusieurs
événements ou plusieurs expressions logiques. Réciproquement, un événement peut
déclencher plusieurs activités ou concerner différentes expressions logiques qui à leur tour
peuvent déclencher plus d'une activité. Enfin, une activité peut utiliser plusieurs artefacts. Il
est donc nécessaire dans ces cas de gérer des ensembles d'objets, ce que nous réalisons à l'aide
de classes spécifiques que nous qualifions de "classes ensemble", qui appartiennent au niveau
Workflow. Par rapport aux classes que nous avons citées précédemment, cela revient à créer
les quatre classes suivantes : le vecteur d'activités (ActivityVector), le vecteur d'événements
(EventVector), les vecteurs d'expressions logiques (LogicalExpressionVector) et enfin le vecteur
d'artefacts (ArtefactVector).
En Java, un vecteur ("Vector") est une collection dynamique d'éléments de type quelconque.
Par dynamique on signifie que la dimension de la collection n'est pas fixée lors du
développement mais qu'elle évolue (en diminuant ou en augmentant) selon les retraits et les
ajouts d'éléments [CAMPIONE 97], [ECKEL 97]. Un vecteur se différencie donc d'un tableau
par le fait qu'il n'a pas de dimension fixe et par la possibilité d'y placer des objets de type
différent. Cette dernière propriété est à double tranchant : en effet, s'il est parfois pratique de
pouvoir placer toutes sortes d'objets dans un même ensemble, cela implique aussi qu'il n'y a
pas de vérification du type de ces objets. En d'autres termes, il est possible de mettre "tout et
n'importe quoi" dans un vecteur, ce qui n'est pas toujours l'objectif. En particulier dans notre
cas, nous nous intéressons plus aux propriétés dynamiques d'un vecteur qu'à son statut de
collection générique.
143
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Afin de tirer profit des caractéristiques des vecteurs en apportant toutefois un contrôle sur leur
contenu, nous avons conçu les six classes ActivityVector, EventVector, LogicalExpressionVector,
ArtefactVector, ProcessVector et RunnableComponentVector. Ces classes fonctionnent toutes sur
le même principe, ce sont des collections dynamiques d'objets du même type proposant des
méthodes de manipulation des objets qu'elles contiennent (en fait, il est plus exact en Java de
parler de références vers des objets). Ceux-ci correspondent respectivement dans 2FLOW à
des activités, des événements, des expressions logiques, des artefacts et des composants
exécutables. Ces types ont tous été présentés, mis à part le dernier que nous évoquerons dans
un prochain paragraphe. La modélisation UML d'une classe ensemble est proposée par la
figure 4.18. Le symbole générique XXX sert à remplacer le nom d'une classe Workflow.
XXXVector
# referential : InstanciatedClasses
XXX
+ XXXVector( )
+ addXXX (objetXXX : XXX ) *
+ getXXXAt ( i : entier ) : XXX
+ getXXX ( XXXname : chaîne) : XXX
+ setXXXAt (i : entier)
+ removeXXXAt ( i : entier )
+ removeXXX ( XXXname : chaîne)
+ checkXXXExistence ( XXXname : chaîne ) : booléen
+ size ( )
Plus concrètement, l'interface d'une classe ensemble écrite en Java ressemble à ce qui suit :
class XXXVector {
public XXXVector( );
public void addXXX (XXX);
public XXX getXXXAt (int);
public XXX getXXX (String);
public void setXXXAt (int);
public void removeXXXAt (int);
public removeXXX (String);
public checkXXXExistence boolean (String);
public int public size ( );
}
Remarquons que l'interface rajoute un attribut de type Vector, au diagramme UML. Il sert de
conteneur pour les objets de la classe XXX. La vérification du type est assurée par les
méthodes de la classe ensemble dont les arguments sont du même type que celui pour lequel
XXXVector est prévu. Par exemple pour la classe ActivityVector la méthode addActivity(Activity a)
permet de s'assurer que l'on ajoute bien une activité au vecteur.
Les noms des méthodes membres des classes d'ensemble et leur utilisation sont inspirés en
partie de celles de la classe Vector de Java. L'intérêt de procéder de cette façon est de rendre
plus familière l'utilisation des classes d'ensemble aux développeurs souhaitant en ajouter de
nouvelles au framework.
144
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Les classes du métamodèle de 2FLOW sont toutes héritières d'une classe abstraite de base
appelée WorkflowObject. Nous rappelons qu'une classe abstraite n'a pas d'implémentation et
que son rôle est en général de proposer un type de base muni d'un ensemble de propriétés et
de comportements bien définis. Nous avons volontairement choisi de ne pas la représenter sur
le métamodèle de 2FLOW car elle ne correspond pas en réalité à une entité Workflow. Le but
de cette classe est de factoriser un ensemble de propriétés et de mécanismes communs aux
classes Workflows de base, dans un objectif d'optimisation du code : c'est donc une classe
auxiliaire. Il est cependant intéressant de se pencher quelque peu sur son interface et d'en
décrire rapidement le rôle et l'intérêt des attributs et des méthodes.
public WorkflowObject( );
public String getPackageName( );
public String getRunningPackageName( );
public void setRunningPackageName(String);
abstract public initialize( );
public void setReferential(InstanciatedClasses);
synchronized public void wakeUp( );
Dans la notation UML, un package est un ensemble de classes logiquement reliées, à forte
cohérence interne et faiblement couplée avec l'extérieur [MULLER 98], [ROQUES et al. 98].
L'intérêt des packages est de fournir un moyen de structuration dès lors que le nombre de
classes d'une application augmente.
Les liens existant entre des packages sont << auxiliaires >> << métamodèle >>
des liens d'utilisation - ou liens d'importation
- qui sont concrétisés par les relations créées ActivityVector
Activité
*
entre les classes des packages (fig. IV.19).
Un lien d'importation signifie que certaines << import >>
EventVector
classes du package importateur nécessitent * Événement
145
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
La méthode abstraite initalize ( ) donc sans implémentation, sert à initialiser l'instance d'une
classe d'objet Workflow. En effet, les instances sont le plus souvent créés à partir de
constructeurs sans arguments. Cette façon de procéder permet en effet à la classe
"instanciatrice" de ne pas avoir à faire de supposition sur le contenu de la classe qu'elle
instancie, mais uniquement à en connaître le nom. Le contenu de la méthode initialize( ) est
construit par le concepteur du workflow à l'aide d'un formulaire spécifique qui le décharge du
codage de la méthode. Ce formulaire fait partie d'un éditeur que nous avons développé pour la
création rapide de workflows basés sur 2FLOW.
Nous ne détaillerons pas ici l'effet de la méthode wakeUp( ), que nous reverrons dans la partie
du chapitre concernant l'affichage des workflows.
int getState( );
void setState (int);
146
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
void start ( );
void run ( );
void resume ( );
void suspend( );
}
L'interface RunnableComponentStates permet de fixer sous une forme symbolique les états que
peuvent prendre les composants exécutables de 2FLOW (ceux qui implémentent l'interface
RunnableComponant) :
interface RunnableComponentStates {
int ACTIVATED = 0, WAITING = 1, APPOINTED = 2, RUNNING = 3, FINISHED
= 3, CANCELED = 4, STALLED = 5;
}
Il aurait été possible de représenter ces états sous une autre forme, par exemple à l'aide d'un
tableau de chaînes de caractères, correspondant chacune à un état donné. Le recours à une
interface permet cependant de créer un type de base régissant les états d'un composant
exécutable, ce qui lui permet d'être modifié, amélioré ou adapté aux besoins de d'éventuels
développeurs Workflows utilisant 2FLOW.
La classe StringVector est une classe auxiliaire du niveau utilitaire, c'est à dire qu'elle sert
uniquement comme outils de programmation. Comme son nom l'indique, cette classe est un
vecteur de chaînes de caractères, utilisé comme type pour certains attributs des classes de base
de 2FLOW.
public StringVector( );
public StringVector(StringVector other);
public void addString(String s);
public void empty( );
public String getStringAt(int i);
public boolean isString(String string);
public void removeAllStrings( );
public void removeString(String string);
public void removeStringAt(int i);
public void replaceStringAt(String string, int index);
public int size( );
public String toString( );
Il existe encore quelques classes auxiliaires que nous n'avons pas encore évoquées, qui sont
les classes des exceptions internes aux classes du framework. Ces classes dérivent de la classe
"Exception" de Java et non de la classe Exception de 2FLOW car ce ne sont pas des exceptions
Workflows telles que nous les avons définies au chapitre 3. Nous ne détaillerons pas ici ces
classes car elles concernent des mécanismes de bas niveau du framework. Nous y ferons
néanmoins référence lorsque cela sera nécessaire au cours des explications qui vont suivre.
147
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Dans la majorité des cas, l'architecture des systèmes Workflow est centralisée, c'est à dire
qu'elle est composée de plusieurs éléments dont l'un est le c œur du système. Dans le chapitre I
nous avions donné une vision globale de l'architecture d'un système Workflow, en reprenant
le schéma de référence proposé par la Workflow Management Coalition. Ce schéma montre
que le composant principal de ces systèmes est représenté par le "moteur Workflow", encore
parfois appelé par abus de langage "serveur Workflow". Ce dernier est en fait la composante
chargée de l'échange des messages entre le système et les utilisateurs, ainsi que de
l'interconnexion des workflows en cours avec des ressources et/ou des processus distants. En
quelque sorte, on peut dire que le serveur "encapsule" le moteur Workflow. Globalement, le
rôle du moteur est d'exécuter les modèles de processus qui ont été établis au préalable dans la
phase de construction (build time). C'est lui qui instancie les éléments du modèle, qui les
exécute et qui se charge de leur élimination lorsqu'ils ne sont plus utiles. Le moteur transmet
également les messages aux listes de tâches (worklists) des acteurs des processus, via les
services du serveur.
L'approche adoptée dans 2FLOW est différente, principalement parce qu'il n'y a pas de
moteur Workflow. Nous avons en effet opté pour une exécution répartie des composants d'un
Workflow. Par répartie nous ne signifions pas (pour le moment) que l'exécution est distribuée
sur des sites géographiquement distants mais qu'elle est distribuée sur l'ensemble des éléments
du Workflow, qui peuvent à la limite être répartis sur différents sites. En d'autres termes,
chaque composant participe à l'exécution de l'ensemble du processus par l'intermédiaire des
comportements qui sont définis au niveau des classes de base du framework.
Instance y : classe Y 2.a.n+m : Création
Instance t : classe T
2.a.n : Création
Classes non
instanciées
Classe W
Message entre objets [Link] : mise en parallèle nom : Classe : Instance d'une classe
Réaliser les processus de façon collaborative apporte plus de flexibilité à l'exécution. En effet,
le principe de fonctionnement global du framework, que nous allons détailler sous peu,
consiste à n'instancier que les classes dont on a besoin à un instant t de l'exécution. Cela évite
d'une part de surcharger le système sous-jacent, et d'autre part, cela permet de modifier, en
cours d'exécution, les classes qui n'ont pas encore été instanciées. L'instanciation des classes
se fait par propagation, c'est à dire que chaque instance qui en a les compétences, instancie la
ou les classes avec lesquelles elle communique. Ainsi, toute classe du framework joue un rôle
déterminé qui lui permet d'apporter sa contribution à la réalisation de l'ensemble du processus.
148
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
On pourrait comparer l'exécution d'un workflow à une "vague de dominos", chaque pièce
propageant l'impulsion à une ou plusieurs autres, pour enfin réaliser l'ensemble d'une figure
(fig. IV.20).
Bien entendu, le rôle des classes ne se borne pas à en instancier d'autres. La réalisation du
workflow se fait donc en combinant les deux aspects : d'une part grâce au comportement
spécifique des classes qui leur permet de collaborer et de remplir leur "part du contrat", et
d'autre part, par l'instanciation d'autres classes – donc la propagation de l'exécution.
Jusqu'à présent, l'approche de l'exécution répartie (au sens où nous l'avons définie) est adoptée
par très peu de systèmes Workflows. Dans le paragraphe consacré à la comparaison de
2FLOW avec d'autres systèmes et d'autres architectures, nous nous intéresserons à la façon
dont deux systèmes Workflows (dont celui de Baan) la mettent en œuvre.
Lors de l’exécution d’un programme, il est parfois intéressant de découper le flux d’exécution
principal en plusieurs autres flux - ou sous-processus - s’exécutant indépendamment. L’intérêt
de la création de sous-processus est de permettre la réalisation parallèle de différentes parties
d’un programme et/ou de répartir des tâches spécifiques sur des unités spécialisées. Par
exemple, supposons que l’exécution de certains composants d’une application est rattachée à
l’occurrence d’un événement ou à la libération d’une ressource. Il est alors préférable de les
dissocier du reste des composants de l’application afin de ne pas en suspendre inutilement
l'exécution. C’est, par exemple, le cas des interfaces graphiques ou l’on dissocie l’exécution
des composants qui réagissent à des événements (comme les boutons) du reste de
l’application. Un
thread
Nous nous intéressons particulièrement à deux méthodes des threads : "start( )" et "run ( )".
Start( ) signale au thread qu'il peut commencer et effectue certaines initialisations préalables
(qui sont à la charge du programmeur) avant d'appeler la méthode run( ) laquelle contient le
code à exécuter par le thread, tant qu'il n'est pas arrêté ou suspendu.
Si la possibilité d'isoler des tâches et de les exécuter en parallèle est un avantage indéniable
des threads, leur utilisation présente certains risques, en particulier lors de l'accès aux
ressources ou de l'appel de procédures. En effet, chaque thread étant une entité indépendante,
alors plusieurs threads d'un même programme peuvent tenter d'accéder simultanément à une
même ressource ou faire appel à une même fonction. Cela peut bien évidemment s'avérer
149
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
dangereux, par exemple lors de l'accès aux informations d'une base de données. Pour
empêcher l'accès simultané aux méthodes des autres objets par différents threads, Java
propose de synchroniser l'appel des méthodes, par le mot clé "synchronized". Une méthode ou
un attribut synchronisé ne peut être utilisé que par un seul thread à la fois.
La notion de thread est très importante pour le Workflow et en particulier pour 2FLOW, étant
donné que l'exécution des processus ou des sous-processus est souvent réalisée en parallèle et
qu'il y a des accès concourants aux ressources.
L'exécution des workflows est principalement régie par deux composants fondamentaux que
nous avons traités dans le paragraphe consacré à la vue comportementale de 2FLOW. Il s'agit
des événements et des blocs de contrôle de flux. Dans les paragraphes qui vont suivre, nous
décrivons en détail les mécanismes qui sont mis en œuvre par ces deux composants dans la
réalisation des workflows, et par tous les autres composants concernés. Mais auparavant, il
convient d'apporter une nuance sur l'utilisation du terme "exécution". L'exécution d'un
workflow correspond à l'appel d'un programme exécutable (par exemple à partir de la ligne de
commande d'un système d'exploitation) et à la réalisation de l'ensemble de ses activités et
sous processus. Par ailleurs, nous employons souvent le terme "exécution" pour exprimer la
réalisation d'une activité au sein d'un workflow. Ainsi, sauf contre indication, lorsque les
termes "exécution" et "exécutable" sont associés à des composants de 2FLOW, ils concernent
respectivement la réalisation d'un composant, et sa capacités à générer son propre flux de
contrôle (thread).
Dans le framework 2FLOW, un workflow est représenté par la classe Processus, qui est la
première a être instanciée lors de l'initialisation du workflow. Indiquons ici que la classe
processus est exécutable - au sens Java - c'est à dire qu'elle contient une méthode main ( ), lui
permettant d'être exécutée en tant que programme. L'exécution d'un workflow construit à
l'aide de 2FLOW étant distribuée, nous avons dit dans le paragraphe [Link], que toutes ses
classes n'étaient pas immédiatement instanciées lors de son initialisation. En réalité,
l'initialisation d'un processus entraîne la création simultanée d'un nombre minimum d'objets
qui vont permettre au workflow de "démarrer".
En tout premier lieu, le processus crée le référentiel du workflow auprès duquel toutes les
instances des classes participant au processus devront s'inscrire lors de leur création,
processus inclus. Chaque processus crée son propre référentiel lorsqu'il est instancié. Si un
sous-processus est créé au sein d'un autre processus, il s'enregistre d'abord dans le référentiel
de ce dernier avant de créer son propre référentiel et de s'y inscrire.
La deuxième étape consiste à instancier les classes des acteurs susceptibles de participer au
processus. Rappelons que l'affectation d'acteurs au processus se fait pendant la phase de
modélisation - lors de la création de la classe processus - en indiquant leur nom, qui
correspond à celui de leur classe. Le nombre d'acteur n'est toutefois pas figé lors de la
modélisation. En effet, le nom des acteurs impliqués dans le processus est stocké dans un
attribut de la classe Processus appelé "actorsNames", de type StringVector, qui n'est pas de
dimension fixe. La classe Processus dispose également d'une méthode particulière appelée
"addActor (Actor)", permettant d'ajouter un acteur au processus au cours de son exécution.
Nous reviendrons plus en détail sur l'ajout d'éléments à un workflow en cours d'exécution
dans la partie du chapitre dédiée à la flexibilité.
150
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Enfin la dernière étape consiste en l'émission d'un événement générique Start qui va instancier
les premières activités du processus – celles auxquelles il est relié. Le mécanisme utilisé par
Start est identique à celui de la classe Evénement de 2FLOW.
Les paragraphes qui vont suivre affinent encore un peu plus la granularité et la technicité de la
description du fonctionnement des composants de 2FLOW. Le lecteur ne souhaitant pas
rentrer dans ces détails peut contourner ces paragraphes, quitte à y revenir par la suite, pour
une meilleure compréhension du framework.
[Link] Evénements
Dans 2FLOW, un événement est émis par une activité ou est créé en conséquence d'un fait
externe au workflow. Dans le premier cas, l'activité concernée instancie la classe
correspondant à l'événement. Dans l'autre cas, les événements sont "injectés" dans le
workflow par les utilisateurs du système via leur interface ou par des applications externes via
des points d'entrée du système.
§ L'événement peut être relié à une ou plusieurs activités en sortie, dont les noms sont
contenus dans un attribut activitiesNames de type StringVector. Afin de propager
l'exécution, l'événement doit notifier au moment de son émission les activités
auxquelles il est relié. Pour ce faire, il doit au préalable vérifier que ces activités ont
été instanciées, ce qu'il fait en invoquant la méthode checkClassExistence(nom de
l'activité) du référentiel. Chaque classe n'étant pas encore référencée – donc non
instanciée – l'est alors par l'événement. L'ensemble des activités est par la suite notifié
de l'occurrence de l'événement via l'invocation de la méthode getActivated( ) de la
classe activité, qui la fait passer à un état d'attente identifié par WAITING.
Remarquons que l'événement peut être à la fois lié à des activités, à des expressions logiques
et à des processus. L'ensemble des possibilités est testé lors de l'instanciation d'un événement,
par l'appel de la méthode notifyNext( ) de la classe. Enfin, les références des activités et des
151
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
expressions logiques instanciées sont respectivement stockées dans les attributs activities de
type ActivityVector et expressions de type LogicalExpressionVector.
:InstanciatedClasses
* [ := 1.. nbr élements]
3 : checkClassExistence(nom classe
)
1 : créer
:Evénement * [ 1.. nbr éléments ] : 5 : activation
:Elément à notifier
2 : notifyNext( )
* [:= 1.. nbr éléments non Éléments à notifier : terme générique pour désigner les activités,
instanciés ] : 4.a : créer les expressions logiques et les processus
activation : terme générique pour désigner la méthode
:Elément à notifier permettant d’activer l’instance de la classe =
• getActivated( ) pour les activités et les processus
• registerEvent pour les expressions logiques
créer : terme générique pour désigner le constructeur de
la classe
[Link] Exceptions
Dans 2FLOW, nous distinguons deux niveaux d'abstraction pour représenter les exceptions,
que nous qualifions pour le premier de "niveau Workflow" et le second de "niveau interne".
Les exceptions Workflows correspondent à la définition que nous avons donnée au chapitre
III : elles concernent directement la logique d'exécution du processus, au niveau duquel elles
sont situées. Les exceptions internes quant à elles, sont localisées au niveau des mécanismes
des classes de 2FLOW, c'est à dire qu'elles traitent des problèmes liés à l'implémentation et à
l'utilisation des classes du framework en tant qu'objets informatiques et non en tant qu'entités
Workflows.
Une exception Workflow est donc un événement Workflow - certes particulier - dont elle
récupère l'ensemble des propriétés. Le fait d'assimiler une exception à un type d'événement
particulier présente un intérêt majeur. En effet, nous avons vu que tout événement disposait
d'un ensemble d'activités et d'expressions logiques à notifier. Elles correspondent, dans le cas
des événements, aux activités du flux normal du workflow. Nous avons vu dans le chapitre III
que le traitement d'une exception est le plus souvent réalisé à l'aide d'un gestionnaire dont le
travail est de déclencher une procédure spécifique. Il s'agit en général d'une activité ou d'un
processus particuliers. Par conséquent, l'émission d'une exception résulte en l'exécution d'une
certaine tâche (au sens large). Or c'est justement ce que font les événements de 2FLOW, il est
donc logique qu'une exception puisse tirer profit de ce comportement.
152
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Si la dynamique des workflows est engendrées par les événements, son contrôle est du ressort
des blocs de contrôle de flux (BCF). Les BCF sont des classes de 2FLOW dédiées au contrôle
du flux des activités, c'est à dire de l'ordre dans lequel elles vont s'exécuter. Nous distinguons
trois sortes de BCF correspondant aux trois types de flux : séquentiel, parallèle et bouclé,
dérivant tous de la même classe abstraite de base BCF.
Une fois le composant inscrit chez le BCF, il doit attendre la satisfaction d'une certaine
condition dépendant du type du BCF, avant de pouvoir s'exécuter. Une fois la condition
satisfaite, le BCF invoque la méthode start( ) du composant exécutable.
Enfin, tout composant ayant achevé son exécution doit en rendre compte au BCF qui le
référence, en appelant la méthode notifyFinished(RunnableComponent) de ce dernier, et en se
passant lui-même en argument (pointeur "this"). Quand tous ses composants ont terminé, le
BCF passe à l'état FINISHED et notifie à son tour son BCF conteneur. Remarquons que si le
BCF est le premier de la hiérarchie – ce qui est indiqué lors de la modélisation à l'aide d'un
attribut booléen isMaster initialisé à "vrai" - alors il n'a évidemment pas à s'envoyer de
notification.
Le fonctionnement générique d'un BCF et ses échanges avec son environnement sont
représentés par le diagramme de séquence de la figure IV.23 :
RegisterComponent(this)
addComponent(component)
[ si condition satisfaite ] :
start ()
[ if finished ] :
notifyFinished(this)
Si tous les composants
ont terminé :
notifyFinished(this)
153
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
BCF Séquentiels
Les BCF séquentiels permettent d'assurer que les éléments qui les composent sont exécutés de
façon séquentielle. Au premier abord, il peut paraître étrange d'avoir à introduire un
contrôleur de flux séquentiel, puisqu'il semble logique que les activités soient réalisées "par
défaut" de façon séquentielle, notamment grâce aux événements de fin d'activité. Toutefois,
laisser l'exécution à la seule responsabilité des événements peut parfois poser des problèmes
et il est nécessaire d'y apporter un contrôle. Pour le démontrer, considérons l'exemple suivant,
illustré par la figure IV.24 :
Pour exécuter les composants en attente, la méthode addToAwaitingComponents fait appel aux
services de startNextComponent( ). Cette dernière compare le nom de la classe de l'instance se
trouvant au début de la file avec le nom de celle qui se trouve à la position nextToRun dans le
vecteur de noms. Cet attribut est un indice servant à repérer la prochaine activité à exécuter.
154
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Vecteur de noms
A1 A2 A3 A4 A1 A2 A3 A4
Dossier Dossier
administratif médical
ET OU
Etablir dossier Etablir dossier Opérer Facturer
administratif médical
Arrivée d’un
patient
Date
€ € € €
Urgence
opération
Evénement
€ Rôle Données opérateur
155
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Dans ce processus, les activités sont bien exécutées séquentiellement - surtout dans le cas
"normal" - le cas "anormal" étant représenté par la nécessiter d'opérer le patient d'urgence.
Dans cette situation, il est nécessaire de "brûler" les deux premières étapes pour commencer
directement par l'activité "opérer". Or si ces activités sont gérées par un même BCF_S, les
mécanismes de contrôle de ce dernier font qu' "opérer" ne pourra s'exécuter avant la fin des
activités précédentes, même si l'événement "urgence" a lieu.
Pour résoudre ce problème, nous proposons deux solutions : la première consiste à munir les
classes Activité et Processus d'un opérateur booléen que nous nommons isFree. Ce dernier, s'il
est mis à "vrai" lors de la modélisation, indique que l'activité en question a le droit de
s'exécuter, même si elle n'est pas candidate dans la file d'attente.
La deuxième solution est similaire et consiste à introduire dans ces mêmes classes, un
opérateur booléen nommé isExceptional, dont la mise à "vrai" rendrait possible l'exécution
anticipée d'un composant. En effet, nous avons dit que le besoin d'opérer d'urgence un patient
correspondait à un cas "anormal", donc exceptionnel. Par conséquent, l'événement urgence
pourrait correspondre à une exception, dont la prise en charge est assurée par l'activité
"opérer". En effet, rien n'empêche d'utiliser les mêmes activités d'un processus pour traiter les
exceptions. Nous avons donc décidé de munir les classes Activité et Processus d'une méthode
appelée setExceptional( ) pouvant être invoquée par des exceptions auxquelles ces classes
seraient reliées. L'appel de cette méthode affecterait la valeur "vrai" à l'attribut isExceptionnal,
rendant alors possible l'exécution de l'activité ou du processus en question.
Techniquement, ces deux solutions répondent efficacement au problème posé. Toutefois, il est
important de se poser la question de savoir comment est réalisé la suite du processus, après la
réalisation d'un composant "libre" ou "exceptionnel". En effet, dans le cas de notre exemple,
même si l'opération a lieu, il est impératif de dresser les dossiers administratifs et médicaux
du patient. Par conséquent, une fois l'activité "opérer" terminée, il est nécessaire de reboucler
vers les étapes précédentes et non de continuer vers la facturation. Le problème ne se situe
alors plus au niveau du framework, mais à celui de la phase de conception qui doit aboutir à
une modélisation juste et efficace de la situation. Dans le cadre de l'exemple, le modèle
proposé est incomplet et il est nécessaire d'y introduire des boucles et des conditions qui
permettent de reprendre l'ordre normal - établir les dossiers – sans bien sûr repasser par
l'activité "opéreré".
Pour clore le paragraphe sur les BCF_S, nous allons reprendre l'exemple de la figure 4.23 que
nous avions utilisé pour expliciter l'intérêt des BCF_S. La représentation interne de ce cas
dans un BCF_S de 2FLOW est la suivante :
156
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Si l'on applique les mécanismes de 2FLOW que nous avons déjà présentés, alors BCF_S3 ne
peut être réalisé avant BCF_S2, puisqu'ils sont disposés dans cet ordre. De plus, si c'est la
première activité de BCF_S3 qui est instancié par le choix exclusif, elle ne pourra jamais
s'exécuter étant donné que BCF_S2 n'a pas encore été réalisé. Il y a donc un blocage et pour le
résoudre, nous avons ajouté une règle à la méthode startNextComponent. Cette règle dit que si
plusieurs BCF_S sont consécutifs dans un autre BCF_S, alors c'est le premier à s'exécuter qui
est pris en compte. Le pointeur nextToRun est ensuite déplacé jusqu'à l'élément suivant le
dernier BCF_S. En effet, on ne peut avoir de BCF_S consécutifs que dans le cas où leur
première activité dépend d'un choix exclusif, ce qui est notre cas dans l'exemple. Remarquons
que si le choix est multiple (un OU), alors certains BCF risquent de s'exécuter en parallèle et
il est donc nécessaire de les inclure au préalable dans un bloc de ce type.
BCF parallèles
Un BCF parallèle (BCF_P) permet d'exécuter ses composants en parallèle. Le type bloc
parallèle est le moins contraignant au niveau de l'exécution. En effet, nous avons vu que
chaque composant exécutable est muni de deux méthodes start et run, qui permettent de
l'exécuter en tant que thread indépendant. Le travail d'un BCF_P se limite donc à enregistrer
les références des instances de ses composants et d'en invoquer la méthode start pour lancer
leur exécution. A l'instar des autres BCF, le BCF_P est notifié de la fin de chaque composant
ce qui lui permet à son tour de signaler qu'il a terminé à son BCF conteneur.
BCF Boucles
Bien que 2FLOW prévoie deux types de BCF boucles (BCF_B), nous n'en avons implémenté
qu'un au niveau du framework, qui est le BCF_For. Ce bloc permet d'exécuter un nombre n
fixé de fois l'ensemble des composants qu'il contient. Notons bien que c'est l'ensemble qui est
exécuté n fois et non chaque composant individuellement. Pour ce faire, le BCF_For dispose
d'un attribut appelé internalCounter qui est incrémenté à chaque fois que les composants du
BCF sont tous terminés. La boucle se poursuit tant que le compteur n'atteint pas la valeur
fixée dans l'attribut numberOfLoops fixé lors de la modélisation.
[Link] Activités
Nous avons vu que dans 2FLOW, il n'y a pas de distinction entre activités "humaines" et
activités "automatiques". La distinction est transparente au niveau du système ainsi qu'au
niveau du concepteur du workflow qui n'a qu'à se préoccuper d'identifier le ou les rôle(s)
nécessaire(s) à la réalisation d'une activité. Par conséquent, le travail de la clase Activité dans
le framework se limite à deux choses :
Nous allons donc examiner la façon dont les activités de 2FLOW prennent en charge ces deux
tâches :
1. La notification d'un acteur de la présence d'une activité à exécuter est réalisée par
l'invocation de la méthode notifyActor( ) de la classe Activité. Cette méthode, dont nous
157
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Nous avons dit que lors de la modélisation d'un workflow, il suffit au concepteur
d'associer le nom des rôles pouvant réaliser les activités à ces dernières. On peut imaginer
toutefois que ce concepteur émette une certaine préférence pour l'un ou l'autre des acteurs
lors de l'attribution effective de l'activité à l'un d'entre eux. Nous avons donc prévu dans le
framework de permettre aux concepteurs de spécifier un niveau de préférence pour le
choix d'un acteur dans le traitement d'une activité. Pour ce faire, nous avons, entre autres,
doté la classe Activité de quatre attributs spécifiques : "roleName", "actorName", "actor" et
"demandLevel".
...
protected String roleName;
protected Actor actor;
protected int demandLevel;
protected String actorName;
...
L'attribut actorName correspond au nom de l'acteur qui devrait être choisi de préférence.
Cet attribut peut ne contenir aucune valeur mais s'il en a, il s'agit de définir à quel point il
est important que ce soit cet acteur qui traite l'activité. Cela est réalisé à l'aide de l'attribut
demandLevel, qui peut prendre les valeurs 0, 1 et 2, 1 étant la valeur par défaut. Le 0
indique que n'importe quel acteur tenant le rôle indiqué par roleName est susceptible d'être
sélectionné. La valeur 1 indique que si le nom d'un acteur a été fourni, alors celui-ci devra
être choisi en priorité, en fonction de ses disponibilités. En d'autres termes, si l'acteur en
question n'est pas disponible, alors n'importe quel autre tenant le même rôle pourra
convenir. Enfin, la valeur 2 est la plus contraignante puisqu'elle indique que seul l'acteur
dont le nom a été mentionné doit exécuter l'activité.
Situations bloquantes
Choisir une préférence (demandLevel) de niveau 2 pour le choix de l'acteur peut amener à
des situations bloquantes où l'acteur n'étant pas disponible (par exemple, s'il est en
vacance), l'activité n'est jamais réalisée. Pour éviter ce blocage et le résoudre s'il a lieu,
nous avons prévu dans 2FLOW des algorithmes de détection et de résolutions de
situations bloquantes. En effet, lors de l'affectation d'un acteur à la réalisation d'une
activité, cette dernière passe à l'état d'APPOINTED - donc affectée. Lorsque l'acteur
commence à exécuter l'activité, celle-ci passe - nous verrons comment - à l'état de
RUNNING, donc en cours d'exécution. L'algorithme de détection de blocage que nous
158
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
avons implémenté a comme principe de vérifier que l'activité passe suffisamment vite de
l'état d'affectation à celui d'exécution. Dans le cas contraire, un blocage est détecté et
l'activité passe à l'état STALLED. La solution consiste ensuite à "casser" la contrainte et
rechercher un autre acteur disponible. Dans 2FLOW, la détection du blocage se fait au
niveau de l'activité. Si l'acteur n'est pas trouvé, une exception NoActorFoundException est
émise par l'activité, puis prise en charge par un gestionnaire approprié qui met en œuvre la
solution de relaxation de la contrainte.
§ La contrainte sur le choix d'un acteur peut-elle être allégée par l'activité elle-même ou
faut-il faire remonter le problème à un autre niveau, par exemple vers le concepteur du
workflow ? Tout en étant conscient du fait que cette procédure peut être coûteuse en
temps.
Au niveau de la version actuelle de 2FLOW, nous en restons à la méthode que nous avons
choisie, c'est à dire laisser à l'activité le soin de détecter un blocage et d'émettre une
exception en direction du gestionnaire approprié. Nous rediscuterons néanmoins de cette
question dans le paragraphe sur la flexibilité dans 2FLOW.
Dans les cas où le niveau de préférence sur l'acteur est de 0, la recherche de l'acteur
approprié s'effectue par l'activité via les services du référentiel, où est répertorié
l'ensemble des objets créés dans le workflow. Pour ce faire, le référentiel fournit une
méthode appelée retrieveInterfaceImplementor(String). Cette dernière effectue une recherche
sur les classes du référentiel en comparant le nom des interfaces implémentées par les
objets testés. Dans sa tâche, cette méthode en fait appel à une deuxième nommée
"getInterfaces( )" implémentée par la classe "Class" définie par le langage Java. Les
instances de cette classe sont en fait les autres classes écrites en Java, pour lesquelles elle
est donc une sorte de métaclasse commune. Son grand intérêt est de proposer des
mécanismes réflexifs sur les classes, permettant à tout objet Java de connaître la
généalogie de ses ancêtres (classes mères, grands-mères, etc.), l'ensemble de ses attributs
et de ses méthodes (hérités ou propres) ainsi que les interfaces qu'il implémente, grâce à la
méthode "getInterfaces( )".
Dans le cas où la préférence sur le choix de l'acteur est de niveau 2, alors l'activité invoque
la méthode retrieveObject(String) du référentiel, en lui passant le nom de l'acteur comme
argument. Cette méthode renvoie elle aussi une référence vers l'objet acteur, stockée dans
l'attribut actor.
159
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Enfin si la préférence est de niveau 1, alors l'activité tente d'abord de récupérer l'acteur
grâce à retrieveObject( ) ou fait appel à la méthode retrieveInterfaceImplementor(String) en cas
d'échec.
Une fois la référence de l'acteur connue, il s'agit de lui "demander" de réaliser l'activité en
question. En effet, nous avons dit que chaque activité associée à un rôle correspond à une
méthode des acteurs implémentant le rôle. Par conséquent pour réaliser une activité, il
convient d'invoquer la méthode correspondante chez l'acteur sélectionné. C'est le travail
de la deuxième partie de la méthode notifyActor( ). Il consiste à récupérer la signature de
l'ensemble des méthodes de l'acteur, à l'aide de la méthode "getMethods( )" de la classe
"Class". Celle-ci renvoie un tableau d'objets de la classe "Method" de Java duquel on
extrait la méthode ayant le même nom que l'activité. Cette classe dispose d'une méthode
appelée "invoke( )", permettant d'invoquer indirectement la méthode d'un objet en lui
passant la référence de celui-ci et un tableau d'arguments. Ceux-ci consistent en général en
un vecteur de références sur les artefacts nécessaires à la réalisation de l'activité, ainsi que
la priorité de l'activité. Ces notions seront approfondies par la suite. Le code ci-dessous est
extrait de notifyActor( ) et permet d'illustrer cette procédure :
actorMethods = ([Link]()).getMethods();
className = [Link]([Link]('.') + 1,
[Link]()); // permet de récupérer le nom de la classe sans
ses packages
for (int i = 0;((i < [Link]) && (!found)); i++) {
String methodName = actorMethods[i].getName();
methodName = [Link]([Link]('.') + 1,
[Link]());
if (([Link]()).indexOf([Link]()) > -1)
{
found = true; // transforme le nom de la classe en minuscule
toInvoke = actorMethods[i];
}
}
...
[Link](actor, new Object[0]);// invocation de la méthode
2. Outre la notification des acteurs, l'autre "tâche" des activités consiste à émettre des
événements. En fait, mis à part les événements de fin et de blocage, une activité ne sait
pas d'elle-même quel événement il faut envoyer. C'est donc soit par l'intervention des
méthodes des acteurs, soit par des objets extérieurs que les événements sont émis. Pour ce
faire, la classe Activité dispose de la méthode sendEvent(String) qui indique à l'activité
qu'elle doit émettre l'événement dont le nom est passé en argument. Par ailleurs, la classe
Activité dispose de deux attributs, eventClasses, de type StringVector, qui contient les noms
des événements qu'elle peut émettre et events, de type EventVector, qui contient la
référence des instances d'événements créés par l'activité. Les noms des événements émis
par l'activité sont à ajouter à l'attribut eventClasses lors de la modélisation. Il convient bien
entendu que les classes de ces événements soient définies au préalables ou au même
moment. A l'opposé, le vecteur d'événements n'est rempli qu'au fur et à mesure de leur
émission.
160
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Un acteur pouvant tenir plusieurs rôles, il est possible qu'il se voie affecté de plusieurs
tâches à réaliser. Certaines tâches pouvant être plus importantes que d'autres, nous avons
introduit un attribut nommé priority, dont la valeur, comprise entre 1 et 10, permet
d'indiquer la priorité d'une activité sur les autres. Nous avons choisi cet intervalle car il
correspond aux priorités des threads de Java. La priorité d'un thread fait qu'il sera choisi
par l'ordonnanceur ("scheduler") de Java avec plus ou moins d'avantage, pour être
exécuté. La priorité d'une activité s'applique à deux niveaux : au niveau de l'exécution des
méthodes run dans un BCF, et au niveau des acteurs qui classeront les appels de méthodes
par ordre de priorité. Remarquons que la priorité d'une activité au premier niveau ne
s'applique que dans les BCF parallèles où l'ordre d'exécution est libre. Dans les autres cas,
seule la priorité au niveau de l'acteur est appliquée.
8 10 2 8 10 2
BCF_S BCF_P
A1 A2 A3 A1 A2 A3
A1 A1
A2 A2
A3
A3
A2
A2
A1
A3
activité flux
Temps imparti à priorité
l'exécution
Evénements génériques
La classe Activité émet deux événements génériques, l'un est l'instance de la classe
EndOfActivity qui sert à signaler la fin de l'activité et l'autre, issu de la classe ActivityStalled
sert à signaler une situation de blocage. L'événement EndOfActivity est émis
automatiquement par une activité lorsqu'elle prend fin. Elle en invoque les méthodes
setActivites(StringVector) et setExpressions(StringVector), en leur passant respectivement les
noms des activités suivantes et des expressions logiques à notifier de la fin de l'activité.
: Activité : InstanciatedClasses : BCF : Acteur : EndOfActivity
getActivated( )
addObject(this)
registerComponent(this)
notifyFinished(this)
créer
161
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
[Link] Acteurs
Les classes d'acteurs sont, nous l'avons dit, les représentantes informatiques des vrais acteurs
du workflow. Au niveau de la classe abstraite de base, seuls sont définis les comportements et
les propriétés fondamentales d'un acteur. Parmi ceux-ci, nous nous intéressons
particulièrement à la façon dont un acteur gère l'invocation de ses méthodes, et aux
différences qui existent entre acteurs humains et acteurs automatiques.
Dans le paragraphe concernant les activités, nous avons introduit la notion de priorité en
mentionnant les niveaux où elle s'applique, notamment celui de l'acteur. Nous n'avons
toutefois pas précisé la façon dont ces priorités étaient prises en compte lors de l'appel des
méthodes des acteurs. Par ailleurs, la partie de code que nous avons montrée, ne correspond
en fait qu'à l'un des deux cas de figures qui se sont présentés lors de la conception du
framework, et qui sont :
1. Dans le premier cas, on décide de laisser le vrai acteur gérer lui-même la façon de traiter
les activités qui lui sont affectées, et par conséquent leurs priorités. L'approche consiste
uniquement à invoquer les méthodes des acteurs sans se préoccuper de leur gestion -
comme c'est le cas dans le code que nous avons montré. Les références des activités qui
invoquent les méthodes des acteurs sont stockées dans un vecteur nommé activities. Ce
dernier est utilisé par chaque méthode d'un acteur pour signaler à l'activité en question
qu'elle a terminé - ou qu'elle est bloquée.
Le choix de laisser le vrai acteur gérer lui-même ses activités n'est pas une façon de
contourner le problème. En effet, nous le verrons par la suite, les méthodes d'un acteur
2FLOW effectuent un traitement spécifique en direction de l'acteur réel. Ce traitement est
défini au préalable par les concepteurs de la classe en question. Dans le cas d'un acteur
automatique de type robot par exemple, il peut s'agir de l'invocation d'une des commandes
du robot, pour laquelle l'appel n'entraîne pas une exécution immédiate mais une mise en
mémoire tampon. En effet, on peut supposer que le robot est programmé pour "décider"
lui-même de la façon dont il va réaliser l'appel de ses commandes. Par conséquent, la
méthode de l'acteur 2FLOW "Robot" n'aura pour rôle que d'invoquer la commande avec
les paramètres qu'elle nécessite, parmi lesquelles éventuellement l'ordre de priorité. Il n'est
pas nécessaire dans ce cas, de gérer les priorités au niveau de l'acteur 2FLOW.
2. Le deuxième cas de figure consiste à dire à l'opposé, que la gestion des activités doit être
réalisée au départ par l'acteur informatique. Nous avons étudié cet aspect et développé une
implémentation adéquate, que nous n'utilisons pas pour le moment. Cette approche
consiste à munir la classe Acteur de base, d'un attribut et d'une méthode particuliers.
L'attribut, nommé activities comme dans le cas précédent, est un vecteur à deux
dimensions. La première sert à stocker le nom d'une méthode de l'acteur et la deuxième, à
stocker ses arguments sous la forme d'un tableau d'objets. L'indice de la ligne du vecteur
correspond à l'importance de la tâche à réaliser. Plus celle-ci est importante et plus elle se
rapproche du début du vecteur.
162
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Au lieu d'invoquer directement les méthodes qui les concernent, les activités vont faire
appel à la nouvelle méthode execute(String, Object[ ], int) de la classe acteur, en lui passant
comme arguments : le nom de la méthode à invoquer (qui est le nom de la classe activité),
la liste de ses arguments sous la forme d'un tableau d'objets, et la priorité de l'activité (qui
correspond à la valeur de l'attribut priority). A l'instar des BCF_S, la méthode execute se
charge ensuite d'insérer les valeurs de ses arguments au sein du vecteur activities, à la
position correspondant à la priorité. La dernière étape pour la fonction consiste à invoquer
la méthode référencée par le premier élément du vecteur activities, élément qu'elle retire
par la suite. L'invocation de la méthode se fait de la même façon que dans le cas n°1, c'est
à dire en créant un objet Java "Method" pour la méthode en question, dont on appelle la
fonction "invoke" en lui passant la référence de l'acteur courant et les arguments de la
méthode, récupérés du vecteur activities. De même, chacune des méthodes qui prend fin
notifie l'activité correspondante.
Il est important de remarquer que quelle que soit la stratégie de gestion adoptée, il convient
qu'elle le soit pour tous les acteurs, afin de préserver l'indépendance entre processus et
réalisation. Le cas contraire forcerait, en effet, les concepteurs des workflows à connaître des
informations spécifiques sur les acteurs (afin de savoir comment invoquer les méthodes), ce
qui n'est pas le but recherché.
Acteurs humains
La plupart des systèmes Workflows sont, nous l'avons mentionné, plutôt dédiés à des
utilisateurs humains. En général, les activités de ce type d'acteur sont représentées sous la
forme de messages, de notes ou de documents électroniques (formulaires) déposés dans une
liste de tâches (worklist) attribuée à l'acteur en question. C'est elle qui, le plus souvent, est
chargée de trier les tâches en fonction de leur importance. Au besoin, des documents
électroniques sont attachés à l'activité.
Ce mécanisme de base est suffisant pour les acteurs humains qui savent comment traiter les
activités qui leur sont affectées, et il suffit donc d'associer une liste de tâches à ces acteurs.
2FLOW étant un framework et non un système Workflow à part entière, il ne propose que
des composants fondamentaux, aux interactions prédéfinies leur permettant de collaborer et
de s'exécuter de façon autonome. Un certain nombre d'outils de base qui accompagnent en
général les systèmes Workflows, n'ont pas été développés, c'est notamment le cas des
applications clientes telles les listes de tâches.
Toutefois, quelle que soit la méthode invoquée chez un acteur humain, celle-ci fait toujours
appel par défaut à une méthode de base appelée sendActivity( ). Celle-ci a pour effet d'envoyer
un message électronique à l'acteur, contenant des informations sur l'activité (issue de son
attribut description) et éventuellement des artefacts attachés, si ceux-ci sont de type fichier
(code, documents électroniques, formulaire, etc.). Les adresses électroniques d'un acteur
humain, ainsi que les informations le concernant sont des attributs de base de la classe
ActeurHumain :
...
protected StringVector eMailAdresses;
protected StringVector phoneNumbers;
protected String firstName, lastName;
163
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Les concepteurs souhaitant créer des acteurs humains n'ont donc qu'à faire dériver cette classe
en d'autres, plus spécifiques. Ces dernières peuvent redéfinir la méthode sendActivity et ont à
définir les méthodes correspondant aux services des rôles que l'acteur implémente. Par
exemple dans un atelier, Mr "Alain Tairieur" tient le rôle de superviseur dont les tâches
consistent à vérifier le fonctionnement des machines et à corriger les dysfonctionnements.
Alors il s'agit de créer la classe AlainTairieur qui peut avoir l'allure suivante :
…
public void corriger ( ) {…};
public void superviser ( ) {…};
L'acteur AlainTairieur peut réaliser ces deux activités de la façon dont il le souhaite. De plus, la
classe peut redéfinir la méthode sendActivity (ou les deux autres méthodes), pour envoyer la
tâche non pas par courrier électronique, mais par exemple sur un terminal WAP.
Acteurs automatiques
L'approche que nous avons adoptée dans 2FLOW nous permet d'introduire les acteurs
automatiques avec une certaine facilité dans les workflows. A l'instar des acteurs humains,
toute classe d'acteur automatique doit définir les méthodes correspondant aux rôles qu'elle
implémente. Dans ce cas toutefois, les méthodes implémentées ne font appel à aucune
méthode par défaut. Au contraire, leur intérêt est de donner le code nécessaire pour
déclencher les opérations adéquates au niveau de l'acteur réel.
Pour reprendre l'exemple du robot, supposons que ce dernier soit associé au rôle de
"Démonteur". Les services à rendre par celui-ci sont le dévissage, l'extraction, le déclipsage et
la séparation. Pour chacun de ces services, il est possible d'écrire une méthode dont le rôle est
d'invoquer l'opération correspondante chez le robot. A titre d'exemple, la classe Robot
pourrait ressembler à ce qui suit :
164
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Nous avons dit jusqu'à présent que chaque service d'un rôle correspond à une compétence
donnée, qui est associée à une activité d'un processus. Les services étant implémentés par la
suite sous la forme de méthodes. Il arrive cependant que certaines activités soient tellement
spécifiques qu'il n'est pas utile de les transcrire directement en tant que méthodes, dans des
classes d'acteurs. Par exemple, reprenons le processus de désassemblage d'un lave-linge, qui
est composé des activités suivantes : "démonter le couvercle", "extraire le moteur", "extraire
le tambour". La question qui se pose est de savoir s'il est intéressant d'associer ces activités à
des méthodes distinctes. En effet, s'il faut définir une méthode pour chacune d’elles, alors on
risque d'obtenir des classes d'acteurs contenant plusieurs dizaines de méthodes réalisant
pratiquement la même chose. Par exemple, si l'extraction se répète pour différentes pièces, de
plusieurs appareils, il faudrait créer autant de méthodes spécifiques. Or en fait, on peut dire
que le démontage ou l'extraction correspondent à des types génériques d'activités, qui sont
paramétrés en fonction de l'appareil ou de la pièce sur laquelle on agit. Par conséquent dans
certains cas, il est plus intéressant de s'arrêter à un niveau suffisamment générique. En
d’autres termes, il suffit de définir une seule méthode "extraire( )" au lieu de
"extraireMoteur()" et "extraireTambour( )". D’un autre côté cependant, puisqu’un rôle
représente un ensemble de compétences, alors en restant dans le cadre du même exemple, on
pourrait imaginer qu’un opérateur sachant désassembler un lave-linge ne sait pas
désassembler un réfrigérateur. On a donc besoin de distinguer deux rôles, tels
"OpérateurLaveLinge" et "OpérateurRéfrigérateur", dans lesquels chacun pourrait proposer sa
propre version de l'activité "extraire". Mais quand un même acteur présente les deux
compétences, comment faire pour implémenter les méthodes de même nom ?
La correspondance entre les noms des activités et ceux des méthodes pose donc trois
questions :
§ Faut-il définir une méthode pour chaque activité d'un processus ou peut-on avoir des
méthodes "globales" (génériques) ?
§ Si c'est le cas, comment faire pour que des activités n'ayant pas le même nom mais
faisant référence à la même méthode, puissent invoquer cette dernière ?
§ Comment faire la distinction entre les méthodes globales de même nom, comme nous
l'avons vu dans l'exemple précédent ?
En réalité, le problème soulevé par la première question – et transitivement par les autres -
se pose plus au niveau de la perception du concepteur qu'au niveau du framework. En effet, si
le fait d'extraire un tambour ou d'extraire un moteur sont deux activités totalement différentes
sur le fond, alors il est sans doute nécessaire de les distinguer en termes de compétences. Dans
ce cas, celle-ci se situe au niveau de l'extraction d'une pièce donnée : "extraire moteur",
"extraire tambour". Par contre, s'il suffit à un opérateur de savoir extraire une pièce pour
réaliser cette activité, la compétence se situe alors globalement au niveau de l'extraction
générique et non plus à celui de l'extraction d'une pièce spécifique. Il s'agit en fait plutôt d'un
problème de connaissances. En effet, une compétence est accompagnée d'un ensemble de
connaissances, de savoir-faire ou plus simplement d'informations, qui sont possédées par
l'acteur. Dans les deux cas précédents, la connaissance peut être localisée à deux niveaux chez
un acteur. Soit à celui de la méthode – dont le code décrirait alors l'ensemble des opérations
nécessaires à la réalisation de l'activité - soit au niveau des artefacts qui sont passés comme
arguments à la méthode – la méthode se contentant alors d'interpeller l'acteur réel en lui
passant les informations nécessaires pour réaliser l'activité.
165
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Nous pensons donc effectivement, que le choix doit se faire au niveau de la conception. Pour
reprendre l'exemple des rôles, est-il véritablement judicieux de distinguer un rôle d'opérateur
pour le démontage de chaque type d'appareil ? Ne serait-il pas plus pertinent d'avoir un seul
rôle, tel "Opérateur de Désassemblage", qui couvrirait l'ensemble des compétences
nécessaires pour réaliser un désassemblage ? La réponse à cette question semble plutôt du
ressort du concepteur du workflow.
Quoiqu'il en soit, il est très probable que les concepteurs aient recours, à un moment ou à un
autre, à des méthodes génériques. Se pose alors le problème technique soulevé par la
deuxième question : si une activité invoque chez un acteur la méthode qui porte son nom,
comment faire lorsqu'on a plusieurs activités différentes qui sont réalisées par la même
méthode ? Nous apportons une réponse à ce problème en introduisant un attribut spécifique
dans la classe Activité, nommé invokedService. Cet attribut est initialisé au moment de la
modélisation, avec le nom du service du rôle que l'activité est censée invoquer lors de
l'exécution. Par exemple pour les activités ExtraireMoteur et ExtraireTambour, la valeur
"extraire" est attribuée à cet attribut. Lors de l'invocation de la méthode notifyActor( ) d'une
activité, il suffit d'utiliser la valeur de invokedService s'il n'est pas nul, au lieu du nom de
l'activité, avant d'exécuter le reste du mécanisme qui ne change pas.
Quant au problème soulevé par la troisième question, nous ne lui apportons pas pour l'instant
de solution technique. Notre proposition est d'éviter d'utiliser des noms de services similaires
lors de la modélisation, en particulier si leur principe est le même. Dans ce dernier cas en
effet, la modélisation du workflow est peut-être à revoir.
Les expressions logiques sont, comme nous l'avons vu, les opérateurs de 2FLOW dédiés au
contrôle du flux des événements. Leur fonctionnement est simple (fig. IV.28) :
Une expression logique est avant tout instanciée par l'un des événements qui la composent,
lequel s'y inscrit par la même occasion, en invoquant la méthode registerEvent (WorkflowEvent).
Pour stocker les références des événements qui viennent s'y enregistrer, la classe
ExpressionLogique est munie d'un attribut events de type EventVector. Chaque demande
d'inscription donne lieu au préalable à une vérification, afin de savoir si l'événement candidat
fait bien partie de l'expression. Celle-ci est fixée par les concepteurs lors de la modélisation, et
est stockée dans l'attribut expression, de type String. A la fin de chaque enregistrement, un
appel de la méthode interne evaluateExpression( ) est généré, dont le rôle est d'évaluer
l'expression logique. Si l'expression est vérifiée (renvoie la valeur "vrai"), la méthode va
notifier les instances des activités concernées (en les créant éventuellement). La méthode
d'évaluation de l'expression fait appel à d'autres fonctions internes de la classe. Sans rentrer
dans leur détail, il suffit de savoir que l'évaluation consiste à construire un arbre, dont les
n œuds non terminaux sont des opérateurs logiques, et les feuilles des événements. Chaque
n œud de l'arbre pointe sur une structure de type StringVector, contenant les noms des activités
qui doivent être notifiée par les n œuds, via leur méthode getActivated( ). Les événements
n'ayant pas eu lieu sont remplacés dans l'arbre par des n œuds génériques qui sont évalués à
"faux" par la fonction d'évaluation. A l'opposé chaque événement s'étant inscrit renvoie une
valeur "vrai" dans le n œud correspondant.
166
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Ajout
Attente |
do : vérifier
do : [nom ok ] : ajouter
A1 & E3 A2 A3
Evaluation
do : evaluateExpression ( )
E1 E2
do : notifications
Par exemple, l'expression [ E1( ) &(A1 ) E2( ) ] | ( ) [ E3 (A2, A3) ] se traduit par l'arbre de la
figure IV.30. Si au cours de l'exécution du workflow l'événement E3 s'inscrit auprès de
l'expression, alors celle-ci est évaluée à "vrai", étant donné que l'arbre correspondant équivaut
à ( (faux AND faux) OR vrai) qui donne vrai. Ce sont dans ce cas les activités A2 et A3 qui
sont activées.
[Link] Artefacts
La classe Artefact de base est abstraite et ne contient qu'un ensemble minimum de propriétés,
telles le nom de l'artefact et son identifiant. Elle sert surtout comme type de base aux classes
qui en dérivent, DocumentElectronique, ObjetTechnique et VariableWorkflow.
DocumentElectronique
La classe DocumentElectronique englobe l'ensemble des objets de ce type. Elle peut donc
concerner les fichiers textes, les documents de tableurs, les résultats de requêtes sur des bases
de données, etc. A l'instar de la plupart des composants de 2FLOW, cette classe peut être
spécialisée pour chacun des types de documents, selon les besoins des concepteurs des
workflows. Elle est néanmoins munie de propriétés et de comportements, que nous présentons
ci-dessous, qui font qu'elle peut être utilisée directement.
167
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
L'attribut name contient le nom du document électronique, qui est repéré grâce à la valeur de
l'attribut URL, de type String également. L'URL d'un document correspond à la localisation
du document et non nécessairement à une adresse web. Elle peut donc revêtir plusieurs
formes, telles : "[Link] "LecteurRéseau//Dossier/…", etc.
Enfin, il se peut que le document réel doive être créé physiquement lors de l'instanciation de
la classe DocumentElectronique, ou avant l'appel des méthodes open( ), get( ) ou send( ). Ces
deux dernières méthodes permettent respectivement de télécharger le document à partir de son
URL et d'envoyer le document au destinataire. Pour créer le document, la classe dispose de la
méthode create ( ) qui utilise le contenu de l'attribut createStatement, de type StringVector. Ce
dernier est un ensemble de chaînes de caractères (un script), décrivant la procédure de
création du document ou le nom d'un script qui permet de le faire. Cette méthode est
particulièrement utile pour la création de fichiers issus de requêtes sur des bases de données.
Variable Workflow
Les variables Workflows servent à stocker des objets de n'importe quel type, qu'il est possible
d'utiliser par la suite dans les autres classes des workflows. La classe VariableWorkflow est
générique et fournit des mécanismes de base pour la manipulation de l'objet qu'elle contient.
En l'état actuel de sa définition dans 2FLOW, l'emploi de cette classe nécessite certains
artifices de programmation que ne peuvent par nécessairement mettre en œuvre des
concepteurs de workflows sans connaissances minimales en Java. Cela semble rentrer quelque
peu en contradiction avec les principes fondamentaux de 2FLOW. Néanmoins, il n'était pas
possible de rester en même temps à un niveau générique - qui permet de stocker toutes sortes
d'objets - et fournir des mécanismes de manipulation de types précis. A fortiori quand le type
de l'objet à contenir n'est pas connu au départ.
168
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Le rôle de chacun des trois attributs de la classe est suffisamment explicite pour que nous ne y
attardions pas. Il convient de commenter toutefois l'attribut value - qui stocke la valeur de la
variable - et qui est de type "Object". En Java, la classe Object est la classe de base de toutes
les classes Java, y compris celles des utilisateurs du langage. C'est donc un type générique qui
peut être utilisé en remplacement de n'importe quel autre type de Java (mis à part les types de
base "int", "float", "char" etc.). Il est alors logique de déclarer comme "Object" l'attribut
servant à stocker la valeur de la variable, ce qui permet de récupérer tout type d'objet.
Afin de récupérer la valeur d'une variable Workflow 2FLOW, les utilisateurs disposent de
deux méthodes, getValue ( ) qui renvoie un Object, et getType ( ) qui renvoie le type de l'objet
mémorisé dans la variable, dont les rôles respectifs sont de renvoyer la valeur de la variable et
son type. Afin d'utiliser correctement cette valeur, la seule manipulation à réaliser par les
concepteurs est de faire une conversion explicite de type (un "cast"), du type générique
"Object" au type de l'objet stocké dans la variable. Par exemple si l'on a une variable
workflow stockant un entier, il suffit pour récupérer cette valeur d'écrire le code suivant :
WorkflowVariable maVariable = …;
Integer uneVariable = (Integer) [Link]( ); // cast en "entier"
De la même façon si l'on veut créer un objet de type Acteur (2FLOW) et le stocker dans une
variable, il suffit d'écrire le code suivant :
Remarquons que la méthode getValue renvoie une copie de l'objet et non l'objet lui-même.
Enfin nous avons indiqué que la méthode setType n'était pas nécessaire car il est en effet
directement possible, grâce à la méthode "getClass( )" des objets de Java de connaître le type
d'un objet.
Objets Techniques
Les objets techniques sont la dernière classe de base issue de la classe Artefact. Ainsi que nous
l'avons mentionné, ce sont les équivalents des objets techniques (OT) réels dans le
framework. Le rôle de la classe ObjetTechnique est principalement de gérer la circulation et
l'évolution des objets réels entre les acteurs du workflow, ce qui n'est pas réalisable avec les
systèmes Workflows usuels. Pour ce faire, la classe possède un ensemble d'attributs et de
méthodes spécifiques, implémentés au sein de 2FLOW, ce qui permet d'utiliser aussi les
instances de cette classe sans avoir à les spécialiser nécessairement.
Afin de gérer l'évolution des états d'un OT, nous utilisons un attribut nommé objectStates de
type Vector. Il sert à stocker des objets de type TechnicalObjectState qui est défini en tant que
classe interne de la classe ObjetTechnique. L'interface de cette classe est la suivante :
169
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Les deux attributs stateName et stateValue servent respectivement à définir le nom d'un état de
l'OT et sa valeur. Les méthodes fournies par la classe permettent de manipuler les valeurs de
ces deux attributs.
Un autre attribut de type ArtefactVector, nommé components, sert à représenter les liens de
composition ou de nomenclature pouvant exister entre un OT et d'autres OT. Les méthodes
addArtefact (Artefact) et removeArtefact( String nomArtefact) appliquées à cet attribut, permettent
de simuler l'évolution d'un objet en lui ajoutant ou ôtant des composants. Cela peut
notamment s'avérer très utile dans les processus d'assemblage ou de désassemblage de
produits manufacturés.
Enfin, pour gérer la circulation des OT, la classe ObjetTechnique dispose de deux attributs
nommés getObjectProcess de type String et processArguments de type StringVector, ainsi que
d'une méthode getObject( ). Cet attribut contient la référence du processus logistique qui
permet de déplacer l'objet réel d'un endroit à l'autre. Ce dernier peut être un processus
2FLOW ou un processus externe et l'ensemble des arguments nécessaire à son exécution son
introduits par l'attribut processArguments. Enfin, le processus logistique est invoqué par la
méthode getObject( ), qui peut être redéfinie au niveau des classes des utilisateurs. Cette
méthode doit contenir le code nécessaire à l'appel du processus, en lui passant au besoin les
arguments nécessaires.
170
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Niveau fondamental
Classes workflows utilisateurs
Chacune des classes du package - les composants Workflows graphiques - dérive d'une classe
de base appelée WorkflowGraphicComponent qui définit un ensemble d'attributs et de
comportements communs à tous les composants. Ces propriétés sont redéfinies au besoin au
niveau des composants spécifiques, notamment les méthodes drawSelf( ) et paint( ) qui
permettent au composant de se dessiner sur la surface appropriée. Nous n'allons toutefois pas
nous attarder sur le package des vues dont les classes ne proposent pour l'instant que de
représentations assez élémentaires.
Un autre package du niveau fondamental qui n'a pas encore été évoqué dans ce chapitre est
celui des fichiers de définitions. Lors de la modélisation – via l'éditeur que nous décrirons
sous peu – des fichiers de définitions sont créés pour chaque classe. Ces fichiers contiennent
sous une forme quasi textuelle, l'ensemble des informations sur la structure d'une classe
2FLOW. Ils sont utilisés ensuite pour la génération de classes sources Java et leur
compilation. Les fichiers de définitions sont l'un des moyens que nous utilisons pour mettre
en œuvre la flexibilité dans le framework.
Le deuxième niveau de l'architecture est défini par un package dédié aux classes de base
définies par les développeurs utilisant 2FLOW. Il sert à ajouter des extensions au métamodèle
qui seront utilisées par l'ensemble des concepteurs workflows et non uniquement pour des cas
spécifiques.
Enfin, le dernier niveau concerne les packages des workflows des utilisateurs. Chaque modèle
de workflow est représenté par un package du même nom, dans lequel sont placées les classes
nécessaires à son fonctionnement. Celles-ci peuvent dériver des classes du package des
classes fondamentales de 2FLOW, des classes de base définies par les développeurs ainsi que
des classes des autres workflows. L'exécution des workflows donne lieu à la création d'un
nouveau package par cas d'exécution, dans lequel sont recopiées puis instanciées les classes
(fig. IV.32).
171
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Workflow désassemblage
MrX
Modèle workflow
produit
Robot_Z
extraire
recopie recopie
définitions définitions
instances instances
: Robot_Z
: produit : MrX : extraire : produit : extraire
Cas 1 Cas 2
Les paragraphes précédents nous ont permis de présenter d'une façon détaillée l'ensemble des
concepts de 2FLOW, sa structure, son utilisation, son fonctionnement et son architecture.
Nous espérons que cela aura, entre autres, permis de montrer l'utilité de 2FLOW pour la
construction de workflows par assemblage de composants. Ces paragraphes auront peut être
également permis d'entrevoir la façon dont le framework est utile pour les problèmes de
réutilisation, d'adaptation et plus globalement de flexibilité. Ceci notamment grâce à sa nature
orientée objet et son approche par métamodèle.
172
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Ainsi que nous l'avons mentionné au début de ce chapitre, nous nous intéressons
particulièrement aux deux premiers niveaux, bien que nous traitions également la gestion des
exceptions. Nous les abordons dans l'ordre dans les paragraphes qui vont suivre.
Workflow 1 Workflow 2
Process1 Process2
A1 B1 C1 D1 A1 F G
D2
173
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Dans notre exemple, nous avons un premier package nommé "Workflow 1" correspondant
à un processus "Processus1", lié à un ensemble de classes composantes A1, B1, C1 et D1.
Un deuxième package est créé – "Workflow B" – correspondant à un autre processus,
nommé "Processus2". Ce dernier fait appel à de nouvelles classes, F et G, mais également
à la classe même A1 définie dans le workflow précédent, ainsi qu'à une spécialisation D2
de la classe D1 définie précédemment. Nous avons donc ici deux cas de figures de la
réutilisation de composants : une réutilisation directe, avec la classe A1 et une adaptation
(ou une modification), avec D2. Le premier cas de figure ne nécessite qu'une simple
recopie de la classe depuis le premier package jusqu'au deuxième ou plus simplement,
d'une "importation" de cette classe dans le deuxième paquetage. L'importation consiste
lors de l'exécution, en une recopie du code objet d'une classe située dans un package
donné dans un autre package. Elle est mise en œuvre dans Java par le mot clé "import". Le
deuxième cas de figure consiste en une spécialisation de la classe D1 en une nouvelle
classe D2, qui y apporte et/ou qui en redéfinit des propriétés.
Remarquons que les workflows 1 et 2 ne sont pas "apparentés", c'est à dire que le
workflow 2 traite un processus différent du premier. La réutilisation et la spécialisation ne
se font donc pas au niveau des workflows eux-mêmes mais à celui des composants. Les
mécanismes mis en œuvre dans ce cas sont ceux du langage Java – et des langages objets
en général – notamment la spécialisation et l'importation.
La spécialisation des workflows est rendue possible dans 2FLOW par une procédure en
deux étapes, dont la première consiste en la spécialisation de la classe du processus en
une nouvelle classe du même type. Nous rappelons que cette classe contient
essentiellement deux vecteurs, le premier stockant le nom des BCF gérant les flux du
processus, et le deuxième le nom des acteurs qui y sont impliqués.
La deuxième étape consiste à définir les classes qui doivent éventuellement être ajoutées
(si le nouveau workflow nécessite de le faire) ou de redéfinir les classes qui doivent être
modifiées. Il est important de noter que les modifications doivent se propager à l'ensemble
des classes concernées. Remarquons que grâce au mécanisme que nous adoptons – et que
nous allons décrire dans ce qui suit – il est possible de spécialiser un composant d'un
workflow en un composant du même nom dans un autre workflow.
174
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Dans un langage de programmation objet, lorsqu'une classe est dérivée, ces filles héritent
de toutes ses propriétés, en particulier des liens qui la lient avec d'autres classes. Il n'est
donc pas nécessaire de les redéfinir au niveau des classes héritières. Nous appliquons ce
même principe à la spécialisation de workflows. Celle-ci donne bien lieu à la création de
nouveaux workflows et par conséquent de nouveaux packages, mais ceux-ci ne doivent
contenir que les nouvelles classes ou celles qui sont redéfinies. Le package père et son
contenu son simplement référencés dans le nouveau processus et les nouvelles classes, à
l'aide du mot clé "import nom du package". Si le nouveau processus est exécuté, il a alors
accès aux classes de son paquetage ainsi qu'à celle de son paquetage père, mais dans ce
cas, les classes de ce dernier possèdent des packages de définition et d'exécution distincts.
Pour expliciter ces mécanismes à l'aide d'un exemple, reprenons le processus de base
d'hospitalisation d'un patient. Nous avons dit qu'il est composé de quatre activités :
"préparation du dossier administratif" attribuée à un "agent administratif", "préparation du
dossier médical", réalisée par un "chef de service", "opération", traitée par un "chirurgien"
et enfin la "facturation", exécutée par un "agent comptable".
processus – hors exécution – pour y ajouter une AgentAdm ChefServ Chirurgien AgentCtble
175
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
fait à réaliser très peu de travail. En effet, il suffit d'écrire le code suivant pour la
redéfinition et la spécialisation des classes (bien sûr, il faut également définir les nouvelles
classes) :
import Hospitalisation_1.*;
import Hospitalisation_1.*;
import Hospitalisation_1.*;
176
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Etablir dossier ET
médical Opérer Rééduquer Facturer
Arrivée d’un
patient Etablir dossier
administratif
Jour opération
€ € €
€
Chirurgien Kinésithérapeute Agent
Comptable
Agent Dossier
administratif administratif
Evénement
€ Rôle Données Opérateur
Il peut paraître quelque peu contraignant d'avoir à connaître les noms des packages
desquels il faut importer des classes, étant donné que l'on peut avoir plusieurs niveaux de
177
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
spécialisation de workflows. De plus, même si dans le cas de la réutilisation telle que nous
l'avons présentée dans nos exemples, le code à ajouter est très simple, le codage reste plus
du ressort des développeurs que des analystes de processus. Par conséquent, pour éviter
aux concepteurs d'avoir à écrire du code et de se soucier de l'arborescence des packages,
nous avons développé un éditeur générique de classes 2FLOW, que nous présentons plus
en détail dans une autre partie de ce chapitre.
Dans le framework, l'adaptation des workflows en cours d'exécution recouvre deux catégories
de modifications et d'adaptations :
§ La première catégorie concerne les adaptations et les corrections qui ne nécessitent pas
de modifier la structure des classes et des workflows existants. En d'autres termes, il
s'agit essentiellement de modifier les valeurs de leurs attributs, ce qui peut néanmoins
nécessiter l'ajout ou la suppression de composants au package, sans que cela n'ait
d'influence sur la structure du workflow. Par exemple, supposons que nous ayons une
activité dans laquelle le nom d'un acteur a été fixé et que nous souhaitions changer
d'acteur en cours d'exécution. Dans ce cas, il faut intervenir directement sur l'attribut
actorName de la classe activité et s'assurer de la présence dans le package, de la classe de
l'acteur correspondant. Quoiqu'il en soit, les adaptations n'affectent pas la structure du
workflow.
En plus des attributs, il est également possible dans ce niveau de modifier les
comportements des composants Workflows. Il s'agit essentiellement de redéfinir
certaines de leurs méthodes, donc de modifier leur implémentation. On peut en effet
supposer qu'un acteur modifie la façon dont il traite une activité. Par exemple,
l'apparition d'une nouvelle contrainte technique fait qu'un robot qui traitait une activité
par l'appel d'une commande donnée, doive la traiter par la combinaison d'autres
commandes. Afin d'adapter le workflow à ces nouvelles exigences, il convient alors de
revoir l'implémentation de la méthode correspondant à l'activité en question.
§ La deuxième catégorie concerne les adaptations et les corrections des workflows qui
remettent en cause leur structure. Il peut s'agir de l'ajout ou du retrait de composants, ce
qui nécessite simultanément les modifications des valeurs de plusieurs attributs, ainsi
que la mise à jour du contenu du package du workflow. Par exemple l'ajout ou le retrait
d'activités, d'événements ou de blocs de contrôle de flux sont des causes de modification
de la structure des workflows. En règle générale, tout ajout ou retrait de composants
intervenant dans le flux des workflows en nécessitent une restructuration.
En tenant compte de ces différentes contraintes, nous proposons dans 2FLOW deux approches
complémentaires pour la mise en œuvre de l'adaptation en cours d'exécution.
178
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
La première approche consiste à fournir des moyens pour manipuler "à distance" les attributs
des instances des composants Workflows. Pour ce faire, 2FLOW propose un outil sous la
forme d'un contrôleur générique – défini par un ensemble de classes contenues dans le
package "Contrôleur Workflow Générique". La classe principale de ce package, appelée
"ControlerEngine", est instanciée lors de l'initialisation d'un workflow et à accès à son
référentiel. Le moteur du contrôleur dispose d'une copie des objets contenus dans le
référentiel du workflow, que ce dernier met régulièrement à jour lors de l'ajout de nouvelles
instances. L'outil propose une interface sous la forme d'une première fenêtre - le panneau de
contrôle - dans laquelle s'affiche au fur et à mesure la liste de tous les objets Workflows qui
sont créés lors de l'exécution. Il est possible aux utilisateurs de les sélectionner et d'en afficher
les attributs (avec leurs valeurs) dans une nouvelle fenêtre. De la même façon, chaque attribut
peut être sélectionné séparément et une nouvelle valeur peut lui être directement attribuée. Par
exemple dans la figure IV.37, nous avons lancé le contrôleur pour un processus de rédaction
collaborative d'un document. Ce dernier est composé d'un ensemble d'activités et de CFB.
Dans notre exemple, nous avons sélectionné le CFB séquentiel principal du processus (1ere
fenêtre) pour lequel nous avons demandé l'affichage de tous les attributs (2ème fenêtre). Nous
avons ensuite sélectionné l'attribut contenant le nom des composants du CFB, dont nous
affichons le contenu à l'aide de la troisième fenêtre. Celle-ci nous permet d'agir directement
sur le contenu de l'attribut en lui attribuant une nouvelle valeur.
La technique qui a été adoptée met en œuvre les mécanismes de la réflexivité dont nous avons
parlé au chapitre précédent. Dans notre cas, nous faisons appel aux mécanismes proposés par
le langage Java, ainsi qu'à des mécanismes que nous avons directement intégrés aux classes
de 2FLOW et que nous avons volontairement occultés jusqu'à présent.
179
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
générique de tous les objets 2FLOW, dont elle peut récupérer l'ensemble des attributs grâce à
sa méthode getObjectFields( ). Cette dernière utilise les services de la méthode
"getDeclaredFields( )" de la classe "Class" de Java dont nous avons précédemment parlé.
Cette méthode permet d'obtenir sous la forme d'un tableau de champs (objets de la classe
"Field" de Java, définie dans le package "reflect" - reflexivité - du langage), l'ensemble des
attributs d'une classe, quelle que soit leur visibilité. L'effet de la méthode se limite toutefois
aux champs définis dans la classe même, sans remonter vers les classes ancêtres. Ce problème
est résolu par la méthode getObjectFields( ) dont le rôle est de construire un tableau de champs
en remontant l'ensemble de l'arborescence des générations.
En fait, la solution n'est pas encore entière car il reste encore à récupérer les valeurs des
attributs. Pour ce faire, la classe "Field" de Java dispose d'une méthode particulière appelée
"get(Object )" qui reçoit en argument l'objet dont on veut connaître la valeur du champ en
question. Le problème est que cette méthode ne peut - heureusement - pas avoir accès aux
valeurs des attributs privés et protégés d'une classe, elle ne peut donc être directement utilisée
dans la classe SelectedObject, même si c'est le champ concerné qui y fait appel. Pour
contourner le problème, nous avons donc muni la classe WorkflowObject (mère de toutes les
classes 2FLOW) de la méthode "getFieldValue(Field)" à laquelle on passe en argument un des
propres attributs de la classe - le champ dont on veut connaître la valeur. Cette méthode
invoque à son tour la méthode "[Link]( )" ce qui résout le problème car la localisation de
l'appel a ainsi été déplacée vers la classe concernée, qui a accès à l'ensemble de ses attributs.
1: select( )
:ControlerPanel
2 : select(indexSelection)
:ControlerEngine 4 : getObjectFields( )
3 : créer(objet) :Field
:SelectedObject
8 : créer(this)
5 : créer(nom des champs) 9 : getFieldValue(field)
value
:WorkflowObject
6 : select( ) 7 : getField
:ObjectPanel (indexSelection)
10 : créer(fieldName, fieldType, fieldValue)
:AttributePanel
Le même problème se pose, en sens inverse, pour l'affectation de nouvelles valeurs aux
attributs sélectionnés. La classe SelectedObject propose pour ce faire une méthode,
setFieldValue(Object), à laquelle on passe la nouvelle valeur "castée" vers le type générique
"Object". Celle-ci invoque à son tour la méthode setFieldValue(Field, Object) de la classe
WorkflowObject qui a le choix entre deux solutions possibles.
La solution la plus simple consiste à utiliser la méthode "[Link]( Object, Object)" de Java.
Celle-ci affecte à l'attribut d'un objet la valeur d'un autre objet, en essayant de forcer une
conversion de type (du type Object vers le type de l'attribut). Le problème est que cette
opération n'est pas toujours couronnée de succès quand le type en question ne propose pas de
constructeur adéquat ou quand la classe est trop complexe. Le moyen que nous avons adopté
180
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
consiste à définir au niveau de chaque classe de base de 2FLOW, une méthode setXXX(Object)
associée à un attribut de nom XXX susceptible d'être modifié en cours d'exécution. Par
exemple la classe CFB possède l'attribut componentsNames de type StringVector. Nous lui
associons donc la méthode setComponentsNames(Object) permettant de lui affecter une valeur.
3 : setFieldValue(field, valeur)
:SelectedObject :WorkflowObject
[Link] Limites
L'approche du contrôleur générique est intéressante mais limitée. En effet, elle ne s'applique
que sur les classes déjà instanciées des workflows. Or nous avons vu que l'exécution des
processus 2FLOW est répartie et que l'instanciation des classes est progressive. Par
conséquent, le contrôleur ne peut agir que sur les objets existants qui de plus n'ont pas encore
terminé leur tâche dans le workflow. Par exemple si une activité a été instanciée, il est inutile
d'essayer de modifier le nom du rôle (ou de l'acteur) qui la réalise, étant donné qu'un acteur
aura déjà été notifié dès la création de l'objet activité, sauf si l'activité en question est dans un
BCF bouclé. Dans ce cas la modification est prise en compte lors des autres "passages".
Nous avons volontairement choisi de ne pas permettre la manipulation des comportements des
objets 2FLOW via le contrôleur, les attributs seuls pouvant être affectés. Néanmoins,
plusieurs opérations intéressantes peuvent être réalisées à l'aide du contrôleur, telles modifier
les noms des événements générés par l'activité, les noms des activités ou des expressions
logiques suivantes, etc. Il est également possible de remanier la structure d'un workflow en
changeant le contenu des BCF, via leur attribut componentsNames. Bien entendu, ces
modifications doivent se faire en respectant la cohérence du workflow sous-jacent, ce qui peut
nécessiter l'ajout de classes ou la modification d'autres composants.
Des fonctions de vérification de la cohérence des workflows suite aux modifications sont en
cours d'études. Etant donné l'importance et la complexité de la tâche - réalisation d'un
analyseur de modèles workflow - ces fonctions n'ont pas encore été implémentées dans
2FLOW. Notons enfin qu'étant donné l'impact du contrôleur sur l'ensemble des classes du
workflow, il n'est évidemment pas accessible à tous les utilisateurs. Il convient donc à ceux-ci
de définir les rôles ayant le privilège de l'accès à cet outil, afin de préserver le bon
fonctionnement des processus.
181
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Nous avons vu que l'usage du contrôleur générique des objets 2FLOW connaissait certaines
limites, notamment au niveau des comportements et des classes non instanciées. Afin
d'englober l'ensemble des besoins de l'adaptation dynamique, nous proposons un autre outil,
complémentaire du premier, qui n'est autre que l'éditeur générique de 2FLOW, que nous
n'avons fait que mentionner jusqu'à présent.
Le fait de double-cliquer sur le dessin d'une classe déclenche l'ouverture de la fenêtre de ses
propriétés, c'est à dire l'ensemble de ses attributs et ses méthodes (fig. IV.41). Cette fenêtre est
l'outil principal de construction des
composants Workflow. En premier lieu,
l'utilisateur y est invité à saisir le nom de la
classe ("NewWorkflowClass" par défaut).
Les deux champs suivants sont très
intéressants. Le premier est intitulé
"stéréotype".
182
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Le deuxième champ auquel nous nous intéressons dans la fenêtre des propriétés est le champ
intitulé "Extends Workflow Class". Il permet de choisir une classe non pas parmi les
stéréotypes mais parmi les classes déjà créées par les utilisateurs. Pour ce faire, une recherche
descendante est effectuée depuis les packages "Classes de base des utilisateurs" et celui des
"Workflows utilisateurs" qui contient les classes de tous les workflows déjà construits.
Lorsqu'un stéréotype et/ou une classe mère sont
sélectionnées, leurs attributs sont automatiquement
chargés dans la liste correspondante, intitulée
"Attributes". Il est possible d'en sélectionner les
éléments pour modification, grâce au bouton "/"
(éditer), ce qui a pour effet d'afficher la fenêtre des
propriétés des attributs. Celles-ci concernent le nom
de l'attribut, sa visibilité (privé, protégé, public),
son type, qu'il est possible de choisir parmi les types
élémentaires (entier, réel, chaîne, etc.) ou parmi
toutes les classes Workflows (stéréotypes et classes
utilisateurs confondues). La propriété "Value" sert à
indiquer la valeur initiale de l'attribut (affectée lors Figure IV.42 - Fenêtre des propriétés
de l'appel du constructeur de la classe). Cette d'un attribut d'un composant
initialisation a lieu si le champ "Must initialize" est
mis à "true". Si un attribut a été sélectionné au préalable, alors ses propriétés sont affichées
dans la fenêtre, sinon les champs sont vides ou munis de valeurs par défaut. La figure 4.38
correspond à l'attribut "roleName" d'une activité. Il est initialisé avec la valeur "Operateur",
c'est donc ce rôle qui sera chargé de réaliser l'activité en question lors de l'exécution.
183
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Les propriétés d'une méthode sont son nom, sa visibilité, sont type de retour (qui peut être
choisi parmi tous les types de base et les types Workflows, ainsi que la liste de ses arguments,
référencée par le champ "parameters". Ce dernier peut également être remanié via une fenêtre
spécifique affichant les propriétés de chaque argument sélectionné ou permettant d'en ajouter
de nouveaux ou d'en supprimer.
Enfin, lorsqu'il l'estime utile, l'utilisateur de l'éditeur peut choisir de générer le code Java des
composants qu'il a créés, et de le compiler en cliquant sur le bouton "Generate" de l'éditeur.
Ceci cause l'appel de la classe "CodeGenerator" qui se base sur les fichiers de définition pour
produire deux séries de fichiers, l'une contenant le code source Java des classes, et l'autre leur
code objet. Le compilateur utilisé est celui du JDK de Sun et il n'est pas possible pour le
moment de laisser à l'utilisateur le choix d'un compilateur spécifique.
184
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
attributs objets est toujours réalisée lors de l'appel du constructeur de leur classe. Dans le cas
de 2FLOW, les valeurs initiales sont introduites, comme nous venons de le voir, lors de la
modélisation dans l'éditeur. Or chaque stéréotype étant muni d'attributs spécifiques, il est
nécessaire d'en réaliser une initialisation spécifique également. Pour ce faire, nous avons
défini un générateur de code par stéréotype, formalisé par des classes dont les noms sont
composés du nom du stéréotype suivi de "Generator". Par exemple, le générateur d'une
activité s'appelle "ActivityGenerator".
Le click du bouton "Generate" déclenche un processus que nous allons décrire ci-après, dont
l'effet est entre autres d'invoquer la méthode "generate(String, String)" de la classe
CodeGenerator, en lui passant pour chaque composant, le nom du stéréotype concerné et le
nom du fichier de définition. Cette méthode crée ensuite une instance du générateur du
stéréotype, dont il appelle la méthode "generate(String)" avec comme argument le nom du
fichier de définition. Remarquons que l'instanciation se fait de façon générique uniquement
via le nom du stéréotype, ce qui permet d'ajouter autant de générateurs (et de stéréotypes) que
souhaité, sans modification de la classe CodeGenerator.
Comme nous l'avons vu, les fichiers de définitions contiennent la description de l'ensemble de
la structure d'une classe Workflow. Cela permet d'une part de générer les classes Java
correspondantes et d'autre part, de récupérer la définition des classes déjà existantes. Lors de
la création d'un composant à l'aide de notre éditeur, cette fonctionnalité est utilisée pour
l'importation des attributs et méthodes des classes mères et des stéréotypes. Nous l'utilisons
également lors de l'exécution, afin de connaître la structure des composants du workflow en
cours de réalisation. Dans l'éditeur, la classe contenant l'ensemble des propriétés (attributs +
méthodes) d'un composant est appelée "ClassProperties". A l'instar du contrôleur présenté dans
un précédent paragraphe, elle joue également le rôle de métaclasse générique, puisqu'elle
permet de connaître et de manipuler l'ensemble des propriétés d'un composant, non pas en se
basant sur son code Java, mais sur son fichier de définition. A l'opposé du contrôleur, cette
classe ne met pas en œuvre de mécanismes d'introspection et de réification, puisqu'elle ne
permet pas de connaître l'état d'un objet. Grâce à la classe ClassProperties, il est donc possible
de modifier les caractéristiques d'un composant, que ce soit hors ou en cours d'exécution,
puisqu'on manipule principalement les fichiers de définition Workflows.
Si les modifications sont dynamiques, il est nécessaire de les répercuter directement sur le
workflow en cours, en tenant compte des différents niveaux d'adaptation dont nous avons
précédemment discuté : le niveau local, le niveau local généralisé et le niveau global.
185
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
§ Quel est le niveau de l'adaptation ? Ce renseignement n'est nécessaire que s'il s'agit
d'un workflow en cours d'exécution.
Nous avons indiqué que lors de l'exécution d'un workflow (lors de l'occurrence d'un "cas"), un
package spécifique au cas est créé, dans lequel sont recopiés puis instanciés les composants
du workflow. Le nom du package "d'instance" est composé du nom du package initial plus un
numéro attribué par un compteur. Par exemple, une première instanciation du workflow
d'hospitalisation que nous avons vu précédemment génère un package nommé
"Hospitalisation_001".
Afin d'éviter le maximum d'incohérences, la stratégie d'adaptation que nous proposons pour
l'instant consiste à ne modifier que les classes qui n'ont pas encore été instanciées, donc dont
les modifications peuvent être prises en compte à coup sûr, sans remettre en cause la stabilité
du processus. Les noms des classes ayant déjà été instanciées peuvent facilement être obtenus
grâce au contrôleur générique que nous avons décrit précédemment.
Le principe d'adaptation en cours d'exécution dans 2FLOW est le suivant : Lorsque l'ordre de
modifier un workflow est émis, le générateur de code appelle les services d'une classe appelée
WorkflowTranslator. Son rôle est de créer un nouveau package dans lequel elle va générer les
fichiers source et objet des classes modifiées, puis y copier ceux des classes non modifiées.
Si le package duquel sont copiées les classes est un package d'instance, alors le
WorkflowTranslator invoque la méthode translate( ) du référentiel du workflow en cours - que
nous n'avons pas encore décrite. L'appel de cette méthode enclenche un processus composé de
trois étapes principales :
§ En troisième étape, les objets exécutables de "l'ancien" référentiel courant sont stoppés
puis l'ensemble des objets est supprimé du référentiel. les objets exécutables sont
relancés dans le nouveau référentiel.
186
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
En fonction du niveau d'adaptation choisi, cette manipulation est réalisée pour un seul
package (niveau local), pour tous les packages dont le workflow - du même processus - est en
cours d'exécution (niveau local généralisé). Enfin au niveau global, les modifications sont
également répercutées sur le package initial.
Workflow X
Classe2
Classe1
Classe4
Classe3
Classe1
Workflow X - instance bis Workflow X_00n - instance
Les activités ou les processus consommant des exceptions en entrée, jouent le rôle de
gestionnaires d'exceptions, puisqu'elles détectent leur occurrence et effectuent en conséquence
une tâche déterminée - plus réellement, elles notifient le rôle concerné d'exécuter le travail
correspondant. Il est donc assez aisé de créer des gestionnaires d'exception à l'aide des
composants de 2FLOW, puisqu'il s'agit de créer des classes d'exceptions et de les lier à des
classes d'activités ou à des processus.
187
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Afin de permettre l'affectation d'un acteur en cours d'exécution, nous proposons donc une
surcharge de la méthode notifyActor( ) de la classe Activité, prenant en argument le nom de la
classe de l'acteur concerné. Cela implique toutefois que ce dernier doit exister en tant que
composant du workflow (il a donc été identifié au préalable comme acteur potentiel, lors de la
modélisation). Supposons que ce ne soit pas le cas, c'est à dire que dans notre processus, le
chef de service fasse appel à un chirurgien exerçant dans un autre hôpital. Il est alors
nécessaire d'utiliser les mécanismes de modélisation en cours d'exécution de 2FLOW, en plus
de la gestion de l'exception, afin de créer une nouvelle classe d'acteur. Au niveau du processus
d'hospitalisation, le choix du remplaçant étant fixé par le chef de service, cela implique que
c'est également à lui d'introduire le nouveau composant dans le workflow en cours. Pour ce
faire, il doit avoir accès à l'éditeur et doit donc tenir un autre rôle lui accordant ce privilège.
Dans l'exemple précédent, nous avons vu que l'exception avait clairement été identifiée au
moment de la modélisation, il s'agit donc d'une exception "prévue" : c'est un événement
exceptionnel mais connu. Pour traiter le cas des exceptions imprévues (ou plutôt inconnues),
nous avons créé la classe "ExceptionWorkflowGenerique" qui est automatiquement associée à
chaque activité d'un processus. Lorsqu'elle est instanciée, cette classe instancie à son tour un
processus, générique lui aussi, qui est chargé de traiter les exceptions inconnues, et dont la
classe doit être redéfinie au niveau des workflows utilisateurs.
Ces deux classes permettent de traiter n'importe quel type d'exception mais restent à un niveau
très global qui ne permet pas toujours de répondre de façon appropriée à la situation, bien
qu'ils permettent d'éviter la "panne". Il est donc conseillé de les spécialiser afin de créer des
188
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
catégories d'exceptions, dont les processus de prise en charge seront plus spécifiques - tout en
restant dans une granularité de traitement assez grossière.
189
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Dans les paragraphes précédents, nous avons souvent utilisé les diagrammes de classes et les
paquetages pour la représentation des workflows et de leurs constituants. Les diagrammes de
classes et de composants (paquetages) ne représentent que la finalité de l'usage de la méthode,
le résultat à obtenir. Comme nous allons le voir, nous faisons appel à d'autres diagrammes qui
nous permettent d'élaborer peu à peu les modèles finals.
1. La première de ces raisons est due à la nature Objet des composants du framework. En
effet, étant donné que celui-ci est composé de classes, et que nous utilisons les propriétés
des Objets pour la mise en œuvre des mécanismes d'adaptation, il est nécessaire d'utiliser
des formalismes propres à ces concepts. C'est ce qui est fait au niveau de la représentation
de la structure des workflows, à l'aide des diagrammes de classes. Cependant, en plus de
la modélisation de leur structure, il est nécessaire de représenter la dynamique des
workflows : le flux des tâches et des artefacts, les attributions de rôle, etc. Or un autre
intérêt d'UML est le grand nombre de types de diagrammes qu'il propose, et notamment
des diagrammes permettant de représenter la dynamique des systèmes : les diagrammes
d'activités, les diagrammes de collaboration et les diagrammes de séquence. Cet intérêt est
mis en relief par la forte cohérence qui existe entre les différents types de diagrammes. En
effet, les diagrammes de collaboration et d'activités permettent de représenter le
déroulement d'un processus en y représentant les objets qui participent à sa réalisation. Il
est par conséquent facilement possible de les utiliser pour l'élaboration d'autres
diagrammes, en particulier les diagrammes de classes. Du moins, il est aisé d'établir la
correspondance entre les éléments d'un diagramme d'activités et ceux d'un diagramme de
classes, puisqu'il s'agit pour la plupart des mêmes éléments présentés sous des aspects
différents. Nous percevons donc l'usage d'UML comme un moyen d'assurer la cohérence
entre les différents points de vue, grâce à leur capacité d'intégration commune. Cette
propriété n'est pas proposée par toutes les méthodes de modélisation où il est parfois
difficile de trouver les liens qui existent entre un point de vue et un autre.
190
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
2. Au début de ce chapitre, nous avons constaté qu'UML est largement répandu au sein de la
communauté des spécialistes des Objets, mais également dans d'autres domaines - non
informatiques - dont les membres utilisent déjà certains types des diagrammes du langage.
Beaucoup d'entre eux possèdent également une culture UML générale. Par conséquent,
UML peut être perçu non seulement comme un moyen d'intégration et de cohésion entre
les modèles, mais également en tant que langage commun et outil de cohésion des
différentes équipes attachées à la réalisation d'un projet. Cette possibilité nous semble
particulièrement intéressante pour la modélisation et la conception de workflows, qui
rassemble les acteurs et les concepteurs des processus, ainsi que les éventuels
développeurs Workflows. Cet aspect d'intégration pluri-culturelle et pluridisciplinaire est
relevé par d'autres personnes, notamment [Link] [FOWLER et al. 97] et [Link]
[HRUBY 98]. Ces deux spécialistes, le premier dans le domaine des Objets, l'autre du
Workflow, estiment qu'UML est un outil facilitant la communication entre les différents
partenaires d'un projet. En particulier, les diagrammes de cas d'utilisation et les
diagrammes d'activités (ou de séquence) proposent des formalismes simples et clairs, qui
permettent de bien appréhender les premières approches du problème. P. Hruby préconise
d'ailleurs l'utilisation de ces deux types de diagrammes en tant qu'outil commun pour la
définition des besoins et des fonctionnalités des systèmes Workflows, par les utilisateurs
et les concepteurs de ces systèmes.
Le formalisme des cas d'utilisation est simple à comprendre et à repérer car il s'appuie sur
deux notions, ce qui facilite la création des diagrammes ou du moins, leur compréhension. En
ce qui nous concerne, il nous semble intéressant de faire un rapprochement entre les cas
191
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
La simplicité des cas d'utilisation, nous l'avons constaté, fait de ce type de diagramme un
vecteur de communication de choix. En effet, lors de la conception des modèles de processus,
les personnes qui en sont chargées travaillent en étroite collaboration avec les futurs acteurs
ou utilisateurs du processus. Leur but étant de comprendre, d'analyser et d'exprimer au mieux
leurs besoins et la situation. Il est donc très intéressant de disposer d'un média commun de
dialogue, qui de plus est spécifiquement dédié à l'analyse des besoins. Cet avantage combiné
au rapprochement des concepts des cas d'utilisation avec ceux du workflow, font des cas
d'utilisation un moyen très intéressant pour une première analyse et conception des modèles
Workflows. C'est donc à cette fin que nous les utilisons dans notre méthode. Ce choix a
également été retenu par d'autres méthodes pour les mêmes raisons, notamment celle
développée par le système WIDE [WIDE 97], [BARESI et al. 99], ainsi que par la méthode de
spécification des systèmes Workflows, développée par P. Hruby [HRUBY 98].
Spécialiste
médical
Dans l'exemple suivant, nous illustrons la façon Expert
dont il est possible d'utiliser les cas d'utilisation Valider
assurance
le dossier
des workflows. Considérons le processus de médical
Validation
traitement des remboursements des frais administrative
du dossier
médicaux d'une assurance. Après une première Spécialiste Agent
médical
analyse, on peut globalement le décomposer en comptable
Rembourser
trois tâches (au sens large) principales : la
validation du dossier par deux médecins Workflow
rattachés à la compagnie, la validation
administrative du dossier par un expert et enfin Figure IV.50 – Première analyse
le remboursement des frais au client. d'un workflow à l'aide de cas
d'utilisation
Spécialiste
Après une première analyse aboutissant au médical Validation
diagramme de la figure IV.50, il est possible de médicale 1
192
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
vérification auprès de l'hôpital concerné de la véracité des documents produits par le client, et
enfin, une mise à jour de son dossier. Nous pouvons donc raffiner le cas d'utilisation
précédent en trois nouveaux cas, tels que nous le montrons dans la figure IV.51.
La première étape de la méthode a conduit, après une analyse plus ou moins approfondie, à
une première modélisation de la structure du processus. La deuxième étape consiste
maintenant à approfondir ce modèle, à lui "donner vie", c'est à dire à y représenter les flux des
tâches, les événements déclencheurs et ceux qui sont générés, les choix qui peuvent être
réalisée, ainsi que les objets qui y sont manipulés.
Cette étape est concrétisée à l'aide des diagrammes d'activités d'UML. Ceux-ci sont utilisés à
différents niveaux de granularité, depuis la représentation du fonctionnement d'une méthode
d'un objet, l'échange des messages entre objets ou plus globalement, le déroulement d'un
processus. Ainsi que nous l'avons dit dans le deuxième chapitre de ce mémoire, les
diagrammes d'activités proposent un ensemble de notions très intéressantes au niveau du
Workflow. En effet, il est possible d'y représenter les activités et leur flux, ainsi que celui des
objets manipulés qui sont également représentés, les événements et/ou les contraintes en
entrée des activités, ainsi que les rôles
Medecin Medecin Expert Assurance Comptable
chargés de les réaliser. De plus, les
diagrammes d'activités proposent des
opérateurs de choix (branchements Validation
Validation
conditionnels) ainsi que des opérateurs Médicale 1 Médicale 2
de synchronisation ou de mise en
parallèle des flux. Nous utilisons les
Concertation
diagrammes d'activités afin d'affiner les
[conforme]
détails des modèles obtenus par les cas [anomalie]
d'utilisation. Cet affinage peut par ailleurs Dossier
193
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
194
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Activité
Objet Artefact
… ExpressionLogique
… BCF_P
BCF_Seq
BCF_Boucle
XXX Role
Start
EndWorkflow
Jusqu'à présent, la conversion est à la charge des concepteurs. Nous espérons toutefois
pouvoir ajouter cette fonctionnalité à l'éditeur que nous avons développé, qui ne permet pour
le moment, que de créer des diagrammes de composants. L'utilisation de l'éditeur devrait
permettre de créer les trois types de diagrammes, en proposant des fonctions de translation de
l'un à l'autre, notamment entre les diagrammes d'activités et les diagrammes de composants
(classes 2FLOW) correspondants.
Avant de passer au diagramme de classe du processus d'hospitalisation que nous avons pris
pour exemple, il est intéressant de remarquer que les composants 2FLOW peuvent en fait
s'adapter à tous types de concepts, pour peu que des fonctions de transition soient définies. En
effet, les classes de base du framework correspondent dans leur ensemble à des concepts
195
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
classiques du Workflow. Par exemple, les concepts de la méthode ARIS pourraient être
utilisés pour la plupart pour construire un workflow à l'aide des composants de notre
framework. Une perspective intéressante de notre travail, sur laquelle nous reviendrons,
pourrait donc consister à enrichir l'éditeur de certains modules de "mapping", entre des
formalismes spécifiques à tel ou tel type de notation ou de méthode Workflow, et les
composants de 2FLOW. Les classes étant générées par la suite sur la base des fonctions de
transitions et d'un moteur commun de génération, celui qui est actuellement utilisé.
<<Activité>> <<Evénement>>
ExamenDM DossierAConforme
<<Evénement>> <<Evénement>>
Anomalie Incoherence
<<Activité>>
Concertation
<<Activité>>
ContacterHopital
<<Evénement>> <<Evénement>> <<Activité>>
DossierMConforme DeclarationOK MiseAjourDossier
196
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Dans ce paragraphe, nous allons nous intéresser aux solutions d'adaptabilité (et plus
globalement de flexibilité) apportées par d'autres frameworks et d'autres systèmes Workflows,
et les comparer avec celles de 2FLOW. Etant donné le nombre important de systèmes et
d'architectures existants, nous ne décrivons ici qu'un nombre réduit de ceux qui, à notre avis,
traitent le mieux la question de la flexibilité des Workflows.
Micro Workflow adopte une approche par métamodèle, dans laquelle sont définis trois types
d'objets (métaclasses) situés à un niveau d'abstraction élevé - que Manolescu appelle
"knowledge level" :
1. Le premier de ces types est la classe "ProcedureType" - métaclasse d'une procédure. Elle
se décline en plusieurs sous types, respectivement :
§ "Sequence procedure", qui est une procédure dont le rôle est d'assurer la séquentialité
de l'exécution des procédures qui la composent.
§ "ConditionProcedure", qui sert à définir une condition dont la satisfaction permet de
poursuivre l'exécution vers l'une des procédures qui la composent.
§ "ItérativeProcedure", dont le rôle est d'exécuter itérativement ses procédures
composantes.
197
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Micro Workflow conçoit la structure d'un processus comme un arbre de procédures, dont
la racine et les n œuds sont des procédures de contrôle de flux, et les feuilles des
procédures "primitives". Cette structuration ressemble à celle des Blocs de Contrôle de
Flux de 2FLOW. Nous pouvons toutefois reprocher à Micro Workflow de ne pas faire de
distinction entre activités et contrôle de flux en les réunissant sous un même type de base.
Or la sémantique des deux entités est différente, et celles-ci correspondent à deux points
de vue distincts que nous séparons dans 2FLOW : le point de vue "processus métier",
exprimé par la composition des processus en activités et sous processus, et le point de
vue "logique" qui exprime le contrôle de flux des activités. De plus, il nous semble erroné
de considérer qu'une activité est "un type" de contrôle de flux - comme le suppose la
relation d'héritage entre la classe procédure primitive et la classe procédure de Micro
Workflow. La non distinction de ces deux notions risque donc, à notre avis, d'être source
de confusion chez les concepteurs et les développeurs.
Lors de l'exécution, les métaclasses de Micro Workflow instancient des classes de niveau
inférieur (appelé "operational level") qui leur sont associées (respectivement "Procedure",
"Context" et "Ressource").
Après ce tour d'horizon de Micro Workflow, nous allons à présent nous intéresser aux six
points de comparaison que nous avons définis.
Bien que Micro Workflow ne propose pas de mécanismes objets Workflows, il est
parfaitement possible de réutiliser les composants qu'il définit, c'est d'ailleurs son principal
objectif en tant que framework. Manolescu prévoit deux modes de réutilisation et d'adaptation
hors exécution :
198
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
Initialement, Micro Workflow ne proposait pas de moyens d'adapter les composants d'un
workflow en cours d'exécution [MANOLESCU 00]. Il semble cependant qu'une mise à jour
récente du framework prenne en compte cet aspect [MANOLESCU et al. 00]. Pour ce faire,
les concepteurs du framework ont implémenté un éditeur visuel (un "Visual Builder"), qui
permet à l'utilisateur du framework de visualiser les propriétés d'une classe (uniquement les
attributs), de lui en ajouter de nouvelles ou d'en retirer. Chaque propriété peut correspondre à
une classe du framework, ou être définie par l'utilisateur.
L'éditeur visuel de Micro Workflow est similaire au contrôleur générique de 2FLOW (décrit
au paragraphe 4.2.1). Il permet d'observer les attributs des classes et de les modifier grâce à
des mécanismes d'introspection. A l'instar du contrôleur de 2FLOW (§4.2.1), les
modifications sont possibles sans nécessiter des connaissances en programmation. Toutefois,
l'éditeur visuel est limité à la modification des attributs d'une classe et ne peut pas en modifier
le comportement (ajouter, modifier ou supprimer des méthodes), ce qui est possible avec
l'éditeur de composants de 2FLOW.
§ Revenir sur une procédure ayant déjà été exécutée. Cette fonctionnalité est très utile
lors de l'échec d'une procédure. En effet, en revenant sur une procédure, il est possible
de l'exécuter une seconde fois, ou de la remplacer par un nouveau sous-arbre.
Dans la nouvelle version, les concepteurs affirment qu'il est également possible d'ajouter ou
de supprimer des procédures au sein d'un processus à l'aide de l'éditeur visuel, puisque ce
dernier permet de manipuler les attributs d'une classe, en particulier ceux d'une procédure. La
199
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
nouvelle version permettrait également de propager les adaptations sur deux niveaux (local et
global).
Micro Workflow peut prendre en charge les acteurs automatiques – à l'aide de la classe
Ressource – et les acteurs humains, par l'intermédiaire d'une liste de tâche qui leur est
associée. Toutefois, étant donné que ce framework n'utilise pas la notion de rôle, il n'y a pas
d'indépendance entre une procédure et la ressource qui la réalise, comme nous l'avons
mentionné au début du paragraphe 6.1.
Le framework Micro Workflow ne prend pas en compte les exceptions et ne propose pas de
moyens pour les représenter ou les traiter explicitement. Il incombe aux utilisateurs d'ajouter
au framework une nouvelle classe de ce type, ou de détourner l'usage des pré-conditions
utilisées pour l'exécution des activités, pour gérer des exceptions.
Micro Workflow représente les artefacts manipulés par les procédures sous la forme de
"Context Object". Chaque objet de ce type est en fait un agrégat de données, qu'une procédure
peut manipuler au travers de l'interface de l'objet contextuel. Les artefacts restent sous la
forme de données informatiques, comme c'est le cas pour les autres systèmes et architectures
Workflows.
Micro Workflow est un framework qui présente des concepts et des fonctionnalités
intéressantes. Il est essentiellement destiné à un usage au niveau middleware, par des
informaticiens. Bien qu'il propose des moyens d'adapter et de réutiliser les composants des
workflows, ceux-ci restent quelque peu limités dans la version actuelle du framework,
notamment pour les adaptations dynamiques. Il semblerait toutefois que des améliorations
soient en cours de réalisation dans la nouvelle version, particulièrement dans la mise en œuvre
de mécanismes réflexifs pour l'adaptation des workflows. Micro Workflow souffre de plus de
certains défauts que nous avons soulignés, comme le fait de ne pas établir de distinction entre
contrôle de flux et activité, ou de ne pas introduire d'indépendance entre acteurs et activité.
Enfin, ce framework ne prend en charge que les types d'artefacts électroniques.
Micro Workflow présente toutefois une approche très efficace de la gestion des processus que
nous qualifions "d'externes" (appelé "federated procedures" dans Micro Workflow),
notamment grâce à l'utilisation de CORBA. Nous n'avons pas discuté de cet aspect du
framework mais plus de détails à ce sujet peuvent être trouvés dans [MANOLESCU 00].
200
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
6.2 Endeavors
Endeavors [BOLCER 98], [HITOMI et al. 99], [JOHNSON 99] est un système Workflow
orienté objet issu de la recherche, récemment commercialisé (hhtp://[Link],
[Link] Il est défini par ces concepteurs comme étant un système de
gestion de processus ouvert et extensible. Endeavors est construit sur la base d'un autre
système Workflow nommé Teamware [YOUNG 94], [TEAMWARE 99], développé au sein
du même laboratoire et également commercialisé, dans une filiale du groupe Fujitsu
([Link]
Endeavors se base sur l'architecture objet de son prédécesseur dont il hérite de l'ensemble des
fonctionnalités classiques des systèmes Workflow. Endeavors en propose également de
nouvelles, permettant l'adaptation des processus ainsi que l'adaptation et la réutilisation de
leurs composants, hors et en cours d'exécution,. En particulier, il met en œuvre des
mécanismes de réflexivité dont certains sont proches de ceux proposés par 2FLOW.
§ La classe "Activity" : elle sert à définir les activités d'un processus. Une activité est
réalisée par des agents automatiques ou des utilisateurs humains. Elle utilise des
"ressources" et consomme et produit des "artefacts". A l'instar de Micro Workflow,
certaines activités servent à définir le flux de contrôle du processus (début, fin,
branchement, mise en parallèle, synchronisation).
§ La classe "Arc" permet de définir des dépendances entre catégories. En d'autres termes,
il décrit les flux de contrôle, de données et de ressources, existants entre deux
catégories.
§ Enfin la classe "MetaClasse" est comme nous l'avons mentionné, la classe mère de
toutes les classes d'Endeavors. Elle sert d'interface pour la manipulation des classes
catégories, grâce à des mécanismes réflexifs.
201
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
De par leur nature objet, les composants d'Endeavors sont réutilisables. La réutilisation se fait
en créant de nouvelles classes à partir des catégories existantes. Les classes obtenues sont soit
de nouvelles catégories, soit des "spécifications" qui servent à construire les workflows des
utilisateurs. L'exécution des workflows aboutit à la création "d'instances" des spécifications.
La réutilisation et l'adaptation se font via l'outil principal d'Endeavors, qui est son panneau de
contrôle. Ce dernier permet d'accéder de façon réflexive à l'ensemble des workflows (appelés
projets) et aux instances de leurs classes, s'ils sont en cours d'exécution. Les accès se font via
un ensemble de fenêtres ("artists") permettant respectivement de décrire les catégories, les
spécifications, les attributs et les instances. Par comparaison avec 2FLOW, le panneau de
contrôle d'Endeavors correspond simultanément à une partie de l'éditeur et au contrôleur
générique de notre framework.
La version d'Endeavors que nous avons testée, ainsi que les documents que nous avons lus sur
ce système ne mentionnent pas la présence de mécanismes objets Workflows pour la
spécialisation de processus. Le seul moyen de spécialiser un processus est d'en faire une
copie, puis d'en modifier son contenu à l'aide du panneau de contrôle.
202
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
définition. Ceci est un défaut important du système car une modification sur la définition
implique que toutes les futures instances seront créées à partir de la nouvelle définition, ce qui
n'est pas nécessairement le résultat souhaité. Dans 2FLOW, la distinction entre plusieurs
niveaux d'adaptation permet une gestion plus pointue des adaptations.
La classe activité contient deux attributs, l'un nommé "assignedTo" qui permet d'affecter
l'activité à une personne, et l'autre "automate", qui la transmet à un acteur automatique. Cette
approche demande donc au concepteur du workflow de savoir à l'avance quel acteur est
chargé de réaliser l'activité, ce qui réduit son intérêt. En effet, s'il est nécessaire de faire la
distinction entre activités "humaines" et activités automatiques, il n'est plus possible de
remplacer un acteur humain pas un acteur automatique lors de l'exécution, et réciproquement.
Comme nous l'avons indiqué précédemment, les artefacts manipulés par les activités
d'Endeavors sont des documents électroniques. Il n'est donc pas possible, comme le propose
2FLOW, de gérer des objets physiques. Néanmoins, Endeavors propose un ensemble
intéressant de méthodes pour la catégorie "artefact", allant de la commande d'ouverture du
fichier à l'invocation des outils permettant sa visualisation. Endeavors permet également -
atout très intéressant - de gérer le versionnage des documents et de les partager entre plusieurs
activités.
Endeavors est un système intéressant, certainement l'un de ceux qui prennent le mieux en
compte la question d'adaptabilité des workflows. Parmi ses principaux intérêts, nous citerons
la réflexivité du modèle sous-jacent, et la liaison dynamique des comportements dont nous
nous sommes inspirés pour l'invocation des services des acteurs automatiques 2FLOW. Notre
framework propose toutefois des solutions mieux adaptées à certains problèmes que rencontre
Endeavors, tels la gestion des exceptions, l'indépendance entre activités et acteurs, la gestion
des artefacts généralisée à tous types d'objets et la spécialisation Workflow des processus, qui
n'est pas possible avec Endeavors.
Enfin, il est important de signaler qu'Endeavors s'est orienté vers la gestion de workflows via
le Web afin de supporter les utilisateurs déconnectés, l'un des autres axes importants de la
recherche Workflow.
203
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
6.3 TriGSflow
TriGSflow est un système Workflow hybride, dont le métamodèle est composé de classes
d'objets, mais dont une partie importante des mécanismes est directement basée sur ceux des
bases de données [KAPPEL et al. 95], [KAPPEL et al. 98]. TriGSflow est issu de la recherche
et est aujourd'hui commercialisé sous le nom de "Verve" ([Link] en tant que
moteur Workflow intégrable à d'autres applications, notamment de e-commerce.
Dans le cas des agents humains, une activité est concrétisée par l'envoi d'un message
vers la worklist de la personne sélectionnée. Ce message peut être associé à un
ensemble de données (ou de documents électroniques), référencés dans l'activité en
question. Les valeurs de ces références sont stockées dans la base de données sur
laquelle est implémenté le système TriGSflow.
Remarquons que les agents automatiques disposent également d'une worklist dont le
rôle est de gèrer la file d'attente des messages envoyés aux applications.
204
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
§ Enfin, une classe "Folder" est associée à une activité en cours. Elle fait référence à la
worklist de l'acteur et aux données de l'activité.
Contrairement aux deux architectures que nous avons présentées auparavant, le système
TriGSflow n'est pas entièrement orienté objet, mais, nous l'avons dit, adopte une approche
hybride. En effet, la modélisation de workflows dans TriGSflow se fait à l'aide d'éléments se
rapportant aux composants du métamodèle (processus métier, activités, agents, dossier) ainsi
qu'avec des éléments de l'ensemble des classes d'arrière plan (contrôleurs de flux
essentiellement). Les modèles sont ensuite traduits sous la forme de règles ECA qui décrivent
entièrement le workflow.
Trois types de règles sont disponibles : les règles contrôlant le flux des activités (générés à
partir des contrôleurs de flux), les règles gérant la sélection des agents et leur affectation aux
activités et enfin, les règles gérant les files d'attentes des worklists. Les règles sont associées
aux activités du workflows. Elles sont générées par le Système de Gestion de Base de
Données (SGDB) utilisé par TriGSflow, qui, de plus, est chargé de gérer leur exécution.
TriGSflow présente donc une architecture monolithique car il n'est pas possible de le dissocier
du SGBD sous-jacent.
TriGSflow permet la réutilisation des classes définies par les utilisateurs. Dans le cas
particulier des classes d'activités, les règles ECA sont héritées telles quelles car il n'est pas
possible de les spécialiser. Par contre, les utilisateurs peuvent surcharger les règles d'une
activité, c'est à dire les remplacer par d'autres règles.
La réutilisation des règles - en particulier celles de contrôle de flux - nous semble toutefois
dangereuse car celles-ci sont normalement générées d'après le modèle workflow. Il risque
donc d'y avoir des problèmes d'incohérence dans les nouveaux workflows, entre les règles
héritées et celles générées pour les autres classes.
Il n'est pas possible de spécialiser des processus directement dans TriGSflow (donc de
spécialiser la classe "BusinessProcess"). A l'instar des deux autres architectures que nous
avons présentées, TriGSflow ne met pas en œuvre de mécanismes objets Workflows. Par
ailleurs, comme nous l'avons mentionné ci-dessus, il ne nous semble pas recommandé de
réutiliser les règles ECA décrivant la dynamique d'un processus.
Il n'est pas possible d'adapter les instances des classes de TriGSflow en cours d'exécution. En
particulier, on ne peut pas modifier les comportements des acteurs lors de la réalisation du
processus, ce qui est regrettable. Par contre, il est tout à fait possible de remplacer les règles
ECA associées aux activités par d'autres règles, ou de modifier les données utilisées par les
activités (puisqu'elles n'utilisent que leur référence, qui est gérée par le SGBD sous-jacent).
205
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
L'adaptation du flux des processus en cours d'exécution est réalisable grâce à la possibilité de
remplacer les règles ECA par d'autres règles. La suppression et l'insertion d'activités est
également possible, mais uniquement par des artifices de programmation par lesquels le flux
des activités est dévié pour prendre en compte les nouvelles activités, ou au contraire, pour les
ignorer.
Etant donné que la notion de règle ECA est omniprésente dans TriGSflow et que celles-ci sont
l'un des mécanismes de référence de la gestion des exceptions (voir chapitre III), TriGSflow
peut gérer efficacement le problème des exceptions.
Les seuls artefacts gérés par TriGSflow sont les types assimilables par le SGBD sous-jacent
(donc essentiellement des données, des "tables" et des documents électroniques).
TriGSflow se démarque des autres systèmes et architectures par son approche orientée objet -
base de données. Ses concepteurs parlent d'ailleurs parfois de système de base de données
objet actif [KAPPEL et al. 98] pour la gestion de Workflow. TriGSflow tire profit avec succès
des fonctionnalités apportées par les SGBD actifs, et fait incontestablement partie du clan des
systèmes Workflow issus des bases de données. Bien que la réutilisation des composants soit
partiellement possible, et bien que la gestion et l'adaptation des flux et des données ne soit pas
un problème pour ce système, il n'en est pas de même pour les propriétés des composants et
leur comportement, en cours d'exécution.s. Ces carences font que TriGSflow ne permet pas
vraiment une adaptation complète des processus.
§ Le manque de documentation technique détaillée sur ces systèmes, qui se limite le plus
souvent à un texte superficiel de quelques pages, mettant surtout en avant la présence
dans le produit de technologies "à la mode" (Java, XML, CORBA, EJB, etc.)
206
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
§ L'impossibilité matérielle de tester l'ensemble des produits, pour des raisons évidentes
de coût et de temps
Nous avons néanmoins pu nous pencher sur certains de ces produits, parmi lesquels nous en
citons deux qui proposent des solutions intéressantes :
7. Conclusion
Dans ce chapitre, nous avons présenté le framework 2FLOW, qui propose des solutions pour
la construction de workflows flexibles, ainsi qu'une méthode pour la conception de workflow
à l'aide des composants du framework. 2FLOW est basé sur un métamodèle objet et met en
œuvre des mécanismes objets Workflows qui, combinés avec des mécanismes réflexifs,
permettent d'adapter les workflows hors et en cours d'exécution.
Par rapport aux autres systèmes et architectures Workflows proposant également la mise en
œuvre de la flexibilité, 2FLOW se distingue par les caractéristiques suivantes :
207
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
En contrepartie, 2FLOW souffre d'un manque de maturité par rapport aux systèmes existants,
notamment en ce qui concerne les aspects de gestion de processus "externes", de sécurité et de
fiabilité des transactions. Ces aspects ouvrent plusieurs perspectives de recherche, sur
lesquelles nous reviendrons dans la conclusion de ce mémoire.
Bibliographie
[BARESI et al. 99] L. Baresi, F. Casati, S. Castano, S. Ceri, M.G. Fugini, I. Mirbel, B. Pernici.,
G. Pozzi. "WIDE Workflow Development Methodology". Report n°3027-6.
ESPRIT Project 20280. 3 Mars 1999.
[BOLCER et al. 96] G.A. Bolcer, R.N. Taylor. "Endeavors : A Process System Integration
Infrastructure". International Conference on Software Process (ICSP4).
Brighton, U.K.2-6 Décembre 1996.
[BOLCER 98] G. A. Bolcer. " Flexible and Customizable Workflow Execution on the
WWW". Mémoire de Thèse pour l'obtention du titre de "Doctor of
Philosophy in Information and Computer Science". University of California,
Irvine, USA. 1998.
[CAMPIONE et al. 97] M. Campione, K. Walrath. "The Java Tutorial". 1st Edition. Addison-
Wesley. 1997.
[DEMEYER 97] S. Demeyer. "Design Guidelines for 'Tailorable frameworks' ".
Communication of the ACM, Vol. 40, n°10. Octobre 1997.
[ECKEL 97] B. Eckel. "Thinking in Java". 1st Edition. Prentice-Hall. 1997.
[FOWLER et al. 97] M. Fowler, K. Scott. "UML Distilled. Applying the Standard Object
Modeling Language". Addison-Wesley. 1997.
[HITOMI 98] A. S. Hitomi, D. Le. "Endeavors and Component Reuse in Web-Driven
Process Workflow". Proc. of the California Software Symposium.. Octobre
1998.
[HRUBY 98] P. HRUBY. "Specification of Workflow Management Systems with UML".
OOPSLA 98, Workshop on Object Oriented WMS. 1998.
[INCONCERT 97] InConcert. "InConcert Specifications Document".
[Link] 1997.
[JOERIS et al. 98] G. Joeris, O. Herzog. "Towards Object-Oriented Modeling and Enacting of
Processes". TZI Technical Report 7/98, Center for Computing Technologies,
University of Bremen. 1998.
[JOHNSON 99] K. Johnson. "Endeavors".
[Link]
[KAPPEL et al. 95] G. Kappel, B. Pröll, S. Rausch-Schott, W. Retschitzegger. "TriGSflow,
Active Object-Oriented Workflow Management". Proc. of the 28th Hawaii
International Conference on System Sciences (HICSS'98). Janvier 1995. pp.
727-736.
[KAPPEL et al. 98] G. Kappel, S. Rauscht-Schott, W. Retschitzegger. "A Tour on the TriGS
Active Databse System - Architecture and Implementation". Proc. of the
ACM Symposium on Applied Computing (SAC'98). 27 Février - 1 Mars,
1998. pp. 211-219.
[KRUCHTEN 99] P. Kruchten. "The Rational Unified Process". Addison-Wesley. 1998.
[MANHES 98] S. Manhes. "Les patterns métier : extraction dans l'existant logiciel".
Rapport de DEA, Institut de Recherche en Informatique de Nantes.
Septembre 1998.
208
Chapitre IV : 2FLOW - Framework pour Workflows Objets Flexibles
209
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
Chapitre V
Application de 2FLOW – Le projet RESTER PROPRE
1. Application de 2FLOW
Nous allons dans ce chapitre décrire un exemple d'application du framework 2FLOW et de
ses propriétés, par la construction de workflows par assemblage de composants et la mise en
œuvre de leurs mécanismes d'adaptabilité. Nous nous intéressons à la gestion d'un processus
de recyclage "noble", réalisé sur une plate-forme générique de revalorisation de produits
manufacturés usagés, que nous décrivons dans les paragraphes suivants.
210
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
211
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
Le processus commence par la collecte des appareils en fin de vie. Les appareils sont
récupérés à la demande (de particuliers, de collectivités ou d’entreprises) et la collecte est
exécutée en fonction d'un plan établi par une unité logistique. Les appareils récupérés sont
ensuite soumis à une phase de diagnostic chargée d'évaluer leur état (pièces et composants).
Si l'appareil est jugé réparable il est acheminé vers l'atelier de réparation. Dans le cas
contraire, s’il est possible d’en récupérer des composants, une liste des éléments récupérables
est dressée et l'appareil est dirigé vers le démontage. Enfin, si l'appareil est jugé irrécupérable
ou si trop peu de pièces sont en état de marche, il est envoyé vers le recyclage "brut" (pour
l’extraction de matières).
Une fois le diagnostic établi et les séquences de réparation ou de démontage connues, les
appareils sont envoyés vers les ateliers (démontage ou réparation) en fonction des opérations
qu’ils auront à subir. Notons que les deux ateliers peuvent interférer puisque certaines
opérations de réparation peuvent en nécessiter d’autres de démontage. Dans les ateliers, le
démontage peut être réalisé selon trois modes : entièrement automatique, semi-automatique
ou entièrement manuel. Le choix de l’un de ces modes dépend de la complexité des
opérations à réaliser, de leur standardisation (si elles correspondent à un pattern référencé)
ainsi que du danger qu’elles peuvent faire courir à un opérateur humain. Par conséquent, les
ateliers sont composés de cellules semi-automatiques décrites dans [CHEVRON 99], pouvant
fonctionner selon l’un des trois modes précédents. Les patterns de désassemblage (référencés
dans le SGDT) sont fournis aux cellules ainsi que les données techniques sur les produits à
traiter, selon le niveau de granularité de détail souhaité (qui varie en fonction du type de
démontage : manuel ou automatique). Les cellules enrichissent à leur tour les informations sur
le produit en rapportant leurs différentes observations et évaluations. Enfin, les éléments
récupérés ou/et réparés sont placés dans des stocks, pour être réutilisés.
A un niveau plus élevé, nous envisageons la conception d’un réseau de plates-formes du type
de REX. En effet, avec la généralisation de l'intérêt du démontage, il est possible d'envisager
la distribution du processus de recyclage sur plusieurs plates-formes. Plusieurs scénarios sont
envisageables : les plates-formes peuvent être génériques (aptes à tous types de démontage)
ou spécialisées (dédiées à certains types d’appareils). Il est nécessaire dans ces deux cas
d'établir une coopération entre plates-formes et une distribution du processus de recyclage sur
le réseau. La répartition des activités pourrait se faire en fonction des disponibilités des plates-
formes ou par rapport à leur spécialisation, elles sont dans ce cas groupées en fonction des
compétences des plates-formes.
212
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
les acteurs d'une même plate-forme, mais également entre les plates-formes concernées par un
même processus. Par ailleurs, plusieurs problèmes d'ordre logistique sont à considérer, tels les
échanges de produits ou de composants entre les différents sites, etc.
Après concertation des différents membres du projet et compréhension de leur point de vue et
de leur conception du fonctionnement de la plate-forme, nous avons défini un ensemble de
contraintes et de besoins principaux qui devraient être satisfaits par l'usage de la technologie
Workflow [SAIKALI et al. 00], [SAIKALI et al. 99] :
Ces besoins peuvent être satisfaits grâce aux fonctionnalités des systèmes et de la technologie
"classique" du Workflow. Cependant, en plus des besoins d'ordre général dont nous venons de
parler, la plate-forme introduit un certain nombre de contraintes qui devront nécessairement
être prises en compte par la solution Workflow adoptée :
§ Contrairement aux processus qui sont traditionnellement gérés par les systèmes
Workflow, le processus de recyclage implique de façon importante des acteurs
automatiques dans la réalisation de ses activités. Cela est notamment vrai au niveau
des ateliers où, selon la configuration adoptée, les acteurs chargés du démontage
peuvent être de type humain ou automatique. Dans ce dernier cas, les appareils utilisés
(robots, automates, etc.) sont des acteurs à part entière, traitant des activités clés de la
chaîne des activités du processus.
Une autre contrainte directement liée à cet aspect est qu'il ne doit y avoir qu'une seule
configuration Workflow, quel que soit le type d'acteurs retenus. Il n'est en effet pas
envisageable, pour des raisons d'efficacité et de faisabilité, de construire plusieurs
213
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
§ La deuxième contrainte, qui découle en partie de ce que nous venons dire, est celle de
l'adaptabilité du processus. En effet, plusieurs facteurs peuvent nécessiter d'adapter le
processus de recyclage. Au niveau de la plate-forme, et en particulier à celui des
ateliers, les pannes des cellules de démontage et de réparation - qu'il est aussi
nécessaire de détecter - peuvent amener à une reconfiguration de l'atelier. Celle-ci peut
également être due à des évolutions technologiques qui exigent de remplacer le
matériel existant par un autre ou les méthodes utilisées par des méthodes plus récentes.
Par ailleurs, la plate-forme est soumise à des contraintes issues de l'activité même du
recyclage dont la législation peut changer (devenir plus stricte sur le pourcentage à
recycler, sur les méthodes à utiliser, etc.), ce qui amène à introduire des modifications
dans la façon de réaliser le recyclage et la revalorisation des appareils usagés. Ces
modifications peuvent concerner toutes les étapes du processus, depuis la collecte
jusqu'à la mise en stock des composants extraits ou des produits réparés. Par
conséquent, le système Workflow utilisé doit, lui aussi, pouvoir intégrer les
modifications, de la façon la plus transparente possible.
§ Enfin, la modélisation Workflow établie doit être compréhensible par l'ensemble des
acteurs - décideurs - du processus, aux spécialités diverses. En particulier, l'outil de
modélisation Workflow doit être partagé par tous les membres du projet "RESTER
PROPRE". En effet, la conception de REX est un travail coopératif mettant en jeu des
compétences différentes, aboutissant à la création de plusieurs modèles spécifiques.
Dans le souci de la mise en place d'un système intégré, il est primordial que ces
modèles soient cohérents entre eux et qu'il soit possible de trouver les relations
permettant de passer de l'un à l'autre. D'autre part, les membres du projet sont
représentatifs des domaines techniques et scientifiques nécessaires au bon
fonctionnement de la plate-forme, ils peuvent par conséquent servir "d'échantillon
expérimental" pour valider la modélisation Workflow du processus de recyclage.
Les composants de 2FLOW permettent de répondre aux besoins définis par la plate-forme, en
satisfaisant les contraintes qui y sont fixées. En effet, en plus de la plupart des fonctionnalités
"classiques" proposées par les systèmes Workflows, notre framework présente un ensemble
de propriétés qui sont directement concernées par les contraintes posées par la plate-forme
REX. En particulier, l'approche adoptée par le framework pour l'attribution des activités aux
acteurs nous paraît bien convenir à la prise en charge des acteurs humains et automatiques.
Par ailleurs, les capacités d'adaptabilité développées dans 2FLOW doivent nous permettre
d'appréhender les besoins d'adaptation à deux niveaux
214
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
Quel que soit le niveau d'adaptation, nous pensons pouvoir les traiter grâce aux mécanismes
d'adaptation et de modélisation dynamique, fournis par le framework.
Enfin, côté modélisation, les formalismes UML retenus pour le développement des workflows
à l'aide des composants 2FLOW représentent un atout supplémentaire étant donné la culture
générale UML acquise par l'ensemble des membres du projet. L'usage d'UML a donc été un
atout de communication et un outil de travail qui a permis de partager et d'intégrer les
différents points de vues sur le projet.
L'exécution de chaque workflow se justifie donc par l'objet d'un cas, qui est traité dans son
intégralité en tant qu'entité indépendante. En d'autres termes, les activités exécutées lors d'un
cas workflow ne traitent en général que l'objet de ce cas, ce qui n'empêche pas, bien entendu,
215
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
qu'un même acteur participe au traitement de plusieurs cas, donc réalise plusieurs instances de
la même activité, mais sur des objets différents.
Dans le cas de la plate-forme cependant, cette logique ne peut pas toujours s'appliquer de la
même façon. En effet, en appliquant ce même raisonnement, alors tout appareil introduit dans
la plate-forme REX devrait donner lieu à l'instanciation d'un cas d'un workflow que l'on
pourrait intituler "démontage d'un appareil". L'exécution de ce workflow aurait pour effet de
suivre l'évolution de l'appareil en question, depuis sa récupération, en passant par son
diagnostic, l'élaboration de ses séquences de désassemblage ou de réparation, jusqu'à son
passage en atelier. Or en fait, après concertation des membres du projet impliqués dans les
problèmes de logistique, d'ordonnancement des ateliers et de conception des cellules, nous
avons constaté qu'il n'était pas toujours possible de considérer que nous avons un processus de
recyclage en un seul "bloc", partant de la collecte d'un appareil jusqu'à sa mise en stock. En
effet, des problèmes de gestion de file d'attentes, de stocks et de lots font qu'il y a une
discontinuité entre les étapes principales du processus de recyclage. Cette discontinuité
implique que l'objet d'un workflow - en l'occurrence un appareil usagé – perd son statut
d'unicité lorsqu'il est associé à un lot. Considérons l'exemple d'un appel vers le centre de
collecte faisant état d'un appareil usagé disponible. Les contraintes logistiques d'optimisation
des déplacements font qu'il n'est pas possible de récupérer chaque appareil séparément. Ainsi,
lorsqu'un appareil est récupéré lors d'une collecte, l'objet du workflow dans ce cas n'est pas
l'appareil lui-même, mais le lot dont il fait partie. Cet exemple se répète pour d'autres étapes
du processus de recyclage, que nous aurons l'occasion de décrire dans la suite de ce chapitre.
Par conséquent, bien qu'on parle de processus de recyclage de façon globale, ce dernier n'est
en fait pas réalisé par un seul workflow global. Il est plus juste de parler de plusieurs
workflows, gérant des processus collaboratifs entre différents acteurs de la plate-forme,
associés à des objectifs spécifiques. Les effets cumulés de l'exécution des activités de ces
workflows décrit le fonctionnement de la plate-forme et réalise le processus de recyclage.
Monde Monde
extérieur extérieur
Workflow 2
Workflow 1
Workflow n
Plate-forme REX
216
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
Nous allons à présent étudier les workflows qui décrivent le fonctionnement de la plate-
forme. Pour chacun d'entre eux, nous appliquons pour l'instant les deux premières étapes de
notre méthode, c'est à dire de la détermination des processus et sous processus à l'aide des cas
d'utilisation et leur description en termes de diagrammes d'activités.
La collecte des appareils des produits usagés peut se faire selon deux modes [LANDRIEU
99]:
1. Un mode "passif", dont le principe est d'attendre que les appareils soient déposés dans la
plate-forme ou dans sa composante chargée de la collecte. Celle-ci peut correspondre à
des centres de récupération ou des centres d'achats, dans lesquels les produits sont achetés
aux personnes qui les y apportent.
2. Un mode "actif", qui consiste à aller chercher les produits usagés, ce qui nécessite
l'intervention de véhicules pour ramener les produits vers la plate-forme. Le mode actif
peut être réalisé de trois façons différentes :
217
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
Dossier
Nous allons à présent détailler chacun de ces
deux processus à l'aide du diagramme Evaluer Dossier:
d'activités appropriés. L'analyse affinée du dossier(s) archivé
Le processus générique de transport est initialisé par la soumission d'un plan de routage au
gestionnaire de transport. Ce dernier doit alors s'acquitter de sa mission, c'est à dire organiser
le déplacement des véhicules chargés de transporter des produits, en fonction du plan de route
fixé. L'activité de transport peut avoir plusieurs finalités : la collecte d'appareils, la circulation
de produits entre plates-formes, etc. mais elle est toujours réalisée de la même façon, à
quelques variantes près. Elle produit également deux événements exclusifs : la réussite, qui
exprime que le véhicule a mené à bien le transport dont il avait la charge ou l'échec dans le
218
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
cas contraire. En cas de réussite, le plan de route est validé. De plus si l'objectif du transport
était la récupération de produits, ceux-ci sont envoyés au stock où ils sont réceptionnés par le
chef magasinier qui doit organiser leur stockage.
Gestionnaire transport Chef Magasinier
Dans la figure V.9, nous avons introduit la relation UML "d'utilisation" (ou "d'inclusion")
entre use cases. Cette relation exprime le fait qu'un cas d'utilisation utilise les services d'un
autre cas d'utilisation. Plus précisément, elle indique que le use case "utilisateur" comprend
(inclue) les services proposés par l'autre use case. Cette relation est très intéressante à notre
niveau car en la "détournant" pour l'appliquer au Workflow, elle nous permet d'exprimer une
composition entre processus, sans avoir à affiner la vue du processus conteneur. L'intérêt est
donc d'exprimer les caractéristiques principales d'un processus dès les premiers diagrammes.
Par exemple dans le processus "requête de produits" (fig. V.9), la relation d'utilisation nous
permet de percevoir immédiatement qu'un processus de transport de produit est nécessaire
- "envoi de produits"- et que ce dernier est une spécialisation du processus générique de
transport. Etant donné que la relation d'utilisation exprime une inclusion, alors on en déduit
que le processus "envoi de produits" est un composant du processus "requête de produits".
219
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
Etablir
§ Son "modèle fonctionnel", qui décrit Etat du
diagnostic
Stock [Démontable
l'appareil en termes de fonctions et de ]
220
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
L'ensemble des informations techniques sur les appareils à évaluer est extrait du système
d'information de la plate-forme, le SGDT. Ce dernier contient un modèle global de chaque
appareil pouvant être traité par la plate-forme, diversifié en fonction des vues spécifiques sur
le produit (vues diagnostic, vue planification, modèles structurel, fonctionnel, séquences de
désassemblage, etc..) [BOUTROS et al. 00a], [BOUTROS et al. 00b]. Ce modèle peut être
enrichi par les observations réalisées en cours du processus de recyclage. Par exemple, les
constatations faites par le diagnostic sur les défaillances concernant un modèle de produit,
peuvent être ajoutées aux informations de la vue diagnostic sur le produit. Ainsi, les pièces
concernées par ces défaillances récurrentes pourront être testées en priorité et l'origine de leur
panne connue.
1. Le produit est réparable et dans ce cas il est envoyé au processus de réparation. Les
artefacts qui lui sont passés sont respectivement l'appareil lui-même, ainsi que la "liste
des pannes", générée par l'activité "établir liste de panne", qui contient la description des
dysfonctionnements constatés sur l'appareil et leur localisation (en terme de pièces).
2. Le produit n'est pas réparable mais il est possible d'en extraire certaines pièces en état de
marche. Dans ce cas, la liste des pièces à démonter est générée par l'activité "établir liste
des pièces". Si la liste des pièces était déjà existante, alors l'appareil et directement
envoyé à l'atelier de démontage, sans passer par la tâche de planification. En effet, les
travaux menés par les membres du projet chargés de l'étude du diagnostique [KOBEISSI
et al. 00] et de la planification [GERNER et al. 99], [GERNER et al. 00] estiment que
dans la majorité des cas, il s'agit toujours d'extraire les mêmes listes de pièces des
appareils. Par conséquent, il est possible d'établir des séquences de désassemblage
optimisées une fois pour toutes, puis de les lier au modèle du produit, ce qui permet
d'accélérer le processus de recyclage. Si toutefois la liste des pièces n'est pas déjà
référencée dans le modèle du produit, alors elle est envoyée à un agent de planification,
qui est chargé d'établir la meilleure séquence de désassemblage. Celle-ci est par la suite
envoyée avec l'appareil à l'atelier de désassemblage. Notons qu'elle est également
automatiquement liée au modèle du produit concerné, et associée à la liste de pièces
correspondantes.
3. Le produit n'est ni réparable, ni récupérable. Dans ce cas, il est directement envoyé vers
un processus de recyclage brut, qui n'a pas lieu sur la plate-forme (il peut avoir besoin de
la mise en œuvre d'un processus de transport que nous ne représentons pas ici).
221
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
pour l'instant et il est donc plus vraisemblable que la modélisation se fera "à la main". Nous
pouvons néanmoins nous intéresser aux apports de 2FLOW à la modélisation des processus
de désassemblage.
Nous l'avons dit, le framework nous permet de gérer des acteurs automatiques aussi bien que
des acteurs humains. Ceci est un atout important au niveau des ateliers, puisqu'il est possible
d'y avoir plusieurs configurations (automatique, semi-automatique ou manuelle à des niveaux
de supervision ou d'action [DAVID et al. 99b]). Il faut cependant remarquer que selon qu'un
acteur est humain ou automatique, les artefacts et les activités qui lui sont attribuées ne
possèdent pas le même contenu.
Considérons par exemple une activité d'extraction d'une pièce Px d'un appareil A. Si cette
activité, attribuée à un "opérateur de désassemblage", est prise en charge par un opérateur
humain, alors ce dernier doit obtenir la description du produit et celle de la pièce Px. Il peut
éventuellement avoir besoin - en fonction de son niveau - des types d'outils à utiliser. Par
contre, dans le cas d'un acteur automatique, le niveau de détail des informations à passer est
beaucoup plus profond. Un robot nécessite doit avec précision la géométrie et la topologie de
l'appareil afin qu'il puisse atteindre la pièce désirée. Bien que 2FLOW permette sans problème
la réalisation d'une activité par un acteur humain ou automatique, le problème qui se pose est
au niveau des artefacts : comment faire la distinction entre les artefacts dédiés aux acteurs
humains et ceux des acteurs automatiques ? En effet, il n'est pas souhaitable de prévoir deux
types d'activités (l'une pour les acteurs humains, l'autre pour les automatiques). Il est de même
exclu de laisser à l'activité le soin de déterminer le type de l'acteur qui prend l'activité. Nous
proposons donc deux solutions à ce problème :
1. La solution la plus simple consiste à prévoir les deux types d'artefacts, et de les lier tous
les deux aux activités du modèle. Cette solution ne pose pas de problème particulier au
niveau de la conception - il faut bien sûr prévoir deux classes d'artefacts. Les deux
artefacts sont par la suite envoyés à l'acteur concerné, qui se chargera à son niveau de faire
le tri. Celui-ci peut être fait au niveau de la méthode correspondant à l'activité dans la
classe de l'acteur, soit au niveau de l'acteur lui-même.
faireX : Activite :DocumentElectronique :Acteur
2. La deuxième solution est un peu plus
compliquée. Elle consiste à déplacer le
problème de l'activité à l'artefact. Nous faireX(objet:DocumentElectronique)
avons dit que lors de l'invocation de la sendArtefact(type de l’acteur)
méthode d'un acteur correspondant à
une activité, les références des artefacts évaluation
222
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
Nous n'avons pas encore implémenté cette solution au sein du workflow car elle ne nous
semble pas nécessaire pour l'instant, la première solution étant très acceptable. Elle peut
néanmoins être mise en œuvre par les développeurs workflows eux-mêmes, sans grand effort
de programmation.
Au niveau de la plate-forme REX, les artefacts qui sont associés aux activités dépendent
fortement de la stratégie de démontage adoptée dans l'atelier. En effet, on peut choisir d'avoir
un désassemblage complet par cellule ou bien d'attribuer à chaque cellule un sous-ensemble
des tâches du désassemblage - à la limite, une pièce par cellule. Selon le cas, le sens d'une
activité diffère. N'y a t'il qu'une seule activité (désassembler appareil A) ou une activité par
pièce (extraire pièce) ? Tout dépend du point de vue des organisateurs de l'atelier.
Si l'on considère que le désassemblage complet d'un appareil est une seule activité, alors les
artefacts à passer à l'acteur concerné sont :
§ Dans le cas manuel, il n'est théoriquement nécessaire d'envoyer à l'opérateur que la liste
des pièces à extraire. En fait, il est plus vraisemblable de tenir compte du niveau de
l'opérateur en question. En effet, nous avons prévu la possibilité de la présence dans les
ateliers d'opérateurs novices aussi bien que d'experts. Afin de fournir un support
informationnel adéquat à ces opérateurs, un des objectifs du projet a été la conception d'un
didacticiel multimédia pour apprendre le désassemblage [BOUTROS et al. 00c]. Un
générateur de didacticiels a également été conçu, afin de générer automatiquement des
didacticiels spécialisés à chaque appareils pouvant être traité par la plate-forme. Afin de
produire des didacticiels adaptés au niveau de l'utilisateur (novice ou expert pour
l'instant), le générateur fait appel à un éditeur de patterns de présentation, actuellement en
cours de développement dans le projet. Par conséquent, un autre artefact à être envoyé à
l'utilisateur est le didacticiel lui-même (ou plus exactement son URL). Bien entendu,
l'appareil à démonter est également envoyé en tant qu'artefact.
Si nous considérons que nous avons une activité par pièce à extraite :
§ Dans le cas automatique, il convient alors de fractionner les séquences de démontages afin
de les particulariser pour chaque pièce. Dans ce cas, on obtient une séquence de
démontage global pour l'ensemble de l'appareil, composée de sous-séquences spécifiques
à chacune des pièces. Ce sont ces sous-séquences qui sont envoyées sous forme
d'artefacts, accompagnées bien entendu de l'appareil lui-même.
223
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
§ Dans le cas humain, les artefacts à envoyer sont les mêmes que dans le cas précédent, sauf
qu'il ne faut plus envoyer la liste des pièces à extraire, mais uniquement le nom de la pièce
concernée.
Remarquons enfin que si les activités sont définies en fonction des pièces à traiter, se pose
alors la question de leur correspondance avec les méthodes des acteurs. Nous avions déjà
soulevé ce problème dans le chapitre IV, et nous y avions évoqués la solution de méthodes
génériques. Nous pensons que cette solution est la mieux adaptée aux cellules et aux
opérateurs de la plate-forme. En effet, il n'est pas concevable de créer pour chacun d'entre
eux, une méthode spécifique à chaque pièce pouvant être traitée, ce qui aboutirait à une
"explosion" du nombre de méthodes en fonction du nombre d'appareils pris en charge par la
plate-forme.
L'approche la mieux adaptée est celle que nous avons proposée dans le chapitre 4. Elle
consiste à créer des classes d'activités pour chacune des pièces, mais que ces classes fassent
référence à des méthodes génériques dans la classe de l'acteur associé. Nous utilisons pour ce
faire l'attribut "invokedService" de la classe "Activité", en lui affectant le nom du service
générique à invoquer chez l'acteur – au lieu d'invoquer la méthode ayant le même nom que
l'activité. Nous avons ainsi déterminé un ensemble de services que devait fournir un opérateur
de désassemblage, nous les décrivons dans la figure ci-dessous.
<<Activité>> <<Rôle>>
DecouperCouvercle OperateurDesassemblage
invokedService =couper
...
+ extraire ( ... ) <<Acteur>>
+ separer ( ... ) Robot_ZX
+ devisser ( ... )
<<Activité>> + couper ( ... ) ...
ExtraireCouvercle + declipser ( ... ) + extraire ( ... )
+ saisir ( ... ) + separer ( ... )
invokedService =extraire + ecarter ( ... ) + devisser ( ... )
... + deposer ( ... ) + couper ( ... )
+ declipser ( ... )
+ saisir ( ... )
+ ecarter ( ... )
<<Activité>> + deposer ( ... )
ExtraireMoteur
invokedService =extraire
...
A chaque étape du processus de l'atelier, il est intéressant d'ajouter des informations sur l'état
d'avancement du désassemblage d'un produit. Ces informations peuvent être utilisées par des
modules de contrôle de l'atelier, afin d'évaluer son fonctionnement. Dans le workflow du
désassemblage, les pièces et les appareils traités sont associés à des artefacts de type
"ObjetTechnique", classe dérivée de la classe 2FLOW "Artefact". Dans le chapitre précédent,
nous avons dit qu'un ObjetTechnique pouvait être composé d'autres artefacts, ce qui est
notamment le cas des appareils traités par la plate-forme.
Lors de la création d'un objet technique correspondant à l'appareil, il est possible de lui faire
correspondre automatiquement les références aux autres objets qui le composent, sous la
forme d'artefacts. Cela est réalisé grâce à la méthode addArtefact( ) de la classe ObjetTechnique
de 2FLOW. A l'opposé lors du désassemblage, chaque méthode correspondant à une activité
attribuée à un acteur peut inclure un appel à la méthode removeArtefact( ) de la classe
correspondant à l'appareil en question. L'appel de la méthode se fait en lui passant comme
argument le nom de la pièce extraite de l'appareil, ce qui permet de retirer sa référence de
224
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
l'ObjetTechnique correspondant. Par ailleurs, il est également possible d'inclure une invocation
de la méthode [Link]( ), en lui communiquant le nouvel état de l'appareil (par
exemple 90 qui correspond à au pourcentage d'avancement du démontage).
Ces différentes méthodes sont des moyens intéressants d'obtenir des comptes-rendus sur l'état
d'avancement du désassemblage d'un produit. Ces informations peuvent en particulier être
utilisées lors de l'occurrence d'aléas dans l'atelier (des exceptions) qui en nécessitent une
reconfiguration rapide. Il s'agit alors de recommencer le processus là où il s'était arrêté, ce qui
est possible grâce à la récupération de l'état des appareils démontés. Nous rappelons que ces
valeurs peuvent être connues grâce aux méthodes [Link]( ) et
[Link]( ) mais également, grâce au contrôleur générique fourni par
2FLOW.
Dans le cas de REX, les travaux sur les cellules de désassemblage [CHEVRON 99] prévoient
de munir cette dernière d'un dispositif de contrôle, soit entièrement automatique, soit sous la
forme d'une interface Homme-Machine qui communique l'état de la cellule à un superviseur
humain. Dans ces deux cas, les activités de gestion des exceptions peuvent consister en
l'invocation d'une procédure du système de contrôle de la cellule. Il s'agit alors de modéliser
le système de contrôle en tant qu'acteur responsable de l'activité (ou du processus) de
traitement en question. Les méthodes de l'acteur correspondant aux activités doivent donc
contenir le code nécessaire pour invoquer les procédures du système de contrôle.
<<Exception>>
cassureOutil:CassureOutil
1 : créer
<<Activite>>
:
signaleCassureOutil:SignaleCassureOutil Interface de contrôle
cassure outil
€
2 : signaleCassureOutil(... )
<<Rôle>>
Contrôleur
<<Acteur>>
interfaceControle:InterfaceControle
signal
8
Contrôleur
Workflow de désassemblage
Figure V.14 - Prise en charge d'une exception - redirection vers un système de contrôle
Homme-Machine (contrôleur humain, interface informatique)
225
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
Etant donné que les classes déduites des diagrammes d'activités représentant les workflows de
la plate-forme sont plutôt nombreuses, nous les avons ajoutées en annexe de cet ouvrage.
Remarquons que les différentes vues sont établies pour chacun des workflows, ce qui aboutit
à une redondance de la représentation des classes. Cette redondance est bénéfique pour deux
raisons :
Cette approche est d'ailleurs suivie par plusieurs méthodes de modélisation (telles ARIS ou
CIMOSA [VERNADAT 96]), qui préconisent de concevoir séparément les différentes vues
puis de les lier par la suite grâce à leurs éléments communs.
3. Conclusion
Au niveau de la plate-forme, nous attendons l'évolution des travaux des autres membres du
projet afin de mieux cerner les comportements des classes que nous avons définies. En
particulier, le format des documents à échanger entre les différents acteurs doivent être
définis, ainsi que les comportements des acteurs automatiques. Pour ces derniers, nous
comptons pour l'instant essentiellement sur une simulation, éventuellement avec l'outil
Tecnomatix ([Link] utilisé par certains membres du projet. Il reste
cependant à étudier les protocoles de communication avec cet outil et la façon dont nous
allons y créer des agents automatiques.
226
Chapitre V : Application de 2FLOW – le projet RESTER PROPRE
Bibliographie
[BOUTROS et al. 00a] N. Boutros, K. Saï kali, B.T. David. "Intégration du Recyclage en
Conception: Application au recyclage de produits manufacturiers". IDMME
2000. Montréal, Canada. Mai 2000.
[BOUTROS et al. 00b] N. Boutros, K. Saï kali, B.T. David. "Recycling and Sustainable Design,
Role of Information Technology". MCPL 2000. Grenoble, France. 5-8
Juillet 2000.
[BOUTROS et al. 00c] N. Boutros, I. Vial, B. David, M. Dubois, D.R. Kouabenan. "Conception et
mise en œuvre d’un didacticiel professionnel". RJC-IHM 2000, 1ères
Rencontres Jeunes Chercheurs en IHM. 3-5 Mai 2000, Ile de Berder (Golfe
du Morbihan) France. Mai 2000.
[CHEVRON 99] D. Chevron. "Contribution à l'étude de la supervision d'une cellule de
démontage de produits techniques en fin de vie". Mémoire de Thèse pour
l'obtention du grade de "Docteur de L'institut Polytechnique de Grenoble en
Automatique et Productique". Grenoble. Novembre 1999.
[DAVID et al. 99a] B.T. David, [Link], [Link]ï kali, [Link], [Link], [Link], [Link],
[Link] . "Automation of Disassembly Processes and its Information
Systems". EcoDesign’99, First International Conference on EcoDesign.
Tokyo, Japan. Février 1999.
[DAVID et al. 99b] B. T. David, K. Saï kali, N. Boutros. "Conception orientée recyclage des
produits manufacturiers". 3° Congrès International de Génie Industriel.
Montréal, Canada. 26-28 Mai 1999.
[GERNER et al. 99] S. Gerner, A. Landrieu, Z. Binder, B. Descotes-Genon. "Recycling system:
distributed disassembly networks and disassembly workshop modelling".
3eme Congrès international de Génie Industriel, Montréal, Canada. 26-28
mai1999.
[GERNER et al. 00] S. Gerner, A. Kobeissi. "Economic and Ecological Product Evaluation in
Disassembly". MCPL'[Link], France. 5-8 Juillet 2000.
[KOBEISSI et al. 00] A. Kobeissi, Z. Simeu-Abazi. "Evaluation Methods and test product for
recycling". MCPL' 2000. Grenoble, France.. 5-8 Juillet 2000.
[LANDRIEU 99] A. Landrieu. "Une heuristique du problème de chargement et déchargement
appliquée au recyclage des produits manufacturés". ROADEF'99, 2è Congrès
de la Société Française de Recherche Opérationnelle et d'Aide à la Décision,
Autrans (Vercors), France. 13-15 Janvier 1999.
[SAIKALI et al. 99] K. Saï kali, N. Boutros, B.T. David. "An Adaptive Workflow Management
System for a Semi Automated Disassembly Platform". Workflow
Management’99, Conference on Workflow Based Applications. University
of Muenster, Germany. Novembre 1999.
[SAIKALI et al. 00] K. Saï kali, N. Boutros, B.T. David, J. Poquet. "Information Technology
support for the Recycling Problematic". CE2000, Conference on concurrent
engineering. Juillet 2000.
[VERNADAT 96] F. Vernadat. "Enterprise Modeling and Integration – Principles and
Applications". Chapman & Hall, 1996.
227