Les bases du développement Notes/Domino Tsoft et Groupe Eyrolles, 2004, ISBN : 2-212-11396-X
Archivage Champs Auteurs Champs Lecteurs Section d accès contrôlé Sous-masque Formule de masque Notification Routeur de messagerie Module 11 : Mettre en œuvre un workflow Objectifs Ce module a pour objectif d apprendre à traduire les diagrammes UML en programmes écrits en langage de formules pour un workflow Lotus Domino. Les ateliers contiennent des conseils et des techniques non décrites dans le cours. Savoir-faire Utiliser le routeur pour faire circuler les documents Utiliser les rôles et les champs Lecteurs et Auteurs pour contrôler la visibilité et la modification des documents Gérer les accès à l intérieur d un document par section d accès contrôlé Contrôler l état d un document dans le workflow Utiliser des documents profils Connaissance La typologie de workflow et Domino.workflow Progression La typologie de workflow Domino Workflow Application de suivi de tâches Le routeur de messagerie Envoyer une notification à un utilisateur Envoyer un document Atelier 11-1 Utiliser les rôles Atelier 11-2 Modifier un document sous condition Déterminer la visibilité d un document Atelier 11-3 Créer une section d accès contrôlé Contrôler l état d un document Atelier 11-4, 11-5 Contrôler l accès à une vue Contrôler le masque utilisé dans une vue Atelier 11-6, 11-7 Archivage de documents Atelier 11-8 Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement 11-1
La typologie de workflow Typologie de workflow Workflow administratif Formulaires : demandes de congés, d achats de fournitures... Workflow ad hoc Orienté projet, procédures souples Conçu sous forme de bases partagées de suivi Workflow de production Processus complexes faisant l objet de procédures formelles Impliquent plusieurs services Circuits modélisés pouvant être modifiés en cours Associés à des captures d images, de documents par scanners Une application workflow automatise une séquence d actions, d activités ou de tâches dans un processus donné : une demande d achats, le règlement d un litige, une mise au contentieux, le règlement d un sinistre Le workflow comprend également les outils nécessaires pour connaître l état de chaque instance du processus ainsi que pour gérer le déroulement du processus. Le champ du workflow est donc vaste et les problématiques sont de complexité variable. La classification donnée ici est tirée de l ouvrage Introduction to Groupware, Workflow and Workgroup Computing de Setrag Khoshafian et Marek Buckiewicz (John Wiley & Sons, Inc.). Workflow administratif, Workflow ad hoc, Workflow de production. Lotus propose une classification assez proche qui est commentée ensuite. Workflow administratif Ces applications sont basées sur les capacités des logiciels de messagerie à intégrer des formulaires répondant à quantité de besoins simples, courants et répétitifs : demande de congés, demande d achat de fournitures Les fonctions supportées par un workflow administratif se caractérisent par des formulaires, leur routage, des itérations limitées, une gestion réduite des alarmes et des notifications. 11-2 Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement
Workflow ad hoc Le workflow ad hoc supporte habituellement des processus à l intérieur d un projet : le circuit est plus complexe que celui suivi par un formulaire dans un workflow administratif : un processus peut s appuyer sur plusieurs documents circulant entre de nombreux acteurs. Un document peut itérer entre un ou des acteurs avant de poursuivre le processus (négociations, validation, vérification). Des alarmes et des notifications par courrier électronique identifient pannes et retards. Les utilisateurs disposent d une marge d autogestion pour résoudre les cas peu courants. Workflow de production Les workflows de production supportent des processus complexes et critiques pour le bon fonctionnement de l entreprise. Un grand nombre d acteurs interviennent dans la chaîne. Le système ne pouvant être complètement prédictible, il faut pouvoir modifier dynamiquement le modèle et les règles qui pilotent un processus afin de réagir à un événement imprévu ou peu fréquent. Ces applications s accompagnent de capture d informations (courrier entrant scanné par exemple) ce qui génère un volume très important d informations de valeur. L application de prêt précédente peut faire l objet d un workflow de production en détaillant et en formalisant davantage les étapes du processus. Classification proposée par Lotus Lotus propose une classification prenant en compte la technologie utilisée : Base de documents partagée : flexibilité, Processus décrits précisément : structuration forte. Ceci amène trois classes de workflow : Collaboratif : rassemble le workflow administratif, le workflow ad hoc et les techniques de travail en groupe, Structuré : il est proche du workflow de production. Un workflow standard décrit de façon précise les processus standardisés et récurrents. L utilisateur intervient pour gérer les exceptions par déviation du processus standard, Semi-structuré : comme son nom l indique, il est à mi-chemin entre le collaboratif et le structuré. La complexité est gérée par un découpage en activités chaînées (impliquant un nombre prédéfini d acteurs) et des techniques de travail de groupe. Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement 11-3
Domino Workflow Domino Workflow Conception par interface graphique Développement Maintenance Séparation des composants Logique : la programmation Les objets : données Visualisation de l état d un processus Interface graphique Prise en compte de workflows complexes Domino Workflow est une application Lotus Notes qui supporte le développement de workflows ad hoc et de production : analyse et conception de l application, exécution, visualisation d un processus en cours. Domino Workflow architect Le concepteur d application modélise les processus depuis une interface graphique. Les modifications de processus se font également depuis cette interface. Les éléments de conception sont enregistrés dans une base Design Repository. Domino Workflow engine Ce composant exécute l application. Les composants sont nettement séparés : Process Definition décrivant les processus, Organization Database décrivant l organisation de l entreprise, Application Database qui contient notamment les documents circulant manipulés dans les processus. Dans Application Database, les règles du workflow exprimées dans les deux autres bases Process Definition et Organization sont matérialisées et s appliquent sur les objets du workflow. Domino Workflow viewer Ce composant permet de visualiser graphiquement un processus en cours pour connaître son état d avancement. Documentation Le RedBook using Domino Workflow SG245963 présente en détail l architecture de Domino Workflow. D autres documents et une version d évaluation sont disponibles sur http://www.lotus.com/home.nsf/welcome/domworkflow. 11-4 Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement
Application de suivi de tâches Application de suivi de tâches Champ : suivi des tâches distribuées pendant les réunions L application de suivi de réalisation de tâches qu il s agit de réaliser a été présentée dans module Méthodologie élémentaire. C est un workflow très simple qui parcourt les techniques de programmation utilisées dans ce type d application en les reliant à une méthode générale d analyse fondée sur UML. Les grandes lignes sont rappelées brièvement ici. Domaine et objectifs Cette application est une extension de l application de suivi de réunion et se trouve dans le même domaine : elle intéresse toutes les personnes participant à des projets de développement d applications. L objectif est d améliorer la distribution, le suivi et la publication des travaux nécessaires à l avancement du projet : il s agit essentiellement de production de documents de type présentations, rassemblement d informations nécessaires à l avancement du projet. Les acteurs Projet Acteur Exécutant Organisateur Suivi de réunion Description Un exécutant la personne affectée est responsable de l achèvement de la tâche qui lui a été attribuée et en rend compte au responsable de la réunion. Le compte rendu de réunion comporte une liste de tâches à effectuer. L organisateur affecte une tâche à un exécutant. Il valide également le résultat du travail et décide de diffuser ou non le document créé. Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement 11-5
Diagramme de cas d utilisation Projet Suivi de tâches Cas utilisation Description Attribuer une tâche Exécuter la tâche Contrôler le travail L objectif est de définir une tâche et de l attribuer à un exécutant. L objectif est de communiquer le document qui concrétise la réalisation de la tâche. L objectif est de valider le document produit et d en décider ou non la publication Diagramme de classes Deux types de documents sont représentés comme autant de classes : Compte rendu, Tâche. Les opérations applicables aux tâches méthodes dans la terminologie OO sont symbolisées dans la partie inférieure du cadre représentant la classe Tâche. Ce sont Notifier(), Terminer(), Corriger(), Publier() et Abandonner(). 11-6 Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement
Projet Classe Opération Notifier() Terminer() Corriger() Approuver() Abandonner() Suivi de tâches Tâche Description Actionnée par l organisateur, si la notification n a pas déjà été envoyée. La tâche passe de l état En attente à En cours. L exécutant affecté à une tâche reçoit un message dans sa base Courrier avec un lien sur la tâche à effectuer. Actionnée par l exécutant sur une tâche qui lui est affectée et qui est En cours.. La tâche est à l état En cours et passe à l état Effectuée. Actionnée par l organisateur, sur une tâche Effectuée. La tâche passe de l état Effectuée à En cours. Actionnée par l organisateur, sur une tâche Effectuée. La tâche passe de l état Effectuée à Publiée. Le document produit est visible de tous. Actionnée par l organisateur, sur une tâche Effectuée. La tâche passe de l état Effectuée à Abandonnée. Diagramme d états-transitions Ce diagramme décrit les états successifs d une tâche. L attribut Statut de la classe Tâche prend les valeurs En attente, En cours, Effectuée, Publiée et Abandonnée. L état initial est symbolisé ci-dessous par un cercle plein au départ et l état final par deux cercles concentriques. Chaque rectangle symbolise un état et le texte sur la transition indique l acteur ou l événement à l origine de la transition et l action effectuée. Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement 11-7
Le routeur de messagerie Le routeur de messagerie Messager Routeur MAIL.BOX mail\aplanchou.nsf Notifier un acteur lorsqu un travail est en retard, publier un document dans une base s appuient communément sur le mécanisme de routage de courrier de Notes. Ce paragraphe décrit le mécanisme de fonctionnement du routeur sur le serveur. Dépôt d un message Un message (un document) est déposé depuis le client Notes dans la boîte aux lettres du serveur MAIL.BOX par la composante Messager du client. Ce message est un document Notes qui contient au minimum le nom du destinataire : une personne, une base Courrier en arrivée module Créer des agents/agent courrier, un groupe. Le messager vérifie que le destinataire est recensé dans l annuaire du domaine. Le message est déposé depuis la base Courrier de l utilisateur ou depuis une application de workflow par un bouton ou un agent qui tourne sur le poste client ou sur le serveur. Distribution d un message Le routeur est une tâche du serveur qui examine périodiquement la MAIL.BOX et qui est chargée de la distribution des messages (documents) déposés. Par consultation de l annuaire Domino du domaine names.nsf sur le serveur, le routeur détermine l emplacement de la base Courrier d un utilisateur onglet (Messagerie) du document Personne de l utilisateur ou de la base correspondant à la base Courrier en arrivée onglet (Informations sur la base) du document Base Courrier en arrivée. Si la base est trouvée, le message (document) est déposé, sinon un avis de non-distribution est retourné à l expéditeur. Si le destinataire est hébergé sur un autre serveur, le routeur ouvre une session sur le serveur de destination et dépose le message (document) dans la MAIL.BOX de ce serveur. Si le serveur distant ne peut pas être atteint directement, le routeur cherche la route la plus courte et dépose le message (document) dans la MAIL.BOX du premier nœud de la route. 11-8 Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement
Envoyer une notification à un utilisateur Envoyer une notification à un utilisateur Fonction @MailSend dans une formule de bouton, d événement Sans paramètres : champ SendTo obligatoire @MailSend Avec paramètres : paramètre envoia obligatoire @MailSend(envoiA ; copiea; copiecacheea ; objet ; remarques ; champs ; [Indicateurs]) envoia, copiea, copiecacheea : destinataire(s) objet, remarques : le message champs : expression contenant la liste des champs du document à inclure dans le message [Indicateurs] : [IncludeDocLink], [Sign], [PriorityLow],... Une notification est envoyée à un utilisateur dans sa base courrier : Lorsqu une tâche urgente le sollicite, Lorsqu une tâche est en retard. Remarque Il est conseillé d utiliser la base Courrier de l utilisateur uniquement pour les cas d exception. En effet, si un grand nombre de notifications sont envoyées par courrier, l utilisateur devra gérer et classer ces notifications. Il est plus rationnel de lui préparer des vues privées dans une base l équivalent de bannettes dans lesquelles il trouvera les tâches à effectuer préclassées. Une notification est générée avec la fonction @MailSend et contient habituellement un lien LienDoc avec le document, ce qui permet à l utilisateur d ouvrir le document à partir du message de notification. Cette fonction a été vue dans le module Créer des agents/agent courrier. @MailSend sans paramètres Le destinataire du document est enregistré dans un item nommé SendTo nom réservé au minimum. L intégralité du document est envoyée au destinataire. Cette méthode est utilisée surtout pour envoyer des documents à une base de workflow définie comme base Courrier en arrivée. @MailSend avec paramètres Le destinataire du document est précisé comme paramètre de la fonction. Il est aussi possible de créer un LienDoc avec l indicateur [IncludeDocLink], de copier le contenu de certains items du document dans le message. Cette méthode est utilisée pour envoyer une notification à un utilisateur dans sa base Courrier. Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement 11-9
Envoyer un document Envoyer un document La base de destination contient un masque pouvant afficher le document Champ sendto obligatoire Le destinataire est un utilisateur ou une base Deux techniques Le masque présente un dialogue d envoi Le champ MailOptions détermine l envoi L envoi d un document en entier se fait avec @MailSend sans paramètres. Il peut également être programmé avec l une des deux techniques suivantes : l affichage d un dialogue à l enregistrement du document par une propriété du masque, l utilisation d un champ MailOptions dans le masque qui laisse choisir l utilisateur ou force l envoi du document ou l interdit. Dans les deux cas, le champ SendTo détermine le nom du ou des destinataires. Dialogue par propriétés du masque Designer 6.0 Démonstrations/Masque Routage\Envoi document Cliquer sur cette icône ou commande Conception/Propriétés du masque... Cliquer sur l onglet (Défaut). <A la fermeture> : cliquer Afficher la boîte de dialogue d envoi de courrier Créer un champ de type Noms et le nommer SendTo Cliquer sur cette icône, ou commande Conception/Prévisualiser dans Notes. Saisir un destinataire puis sauvegarder et fermer le document La boîte de dialogue s affiche : 11-10 Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement
Cliquer (Envoyer uniquement) ou (Envoyer et enregistrer) Le document apparaît dans la base Courrier du destinataire. Remarque Si le document n est pas conçu comme un message, il ne sera que partiellement affiché dans la base Courrier. Au minimum, le nom de l expéditeur apparaîtra. Le masque Memo de la base Courrier affiche le contenu des items From, SendTo, CopyTo, BlindCopyTo, Subject et Body. Si un item est absent, le champ n affiche rien. Cette technique est donc applicable si le document envoyé contient les items reconnus par le masque Memo ou si la base destinataire n est pas une base de courrier utilisateur mais une base d une application de workflow. Champ MailOptions Ce champ du masque peut prendre les valeurs : 0 : bloque l envoi du document, 1 : force l envoi du document par routeur de messagerie. Designer 6.0 Démonstrations/Masque Routage\Envoi document par MailOptions Champ modifiable L utilisateur se voit proposer le choix par bouton radio, par exemple. L utilisation d un pseudonyme sépare le texte proposé à l utilisateur de la valeur enregistrée. MailOptions Bouton radio Choix Champ calculé Le champ est positionné par une formule en dehors de l événement valeur du champ : les contrôles détectent une anomalie, le document a déjà été envoyé, l état du document sa position dans le processus ne demande pas son routage, le document doit être routé. FIELD MailOptions := 0 ; Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement 11-11
Utiliser les rôles Utiliser les rôles Le rôle au sens Domino/Notes détermine une catégorie d utilisateurs Qui initialise un processus : par exemple, le manager Qui peut intervenir à tout moment dans n importe quel processus Dans la LCA (liste de contrôle d accès) de la base Ajouter le rôle L affecter à une personne ou un groupe Dans l application : utiliser @UserRoles Pour connaître la liste des rôles de l utilisateur courant Montrer ou cacher des boutons, des vues, des paragraphes... Le rôle correspond à un acteur identifié dans les diagrammes de cas d utilisation. L acteur a un rôle dans l application qui est souvent traduit par un rôle dans la LCA Liste de contrôle d accès de la base. Pour éviter les confusions sémantiques, nous parlerons respectivement du rôle (fonction) et du rôle (LCA). La création et l utilisation d un rôle (LCA) dans la LCA d une base ont été vues dans les modules Gérer l accès à l application/lca : le rôle et Gérer l accès à l application/droits : fonctions @ spéciales. L utilisation du rôle (LCA) dans une application de workflow est présentée ici au travers d exemples. Une catégorie d utilisateurs Le rôle (LCA) est inutile ou inutilisable dans un certain nombre de cas tels que : l ensemble des utilisateurs a le même rôle (fonction) : par exemple, dans le cas d un formulaire de demande de congés, tout le monde a le droit de demander à partir en congés, donc a le rôle (fonction) d initialiser le processus, une catégorie d utilisateurs a un rôle (fonction) de faciliteur et doit pouvoir modifier n importe quel document de la base. Il suffit de leur donner l accès Editeur dans la LCA de la base pour que ce besoin soit satisfait, le rôle (fonction) de responsable hiérarchique est défini par un lien de dépendance recopié dans un document : par exemple, dans le cas de la demande de congés, le nom du manager qui accepte/refuse la demande est copié dans le formulaire au moment de la création de ce dernier. Du point de vue de l application de workflow Notes, le rôle (fonction) est déterminé par le contexte du document. Le rôle (LCA) est bien adapté dans des cas tels que : un groupe limité d utilisateurs dispose du rôle (fonction) d initialiser un processus, par exemple, la création d une tâche, la création du dossier de prêt un groupe limité d utilisateurs modifie les règles de gestion d une application listes de mots-clés, de codes, et accède à des vues réservées, peut créer ou modifier des documents particuliers, 11-12 Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement
un rôle (LCA) de dépannage qui correspond à un rôle (fonction) informatique et non pas de l application peut être utile pour afficher les valeurs de champs normalement cachés, ou pour des documents de visibilité restreinte. Création du rôle dans la LCA Le rôle (LCA) est créé dans la LCA de la base sous forme d une chaîne de caractères qui sera testée ensuite dans l application. Il faut donc avoir un standard pour la casse (majuscules/minuscules). Le rôle (LCA) est ensuite affecté à une/des personnes ou groupes. Remarque L application peut connaître les groupes auxquels appartient l utilisateur courant, donc effectuer des tests sur ces noms. Il est préférable d associer les groupes à des rôles (LCA) pour que l application ne soit pas liée à une nomenclature de groupe : il y a séparation entre la logique de l application et la façon dont elle sera mise en production. Cliquer sur une entrée, puis sélectionner le rôle Rôle apparaissant entre crochets Rôle sélectionné Utiliser @UserRoles @UserRoles retourne la liste des rôles (LCA) de l utilisateur courant. La fonction @IsMember teste si une chaîne de caractères est membre d une liste. @IsMember ("[Gestionnaire]" ; @UserRoles ) ; La fonction @IsMember retourne True si la chaîne [Gestionnaire] fait partie de la liste @UserRoles. Initialiser un processus L initialisation d un processus consiste le plus souvent à créer un document depuis un bouton. Dans l exemple qui suit, le bouton (Création tâche) est visible si l utilisateur courant a le rôle [Organisateur]. Afficher les propriétés du bouton Cliquer sur l onglet (Masquer). Accès à des vues réservées Certaines vues sont destinées aux utilisateurs ayant un rôle (LCA). Par exemple, la vue Taches\1. Manager est visible des utilisateurs ayant le rôle [Organisateur]. Afficher les propriétés de la vue, puis cliquer sur l onglet (Sécurité) Désélectionner Tout utilisateur ayant au moins l accès Lecteur Sélectionner le rôle [Organisateur] Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement 11-13
Modifier un document sous condition Modifier un document sous condition Les utilisateurs ont l accès Auteur dans la LCA Les champs Auteurs précisent qui peut modifier un document Liste d utilisateurs Liste de rôles Les champs Auteurs sont Modifiables par le propriétaire du document, (du processus) : délégation de l accès Auteur Calculés d après l état du document dans le processus : un document archivé n est plus modifiable Propriétaire Délégation Les utilisateurs qui ont besoin de créer et/ou de modifier des documents ont un droit d accès Auteur dans la LCA de la base. Le droit d accès Editeur qui permet de créer des documents et de modifier n importe quel document est trop élevé et ne devrait être donné qu à un groupe restreint d utilisateurs gérant la base. L accès Auteurs a été abordé dans le module Gérer l accès à l application/document : accès Auteur. Ce paragraphe présente les champs de type Auteurs et la manière d en modifier le contenu dans le contexte d une application de workflow. Contenu des champs Auteurs Les champs de type Auteurs précisent quels sont les utilisateurs ayant le droit d accès Auteur dans la LCA de la base qui peuvent modifier le document courant. Notes prend en compte l ensemble des champs Auteurs pour déterminer ces droits. Les champs Auteurs peuvent contenir des noms de personnes, des noms de groupes, des rôles (LCA). C est une bonne pratique que de prévoir un champ de type Auteurs, calculé à la création et qui contient un rôle (LCA) pour des besoins de dépannage et qui peut être également affecté aux serveurs. Le rôle peut s appeler [Admin] par exemple, le rôle [Gestionnaire] désignant plutôt les utilisateurs qui modifient les règles de gestion de la base. Modification des champs Auteurs Dans l exemple d application proposé ici, il y a deux personnes identifiées qui accèdent à un document en modification : Le manager qui a créé la tâche, et qui doit pouvoir la modifier ensuite, notamment pour pouvoir déclarer la tâche abandonnée ou approuvée, La personne désignée pour effectuer la tâche et qui devra modifier le document entre le moment où la tâche est en cours et celui où elle est publiée ou abandonnée. 11-14 Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement
Utilisation de deux types de champs Il apparaît donc que la présence du nom de la personne affectée dans un champ de type Auteurs n est pas permanente. Il s ensuit que le champ modifiable dans lequel le manager indique la personne affectée ne peut être de type Auteurs et sera plutôt de type Noms. Ce nom devra être dupliqué dans un champ de type Auteurs pour en être retiré une fois le travail accompli. Créer un champ de type Noms et modifiable Type Noms Modifiable Créer un champ de type Auteurs, calculé à la création, caché, supportant des valeurs multiples Type Auteurs Calculé à la création Autoriser entrées multiples Mise à jour du champ Auteurs La mise à jour se fait dans l événement onsubmit (QuerySave) par exemple, d après l état du document déterminé par le champ Statut, qui utilise des pseudonymes. Statut En attente En cours Effectuée Publiée Abandonnée Auteurs Organisateur : Affecte Organisateur : Affecte Organisateur Organisateur Organisateur La formule qui met à jour le champ AuteursDoc de type Auteurs sera : FIELD AuteursDoc := @If ( Statut = "EA": "EC" ; Organisateur : Affecte ; Statut = "" : "TE" : "AP" : "AB" ; Organisateur ; AuteursDoc) ; Formule : le nom du champ lui-même Le champ contenant le nom de l organisateur est lui aussi de type Noms. De cette manière, la faculté est donnée de retirer l accès Auteur à l organisateur, par exemple lorsque l étude est publiée, elle sera gérée par un bibliothécaire. Remarque Le masque évalue une seule fois la formule de l événement valeur du champ AuteursDoc puisque celui-ci est calculé à la création. La valeur du champ est déterminée ensuite à l extérieur du champ. Le type calculé à la création est recommandé dans cette situation. Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement 11-15
Déterminer la visibilité d un document Déterminer la visibilité d un document Les utilisateurs ont l accès minimum Lecteur dans la LCA Les champs Lecteurs précisent qui peut voir un document Liste d utilisateurs, de serveurs Liste de rôles Les champs Auteurs permettent de voir également un document Les champs Lecteurs sont Modifiables par le propriétaire du document, (du processus) : document à visibilité réduite Calculés : un bouton (Privé) renseigne un champ Lecteurs avec le nom de l utilisateur courant Privé Les utilisateurs qui ont besoin de lire des documents ont un droit d accès Lecteur au minimum dans la LCA de la base. Le droit générique de lecture de n importe quel document peut être restreint en utilisant des vues réservées et des formules de sélection comme cela a été décrit dans le paragraphe Utiliser les rôles. Une autre technique consiste à utiliser des champs de type Lecteurs listant les personnes, groupes et rôles pouvant lire le document quelle que soit la vue dans laquelle il apparaît. L accès Lecteur pour un document a été abordé dans le module Gérer l accès à l application/document : accès Lecteur. Ce paragraphe présente les champs de type Lecteurs et la manière d en modifier le contenu dans le contexte d une application de workflow. Contenu des champs Lecteurs Les champs de type Lecteurs et Auteurs précisent quels sont les utilisateurs ayant le droit d accès Lecteur minimum dans la LCA de la base qui peuvent voir le document dans une vue et l afficher. Notes prend en compte l ensemble des champs Lecteurs et Auteurs pour déterminer ce droit. Ce schéma fonctionne dès lors qu il y a un champ de type Lecteurs non vide. C est une bonne pratique que de prévoir un champ de type Auteurs, calculé à la création et qui contient un rôle (LCA) qui peut être également affecté aux serveurs. Le rôle peut s appeler [Admin] par exemple. De cette façon, il est certain que les serveurs pourront toujours voir les documents pour les répliquer ou lors de l exécution d un agent. Remarque Les champs de type Lecteurs sont une protection par programmation des documents d une base. Ils offrent une protection convenable des documents confidentiels si le serveur est sécurisé. Cependant, il est toujours possible de faire sauter les verrous gérés par programmation en accédant au disque contenant la base sans passer par Domino. Le chiffrement offre un degré de protection supérieur. 11-16 Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement
Modification des champs Lecteurs Document privé Le créateur du document est le seul à voir le document parce que ce dernier est en cours d élaboration et que le rendre visible serait source de confusion par exemple. Le plus simple est de créer un bouton d action avec deux libellés (Marquer privé)/(marquer public). Lorsque le libellé est (Marquer privé), un clic restreint la visibilité du document à son propriétaire puis le libellé devient (Marquer public). Un nouveau clic rend le document visible à tous. Le bouton est visible avec le rôle (LCA) [Organisateur]. Créer un champ LecteursDoc de type Lecteurs, calculé, caché, supportant des valeurs multiples Créer un bouton d action (Marquer privé)/(marquer Public) Le libellé dépend du contenu du champ de type Lecteurs. Si le champ est vide, le libellé est Marquer privé, sinon il est Marquer public @If( @IsNull(LecteursDoc) ; "Marquer privé" ; "Marquer public") Cliquer sur l onglet (Masquer) dans le dialogue des propriétés Cliquer Cacher l action si la formule est vérifiée et taper la formule! ( @Contains (@UserRoles ; "[Organisateur]" ) ) Le bouton doit être visible si l utilisateur courant a le rôle [Organisateur]. La négation de cette condition indique quand le bouton doit être caché. <Evénement Click> : taper la formule @If(@IsNull(LecteursDoc) ; FIELD LecteursDoc := Organisateur; FIELD LecteursDoc := Null ); @Command([RefreshHideFormulas]); LecteursDoc reçoit le nom de l organisateur. La commande @ rafraîchit les formules de masquage des boutons ce qui remplace le libellé Marquer privé par Marquer public. Document partagé à visibilité restreinte Le créateur du document désire le partager avec un groupe restreint d utilisateurs pendant la phase d élaboration, ou parce que le document est de diffusion limitée. Créer un bouton d action (Partage restreint) Afficher les propriétés du bouton, puis cliquer sur l onglet (Masquer) Cliquer Cacher l action si la formule est vérifiée et taper la formule! ( @Contains (@UserRoles ; "[Organisateur]" ) ) Le bouton doit être visible si l utilisateur courant a créé ce document. <Evénement Click> : taper la formule LecteursAutorises := @PickList([Name]) ; FIELD LecteursDoc := Organisateur : LecteursAutorises ; @Command([RefreshHideFormulas]) ; LecteursDoc reçoit le nom de l organisateur et les noms choisis dans l annuaire. La commande @ rafraîchit les formules de masquage des boutons. Tsoft/Eyrolles Lotus Domino Designer 6 : Bases du développement 11-17