Pourquoi Lotus Notes pour développer des applications ?
La structure
Les actions simples.
Les formules
Les programmes Lotus Script
Les masques et sous-masques
Création de tableaux
Création de champ
Choix des options générales des champs
Choix de la police du champ
Choix de l'alignement du texte dans un champ
Choix de la pagination (saut de page , ligne solidaire, etc ...)
Choix du fait de la pas afficher le champ à l'écran
Création d'une section
Création d'une zone de présentation
Création d'une zone sensible
Zone sensible de liaison
Texte en incrustation
Bouton
Formule en incrustation
Action en incrustation
Création d'une action dans un masque
Les vues et dossiers
Créer une hiérarchie de vues ou dossiers
Sélectionner les documents à afficher dans une vue
Contenu d'une colonne
Créer une nouvelle colonne
Effectuer un tri et des totaux dans une colonne
Modifier le titre d'une colonne
Modifier la largeur d'une colonne
Paramètre généraux d'une colonne
Changer la police du texte des colonnes
Choix de l'affichage si les données de la colonne sont des nombres
Choix de l'affichage si les données de la colonne sont des dates
Choix de la police d'affichage des titres
Mettre le nom de colonne en tant que champ
Mettre à jour l'affichage de votre vue
Création d'une action dans une vue
Les navigateurs
Les autres
Les champs partagés
Les agents
L'importation / exportation
Le Workflow
La méthode centrifuge
La méthode centripète
La méthode médium
Lotus Notes Version 4 est un logiciel groupware de gestion de
documents. Il peut être assimiler à un SGBD, pour
sa vision de la gestion de base de données et à
un langage de 4ème génération
pour sa facilité de développement d'application
(page écran, action par boutons, etc ..). Comme sur un
SGBD, il vous faut définir des tables, des champs, des
écrans, et des requêtes. Lotus notes à un
avantage par rapport aux autres SGBD du marcher, tel que (Access,
Oracle Forms, Approach, ...), il intègre des fonctionnalités
d'aide au développement de bases, d'aide au développement
d'applications et de puissante fonctionnalité d'indexation
documentaire et de compatibilité avec divers format de
fichiers existant. Ce qui en fait un outils puissant, mais par
un manque de fonctionnalité poussé en SGDB et développement
reste un produit médium entre les SGBD et les langages
de 4ème générations. Les manques
sont par exemples (en SGBD: l'analyse Merise, les requêtes
SQL, la possibilité de gestion de tables, ...; en développement:
un manque dans les fonctionnalités de Lotus Script, un
manque d'événement sur les zones, ...).
Conclusion : Lotus Notes Version 4 est un bon outils pratique
de développement d'application basé sur la gestion
de base de données et documents hétérogènes.
La structure est la partie principale d'une application Lotus Notes (si vous créer une base Notes à partir du modèle -vide-, vous ne pouvez rien faire sur votre base, car il n'y a aucune structure).
Pour faire apparaître la partie structure d'une base de
documents :
Vue Afficher Structure
Dans la structure se trouvent différentes équerres ayant chacune une signification :
Les Agents (Mécanique d'automatisations de taches)
Masques (écran de saisie).
Vue (Requête de visualisation).
Dossier (Requête de visualisation).
Champs partagés (Champs invisible mais appartenant à chaque document).
Navigateur (Boutons de Vue).
Autres (Icônes, textes).
Dans le menu de gauche, au dessus de la structure se trouve l'application
elle même. Tel que l'utilisateur va l'utiliser.
les actions simples sont des sous-programmes déjà développer sous Notes 4.
les actions ne sont généralement pas nombreuses.
Image d'actions simples :
Dans les actions simples des masques l'on peut :
Copier un document dans une base.
Copier un document dans un dossier.
Envoyer le document par mail.
Envoyer un courrier.
Envoyer un récapitulatif par bulletin (envoyer une vue par mail).
Exécuter un agent.
Exécuter une fonction Notes.
Marquer le document comme lu ou non-lu.
Modifier le champ d'un document.
Modifier le champ d'un masque.
Placer le document dans un dossier.
Répondre à l'expéditeur d'un courrier.
Retirer un document d'un dossier.
Supprimer un document d'une base.
Dans les actions simples des navigateurs l'on peut :
Ouvrir un autre navigateur.
Ouvrir une vue.
Créer un alias pour un dossier.
Ouvrir une liaison (ouvrir un fichier extérieur).
le mode de programmation par formules est une façon d'utiliser
des fonctions limitées développer dans Notes 4.
Parmi les formules, il existe des fonctions et des commandes
Dans les fonctions vous avez deux types de fonctions (avec et sans paramètres):
la liste des fonctions se trouve dans le programmer's guide Part 2
Une fonction s'écrit @nomfonction(paramètres)
fonction | Utilisation | Paramètres | Valeur de retour |
Abs | Valeur Absolue | nombre | entier |
All | Sélectionne tout les champs | ||
Alldescendants | Sélectionne les doc réponses
Utilisé pour les critères de sélection | ||
author | Auteur | chaîne | |
contains | contient une sous chaîne | (chaîne, sous chaîne) | 1 trouvé, 0 non |
created | date de création du doc | date | |
date | retourne la date d'un type date | (type date) ex: @date(@now) | date |
day | retourne le jour | (type date) | date |
dbcolumn | retourne une liste des éléments d'une colonne d'une vue | ("";"";"vue"; numéro colonne) | liste élément |
dbexists | retourne l'existence d'une base | ("serveur":"base") | 1 trouvé |
dbmanager | liste des gestionnaires (utilisateurs, groupes, serveurs) | liste de chaînes | |
deletefield | supprime un champ | uses :
FIELD numchamp:=@deletefield | |
isnewdoc | retourne si le doc est un nouveau document | 1 oui, 0 non | |
isrespondedoc | retourne si le doc est une réponse | 1 oui | |
left | retourne la chaîne de gauche | (chaîne, nombre de caractères)
(chaîne, sous chaîne) | chaîne |
mailsend | Envoi un document | (pour;cc;ccc;sujet;remarque;champs à envoyer;options [priorityHigh, low, includedoclink] etc ... | |
max | retourne le plus grand de 2 nombres | (nb1;nb2) | nombre |
min | retourne le plus petit de 2 nombre | (nb1;nb2) | nombre |
middle | retourne la chaîne du milieu | (chaîne; sous chaîne 1; sous chaîne 2) | chaîne |
month | retourne le mois | (date) | date |
name | retourne le champ voulue d'un nom | ex: @name([CN];@username)
@Name([OU];@username) | chaîne |
noteid | numéro interne du document | integer | |
now | date, heure aujourd'hui | date | |
prompt | affiche une boite de messages | ([OK] ou [YesNo];"titre";"message") | 1 pour Yes et Ok
0 pour No -1 pour Cancel |
repeat | répète une chaîne n fois
utilisé pour le graphe | ex : repeat("|";diskspace) | |
right | retourne une chaîne se trouvant à droite d'une chaîne | (chaîne, nombre)
(chaîne, sous chaîne) | chaîne |
setfield | met une valeur dans un champ | (champ, valeur) | |
texttonumber | conversion chaîne en nombre | (chaîne) | nombre |
texttotime | conversion chaîne en date | (chaîne) | date |
time | heure courante | date | |
today | date courante | date | |
tomorrow | demain | date | |
username | nom de l'utilisateur courant | chaîne | |
userprivileges | droit de l'utilisateur courant
1,2,3,4,5,6 | nombre ou liste de nombre | |
year | année d'une date | (date) | date |
yesterday | hier | date |
les commandes:
Les commandes sont des équivalents au commande menu, il peut y avoir de paramètres mais il n'y a pas de valeur de retour.
un commande s 'écrit
@command([nom commande];paramètres)
Fileexit | quitte le document | ||
FileSave | Sauve le document |
Règles générales des formules :
Dans le mode formule, vous pouvez accéder à un champ de document par les fonctions
écriture dans un champ
FIELD nomchamp:=valeur;
SELECT @all
ou
@Setfield(nomchamp;valeur)
lecture d'un champ
x:=nomchamp
x est une variable dynamique qui est créer à son
utilisation et qui disparaît lors de la fin de l'exécution
de la formule.
Il n'existe pas de boucle dans le mode formules.
les conditions se font par la fonction
@if(condition1;vrai;faux)
vous pouvez imbriquer des si par @if(condition1;vrai1;condition2;vrai2;condition3;vrai3;faux)
Pourquoi Utiliser Lotus Script alors qu'il offre les mêmes
fonctions que les formules de Lotus Notes 4 ?
L'intérêt du Script Notes 4 est de pouvoir travailler avec des objets dynamiques.
Par exemple: lors de l'exécution d'un agent de traitement
workflow, vous désirer envoyer à une personne une
liste de documents. Si vous utiliser les formules votre liste
doit être prédéfinie dans les vue de l'application,
par contre si vous utilisez le script vous pouvez créer
une vue dynamique qui disparaîtras une fois le script terminé.
Les programmes Lotus Script sont basé sur le concept de
programmation objets.
Les termes principaux de la programmations objets sont :
Les classes, objets, méthodes, propriétés;
l'héritage.
l'instance.
Lotus Notes contient des classes, méthodes, propriété
par défaut.
Un objet peut être considérer comme un tiroir de
bureau dans lequel se trouve des méthodes (outils) et des
propriétés (Papier avec de informations)
Visualisation D'objets
Héritage
Une instance est la création physique d'un objet en mémoire
machine, car un objet en tant que tel est un modèle et
avec ce modèle on créer une instance d'objet. Ci-dessous
l'instance d'objet Notesdatabase porte le nom de db.
Exemple Notes :
Set db = New Notesdatabase | création d'une instance d'un objet base notes |
call db.open(VALEOVT_RMS2,Info) | Ouverture de la base info grâce à la méthode open de l'objet Notesdatabase |
dim k as Notesview | Création d'un instance d'un objet view |
set k=db.getview(Liste Catégorie) | Ouverture de la vue Liste catégorie grâce à la méthode Getview de la base Notesdatabase |
Définition d'un sous-masque: un sous-masque est un modèle de masque (dans un masque vous pouvez intégrer un sous-masque)
Un masque Notes a plusieurs utilités. Un masque sert tout
d'abord à créer une table (chaque champ de votre
masque est un champ d'une table de base de données). Ensuite
le masque sert à créer une page écran de
saisie des données (c'est sur ce point que Notes est innovant,
c'est l'un des premiers logiciels à créer à
la fois le masque et la base en une opération)
Mise en place du fond de page
Vous pouvez taper directement du texte
Création Tableaux
Saisir le nombre de lignes et colonnes
Création Champ
Saisir le nom du champ
Choisir le type de donnés du champ
-texte (texte non formaté)
-nombre (nombre)
-un nombre peut être a virgule fixe, scientifique, monétaire, etc ...
-temps (date heure)
un temps peut avoir plusieurs format
Date et heure
Date
Heure
Date du jour et heure
Format de date jj/mm/aa, jj/mm, mm/aa
Format horaire hh:mm ou hh:mm:ss
Fuseau horaire Afficher le fuseau horaire ou non
-mots clés (Liste de choix)
-la liste des mots clés peut êtres défini au départ
(entrez vos choix (un par lignes))
-Par une formule (choisir via une formule)
Par exemple (@dbcolumn(""; "" ;"Nom d'une vue"; numéro colonne))
Ce qui donne en choix la liste des mots contenu dans la colonne "numéro de colonne" de la vue "nom d'une vue".
-choisir via le carnet d'adresse
-choisir via la liste des contrôles d'accès
-choisir via une vue
comme dbcolum ci-dessus sauf qu'il n'est pas autorisé de
valeur non répertorier donc un utilisateur ne peut pas
créer de nouveaux mots clefs.
-Texte enrichi (texte formaté avec polices, alignement, etc ...)
-Auteurs (nom du ou des auteur(s) du document)
-Noms (nom d'une ou plusieurs personne(s))
-Lecteurs ( nom du ou des lecteur(s))
Choix de recherche des noms par
Carnet d'adresse
Contrôle d'accès
Vue
Les champs peuvent êtres
Modifiables : en saisie
Calculé : calculé tout le temps
Calculé à l'affichage : calculé a l'ouverture du document
Calculé à la création : calculé à la création du document
Les champs peuvent êtres à valeurs multiples (possédé
des valeurs séparer par un point virgule)
Options (choix d'un message d'aide)
Cocher la case mettre se champ en évidence par défaut si vous voulez que ce champ soit le premier saisi.
Vous pouvez sécuriser l'accès au champ de diverses
manières (droit éditeur, chiffrement, signature)
puis choisir
le style d'affichage
puis choisir
l'alignement (centré, gauche, droite) les marges, etc ...
Très important pour les sections, et impressions
Si le document est ouvert en lecture, en écriture, en prévisualisation
et d'après une formule ( cf. créer un action dans une vue)
Une section est une zone qui se déroule si l'on clique
dessus ( ainsi l'on peut cacher à un ou plusieurs utilisateurs
, une zone complète du document)
Création Section
Standard ou Accès contrôler
Pour une section standard vous ne pouvez que la cacher auprès des utilisateurs non autorisés, en entrant une formule (cf. création d'un action dans un vue)
Pour une section à accès autorisé, vous pouvez
autoriser des accès plus fin à cette zone, autorisé
l'accès soit en écriture, en lecture, etc ...
Les différent onglets éditeurs, non éditeurs
ne sont là que pour choisir le type d'affichage de la section
lorsque vous avez ou n'avez pas les droit d'éditeurs (auto
afficher la section ou non, etc ...)
une zone de présentation est un cadre dans lequel l'on peut créer un document, ou insérer un dessin du presse papier.
Création Zone de présentation
une zone sensible peut être :
liaison sur un autre document .
Pour cela il faut avoir copier l'autre document en tant que copier
comme liaison
Texte afficher lorsque vous cliquer sur la zone sensible
Création d'un bouton dans lequel vous mettre une formule
ou un programme Script à exécuter, voir Application
informatique, document demande de maintenance , bouton visa.
Formule à exécuter si l'utilisateur clique sur la
zone (texte) sensible .
Action (Action simple, formule ou Script) à exécuter
si l'utilisateur clique sur la zone sensible.
Lorsqu'un masque est visible à l'écran, vous pouvez afficher des boutons afin que l'utilisateur soit dirigé dans les commandes qu'il peut effectuer.
Par exemple dans l'application informatique, l'utilisateur peut
sauver ou enregistrer suivant si il vient de créer le document
ou si il modifie le document. (Pour l'utilisateur ça ne
change rien mais pour l'application il y a une différence.
Sauver (sauve le document et le place dans le dossier adéquate),
Enregistre (sauve le document)
Pour créer une action faire :
création action
Donner un titre à votre bouton
Choisissez une icône à votre bouton
Il est possible de cacher ce bouton dans des cas bien précis (manque de droits)
grâce à l'onglet Cacher:
cocher la case : cacher l'action si la formule est vérifiée
puis saisir votre formule
(ex: @if(@contains(@useraccess(@dbname); "5 "; "6 "; "7 ")<1 )
Interdit l'accès aux personnes n'étant pas Gestionnaire,
concepteur ou éditeur
Ensuite il vous faut saisir l'action simple, la formule ou le
programme Script que le bouton doit exécuter.
Une vue est une requête effectuée sur tout les documents.
un dossier est une requête effectuée que sur un nombre
définie de document (qui ont été copier dans
le dossier)
Une vue est constituée de colonne dans chaque colonne vous
allez choisir d'y afficher un champ, un calcul, etc ...
Création Vue ou Dossier
cocher la case partagée
Mettre dans le titre Racine\branche1\...\nom de la vue ou dossier
Allez dans option si vous voulez que votre vue ou dossier
prenne modèle sur une vue ou un dossier déjà
existant.
Editer la vue par structure Vues Double clic sur la vue
ou structure Dossier Double clic sur le dossier
Choisir dans définir View Sélection
cocher simple
ajouter critère
Choisir le type de critère (par champ, par masque)
Ex: par masque, seul les documents crées par les masques choisi seront visibles dans la vue ou dossier
Pour y afficher un champ vous n'avez qu'a choisir le champ dans champ
Pour y afficher un calcul mettre le calcul dans formule
Si vous voulez faire un graphique
(cf. visualiser et interpréter statistique dans le module
administration)
Si vous voulez afficher:
le nom de l'auteur
la date de création
le numéro de la fiche (document) dans la vue
la taille du document
etc ...
fonction simple
Création insérer ou ajouter un nouvelle colonne
Cliquer sur la colonne
conception propriété de la colonne
Tri
Vous pouvez effectuer un tri par ordre croissant ou décroissant
Vous pouvez faire une rupture dans le tri
ex: avec rupture (catégorisé)
Route | voiture |
camion | |
vélo | |
Air | avion |
hélicoptère |
ex: sans rupture (standard)
Route | voiture |
Route | camion |
Route | vélo |
Air | avion |
Air | hélicoptère |
Vous pouvez choisir de trier les majuscules en premier, de prendre
en compte les accents en cochant les cases.
Vous pouvez donner à l'utilisateur la possibilité
de faire un tri provisoire en cochant la case cliquer sur le titre
de la colonne à trier
Attention si plusieurs colonnes sont triées simultanément,
le choix de niveau de tri se fait de la colonne gauche à
droite
Enfin, vous pouvez effectuer des totaux, moyenne de fin de colonne.
Astuce: si vous voulez afficher le total du nombre de fiche
afficher, créer une colonne avec la valeur 1 et un total,
puis cocher la case cacher les li. de détails (les
1 ne seront pas affichés).
Cliquer sur la colonne
conception propriété de la colonne
Général
Saisir un titre
Cliquer sur la colonne
conception propriété de la colonne
Général
Saisir la taille de la colonne et cocher redimentionnable, si
vous voulez que l'utilisateur puisse changer sa taille.
Cliquer sur la colonne
conception propriété de la colonne
Général
Vous avez la possibilité de cacher une colonne qui vous
sert seulement à faire un tri.
Si vous cochez n'afficher que les réponses, seul les résultats
des colonnes à droite de celle que vous avez sélectionner
s'afficheront.
si vous voulez afficher un petit triangle pour dérouler les lignes ayant le même nom (rupture). cocher la case
Afficher les doublons lorsque la ligne peut être détaillée
Cliquer sur la colonne
conception propriété de la colonne
Choisissez votre forme d'écriture préférée.
Cliquer sur la colonne
conception propriété de la colonne
Choisissez le type de nombre à virgule fixe, Affichage scientifique ou monétaire (F).
Affichage en %, nombre négatif entre (), et choix du séparateur
de milliers
Cliquer sur la colonne
conception propriété de la colonne
Choisissez votre format de date.
Cliquer sur la colonne
conception propriété de la colonne
Titre
Choisissez votre style d'écriture préféré
et cliquer sur Appliquer à tous pour appliquer votre
style à tous les titres de la vue.
Cliquer sur la colonne
conception propriété de la colonne
Mettre dans le champ nom le nom que vous voulez attribuer
au champ.
Lorsqu'une vue est visible à l'écran, vous pouvez afficher des boutons afin que l'utilisateur soit dirigé dans les commandes qu'il peut effectuer.
Par exemple dans l'application informatique, l'utilisateur peut
créer une demande de maintenance lorsqu'il visionne une
vue des demandes de maintenance :
Regarder bien en haut à gauche, le bouton Nouvelle Demande, qui est une action de la vue demande de maintenance\ par catégorie
Pour créer une action comme celle-ci faire :
création action
Donner un titre à votre bouton
Choisissez une icône à votre bouton
Il est possible de cacher ce bouton dans des cas bien précis (manque de droits)
grâce à l'onglet Cacher:
cocher la case : cacher l'action si la formule est vérifiée
puis saisir votre formule
(ex: @if(@contains(@useraccess(@dbname); "5 "; "6 "; "7 ")<1 )
Interdit l'accès aux personnes n'étant pas Gestionnaire, concepteur ou éditeur
Ensuite il vous faut saisir l'action simple, la formule ou le programme Script que le bouton doit exécuter.
Les navigateurs sont une nouvelles manière de parcourir les vues, dossiers et documents.
Un navigateur est une ou plusieurs zone(s) sensible(s) (généralement avec une icône) qui, lorsque l'on clique dessus effectue une action simple tel que afficher une vue, saisir une nouvelle fiche, etc ..
Une fois un navigateur créer, on peut l'afficher par :
Vue Afficher nom du navigateur
Dans autres vous pouvez modifier l'icône de la base
Vous pouvez créer un texte de présentation de la
base qui serrât ouvert lors de la première ouverture
de la base.
Les champs partagés sont des champs appartenant à tout les documents, même si ils ne sont pas affichés sur le document, ils font partie intégrante de la structure de chaque document.
Ils sont utilisés pour faire des champs de reconnaissance
de document (form, auteur, date de création, ...).
Les agents sont des Actions Simples, des formules ou des scripts
qui sont exécutés manuellement ou sont planifiés.
Ils peuvent servir à faire des purges, des archivages de
documents ou du workflow.
Dans un agent vous devez spécifier son nom, son type de
planification, la liste des documents à traiter en cas
de modification de document.
Puis l'action, la formule ou le script à exécuter.
L'importation se fait de fichier Lotus 1-2-3 ou texte vers des documents Notes
Vous avez
1 fichier source
une base Notes
et un fichier de définition de colonnes qui fait la correspondance
entre les données brutes et les champs du masque de la
base notes
Format du fichier .col de définition de colonnes
Pour lotus 1-2-3
WKSCOL A correspond à la colonne A d'une feuille de calcul 1-2-3
ex:
Nomchamp : WKSCOL A
Ensuite vous pouvez ajouter à la fin du fichier .col des
calculs par fonction Notes
FORMULASTART
mettre vos formules
FORMULAEND
exemple de fichier .col pour l'importation des demandes au format
Lotus 1-2-3
; fichier de définition pour importation de demande lotus 1-2-3 Version 4
; importation des colonnes lotus dans des champs
Numerodemande : WKSCOL A
Objet_de_la_demande : WKSCOL B
Catégorie : WKSCOL C
Date : WKSCOL D
Demandeur : WKSCOL E
ctprojet : WKSCOL F TYPE NUMBER
DateReal : WKSCOL G TYPE TEXT
;datefinrealisation : WKSCOL H
Decisionpencharge : WKSCOL I
;calcul des champs de format différent
FORMULASTART
FIELD coutprojet:=@if(ctprojet<1;"Moins de 1 jour";
ctprojet<4;"de 1 a 3 jours";
ctprojet<8;"de 4 a 7 jours";
ctprojet<16;"de 8 a 15 jours";
ctprojet<31;"de 16 a 30 jours";"plus de 30 jours");
mdt:=@left(datereal;"/");
findate:=@right(datereal;2);
debutdate:=@middle(datereal;"/";"/");
FIELD DateRealisation:=@texttotime(debutdate+"/"+ @if(mdt="Jan";"01";
mdt="Fév";"02"; mdt="Mar";"03";
mdt="Avr";"04";
mdt="Mai";"05"; mdt="Jun";"06";
mdt="Jui";"07"; mdt="Aou";"08";
mdt="Sep";"09"; mdt="Oct";"10";
mdt="Nov";"11";"12")+"*"+
findate);
FORMULAEND
Fin du fichier .col
Ce fichier transfère les colonnes dans des champs en laissant
à part la colonne H et en transformant les colonnes F et
G n'ayant pas un format correct pour le document Notes.
Exécuter l'importation
Fichier Importer
Choisir le type de fichier (Lotus)
Sélectionner le fichier
cliquer sur importer
Sélectionner le masque à utiliser
Cocher défini fichier de format
Saisir le nom du fichier col (ex : Transfert.col)
Cliquer sur Ok
Le WorkFlow est un principe de transmission automatique ou semi-automatique de documents.
Automatique veut dire que le document est envoyé à
quelqu'un, lorsque ce document se trouve dans un état précis
, la transmission semi-automatique est une transmission dont le
destinataire est choisi automatiquement mais le moment de l'envoi
est décidé par l'expéditeur.
Plusieurs méthodes de workflow existent (la méthode centrifuge, médium et centripète)
Ex :
Avantages :
Accès direct au document.
Travail en local.
Blocage natif du document transféré
Inconvénient :
Risque de perte du document (par effacement), car le destinataire a tout les droits.
Base éclaté pendant le flux de document.
l'expéditeur ne peut consulter le document modifier par le destinataire.
le document doit contenir son masque ce qui entraine de grosse bases Notes.
les champs ne peuvent êtres transférés tels
quels (le document est envoyé en tant que texte en ligne)
Programmation du workflow
choix de la méthode centrifuge: il vous faut utiliser des boutons, visibles que pour certaines personnes et attribuer à ces boutons des envois de documents.
Attention : chaque document est envoyé sous la forme
d'un texte en ligne, les masques ne peuvent êtres envoyé
avec action simple et formules
Les méthodes par action simple et formules
ne font que l'envoi de champ du document courant vers un destinataire
La méthode par Lotus script permet de faire du workflow
car le document entier est envoyé par le mail ainsi que
son masque. Le document résultant reçu dans la boite
aux lettres est un document ne contenant plus les masques des
champs (aucune saisie de champs ne peut être faite), mais
contient (les cases à cocher, les cases boutons et les
boutons)
Méthode par action simple:
1- créer sur le document 1 bouton
2- créer un champ SendTo
3- pour le bouton
cacher le bouton par la fonction dans la propriété
@if(!@Name([CN];@Username)="nom utilisateur")
choisissez Action Simple
puis
Ajouter action (modifier le champ SendTo)
Valeur : nom du destinataire
Ajouter action (Envoyer le document)
Remarque : seul les champs appelés Body et Subject seront envoyés.
Méthode par formule :
1- créer sur le document 1 bouton
Mettre la formule @MailSend("nom destinataire";"";"";"";"";
Champ à envoyer)
Méthode par Lotus Script :
1- créer sur le document 1 bouton par personnes destinataires du document
2- pour chaque bouton
Dim woks As New notesuiworkspace | Création d'une instance de classe d'espace de travail notes |
Dim uidoc As notesuidocument | Création d'un instance non initialisé d'un document de type document courant |
Set uidoc=woks.currentdocument | mise dans l'objet uidoc du document courant afficher à l'écran |
Call uidoc.fieldsettext("SendTo","admin") | Remplissage du champ SendTo du document (avec le nom du destinataire) |
Call uidoc.send | Envoi du document courant par courrier |
Avantages :
Consultation toujours possible.
Pas de mouvement de document (il reste dans la base).
Lien possible de la base avec une autre base ODBC.
Rappel sur tout les documents non traités.
Utilisation possible de CC:MAIL en sous couche de transfert par
courrier.
Inconvénient :
Pas d'accès direct au document (accès par un lien).
Doublon des rappels dans le courrier.
L'utilisateur doit aller vers le document.
Notification automatique même si l'expéditeur ne
veut pas transmettre son dossier.
Choix de la méthode centripète : il vous faut utiliser
des agents qui recherches les documents intéressant dans
la base et envoi par courriers des liens sur ces documents (aux
personnes concerné)
Dans la méthode par action simple, c'est la vue qui sélectionne les documents à envoyer.
Méthode par action simple
1- Créer un agent
2- Donner un titre à l'agent
3- Choisir une planification de l'agent (un nouveau document, toutes les heures, tout les jours, etc ...)
4- Choisir les documents intéressant pour l'agent (les nouveaux documents, tout les documents, ...)
5- Puis faire ajouter action (Envoyer le récapitulatif du bulletin)
6- Choisir un destinataire
7- choisir la vue des documents à envoyer (ligne en dessous
de joindre le récapitulatif de chaque document)
le fait d'utiliser le lotus script permet de créer des listes de documents à envoyer dynamique
Pour ce faire il faut que la base contienne un dossier "tempo"
Méthode par Lotus Script:
1- Créer un agent
2- Donner un titre à l'agent
3- Choisir une planification de l'agent (un nouveau document, toutes les heures, tout les jours, etc ...)
4- Choisir les documents intéressant pour l'agent (les nouveaux documents, tout les documents, ...)
5- Puis cliquer sur script
Programme script d'envoi de document
Dim session As New notessession | Création d'une instance de session notes |
Dim db As notesdatabase | Création d'une instance de base notes |
Dim collection As notesdocumentcollection | Création d'une instance de collection de document |
Dim doc As notesdocument | Création d'une instance d'un document |
Dim fold As notesview | Création d'une instance de vue ou dossier |
Dim sélection As String | Création d'une variable chaîne de caractère |
Dim datetime As notesdatetime | Création d'une instance de type date |
Set db = session.currentdatabase | Initialisation de la base de donnée |
Set docfin = New notesdocument(db) | Création d'une instance de document |
Set ritem=New notesrichtextitem(docfin,"Body") | Création d'une zone richtext dans le document |
Set datetime = New notesdatetime ( "") | Initialisation de la variable date |
Call datetime.setnow | Mise de la variable date à la date d'aujourd'hui |
Call datetime.adjustday(-365) | Enlève 365 jours la variable date |
sélection = " form=""Demande de Maintenance Informatique"" & VisaAcq=""Non"" " | Création d'une variable sélection |
Set collection = db.search ( sélection, datetime,0) | Sélection des documents répondant à la sélection et dont la date de création est supérieur à datetime |
If (collection.count >0) Then | si des documents ont été sélectionnés |
Call ritem.appendtext("LISTE DES DEMANDES DE MAINTENANCE NON TRAITEE (qui ont moins de 1 an)") | Mise de texte dans le document à envoyer |
Call ritem.addnewline(2) | Ajout de 2 lignes |
Call ritem.appendtext("lien") | |
Call ritem.addtab(1) | Ajout d'une tabulation |
Call ritem.appendtext("Date de création") | |
Call ritem.addtab(1) | |
Call ritem.appendtext("Numéro de demande") | |
Call ritem.addtab(1) | |
Call ritem.appendtext("Objet de la demande") | |
Call ritem.addnewline(2) | |
For j=1 To collection.count | boucle de 1 au nombre de documents sélectionnés |
Set doc=collection.getnthdocument(j) | mise dans doc du document sélectionné numéro j |
Call doc.putinfolder("tempo") | mise du document dans le dossier tempo |
Next | fin boucle |
Set fold=db.getview("tempo") | Initialisation de l'objet fold = dossier tempo |
Set doc=fold.getfirstdocument | mise dans doc le 1er doc du dossier tempo |
While Not ( doc Is Nothing) | tant qu'il y à un document dans le dossier tempo |
Call ritem.appenddoclink(doc,"Document dans la base " & db.title) | mise d'un lien sur le document dans le document final |
Call ritem.addtab(1) | ajout d'une tabulation dans le document final |
Call ritem.appendtext(doc.date(0)) | ajout du champ date du document du dossier dans le document final |
Call ritem.addtab(2) | |
Call ritem.appendtext(doc.nodem(0)) | |
Call ritem.addtab(3) | |
Call ritem.appendtext(doc.objet_de_la_demande(0)) | |
Call ritem.addnewline(1) | |
Call doc.removefromfolder("tempo") | enlever le document du dossier tempo |
Set doc=fold.getfirstdocument | mise à jour de la variable doc = premier doc du dossier tempo |
Wend | fin tantque |
docfin.subject = "Essai" | ajout d'un sujet au document final |
docfin.form ="mémo" | ajout d'un type au document final |
Call docfin.send(False,"admin") | envoi du document final à admin ( par courrier) |
End If |
Avantages :
Accès direct au document.
Pas de mouvement de document (il reste dans la base).
Consultation toujours possible.
Lien possible de la base avec une autre base ODBC
Utilisation possible de CC:MAIL en sous couche de transfert par courrier
Notification lorsque l'expéditeur le décide
Inconvénient :
Notification que sur un document.
Choix de la méthode médium : il vous faut utiliser
des boutons visibles, que pour certaines personnes et envoyer
grâce à ces boutons des liens sur des documents de
la bases.
Méthode par Lotus Script :
1- Créer 1 bouton par personne destinataire
2- Pour chaque bouton
Cacher le bouton pour les personnes non autorisées
Ici le bouton n'est visible que pour l'utilisateur admin
3- Associer à chaque bouton le programme suivant
Dim woks As New notesuiworkspace | Création d'une instance de classe d'espace de travail notes |
Dim uidoc As notesuidocument | Création d'un instance non initialisé d'un document de type document courant |
Dim session As New notessession | Création d'une instance de session notes |
Dim db As notesdatabase | Création d'une instance de base notes |
Dim doc As notesdocument | Création d'une instance d'un document |
Set uidoc=woks.currentdocument | mise dans l'objet uidoc du document courant afficher à l'écran |
Set db = session.currentdatabase | Initialisation de la base de donnée |
Set docfin = New notesdocument(db) | Création d'une instance de document |
Set ritem=New notesrichtextitem(docfin,"Body") | Création d'une zone richtext dans le document |
Call ritem.appendtext("Double cliquer sur le document de travail") | Mise de texte dans le document à envoyer |
Set doc=uidoc.document | mise dans doc du document courant |
Call doc.save(FALSE,FALSE) | Sauve le document courant |
Call ritem.appenddoclink(doc,"Document dans la base " & db.title) | mise d'un lien sur le document dans le document final |
docfin.subject = "Document à traité" | ajout d'un sujet au document final |
docfin.form ="mémo" | ajout d'un type au document final |
Call docfin.send(False,"admin") | envoi du document final à admin ( par courrier) |