Sage ERP X3
Outils Avancés
Support de Formation
A partir de la version 6
Sommaire
1. GESTION DES SESSIONS .................................................................................... 6
1.1. CONNEXION A UN DOSSIER SAGE X3 ...................................................................................................... 6
1.1.1. Définition des paramètres d’un dossier ....................................................................................... 7
1.1.2. Aide en ligne ................................................................................................................................ 9
1.2. Définition d’une session X3 .............................................................................................................. 11
1.2.1. Sessions primaires et sessions secondaires ............................................................................ 11
1.2.2. Autres sessions ......................................................................................................................... 11
1.2.3. La licence .................................................................................................................................. 12
1.3. Contrôle des sessions autorisées..................................................................................................... 13
1.3.1. Visualisation des sessions actives ............................................................................................ 13
1.3.2. Désactivation d’une session ...................................................................................................... 14
1.4. Client « terminal mobile » ................................................................................................................. 15
1.4.1. Généralités ................................................................................................................................ 15
1.4.2. Possibilités fonctionnelles ......................................................................................................... 16
1.4.3. Pré requis .................................................................................................................................. 16
2. CODES D’ACTIVITE ............................................................................................ 17
2.1. Différences entre le paramétrage et le développement. .................................................................. 17
2.2. Notion de vertical et de spécifique.................................................................................................... 17
2.3. Gestion des codes activité ................................................................................................................ 17
2.3.1. Les types ................................................................................................................................... 19
2.3.2. Cas de dépendance entre codes .............................................................................................. 19
2.3.3. Tables mises en œuvre ............................................................................................................. 19
3. PARAMETRAGE DES FONCTIONS ................................................................... 20
3.1. Gestion des objets : navigation ........................................................................................................ 20
3.1.1. Navigation : principes de base .................................................................................................. 20
3.1.2. Navigation : définition détaillée.................................................................................................. 22
3.1.3. Navigation : cas particulier ........................................................................................................ 23
4. LA GESTION DES PATCHS ET DES VERSIONS .............................................. 24
4.1. Introduction ....................................................................................................................................... 24
4.1.1. Qu’est ce qu’un patch ? ............................................................................................................. 24
4.1.2. Gestion des versions ................................................................................................................. 24
4.1.3. Limites des patchs ..................................................................................................................... 25
4.1.4. Les précautions à prendre......................................................................................................... 25
4.2. La gestion des patch......................................................................................................................... 26
4.2.1. L’intégration d’un patch ............................................................................................................. 26
4.2.2. Quels dossiers « patcher » ?..................................................................................................... 27
4.2.3. Tester un patch.......................................................................................................................... 28
4.2.4. Consulter un patch .................................................................................................................... 28
4.2.5. La création d’un patch ............................................................................................................... 28
4.2.6. Création automatique de patch ................................................................................................. 29
5. LE SERVEUR BATCH ......................................................................................... 31
5.1. Caractéristiques du serveur batch .................................................................................................... 31
5.1.1. Mise en service du serveur batch.............................................................................................. 31
5.1.2. Arrêt du serveur : ....................................................................................................................... 31
5.1.3. Paramètres superviseur associés ............................................................................................. 31
5.2. Principes de fonctionnement ............................................................................................................ 32
5.2.1. Définition d’une tâche ................................................................................................................ 32
5.2.2. Définition d’un groupe de tâches ............................................................................................... 34
5.2.3. Soumission d’une requête ......................................................................................................... 35
En mode Web, la mire de connexion est similaire sauf que le code de l’application n’est pas
saisissable car il est implicitement définit par l’URL d’accès à la mire de connexion.
Il est important de noter qu’un paramétrage est fait dans un dossier (et un seul), que des outils de
copie permettront de le propager, qu’un développement peut être partagé par N dossiers
Les langues de connexion possibles sont définies lors de la création d’un dossier. A ce jour, les
langues suivantes sont gérées par l’éditeur :
- Anglais US
- Anglais british
- Espagnol
- Italien
- Français
- Portugais
- Allemand
- Chinois moderne
- Chinois simplifié
- Russe pour GEODE GX
- …
On verra plus loin (en gestion des licences) comment sont définies les connexions possibles. La boîte
de connexion permet de saisir :
Il est ici possible d’ajouter des informations de connexion vers d’autres dossiers
Chargement :
Remarque :
La case à cocher Application par défaut proposera ce dossier par défaut à la connexion.
L’activation thème graphique permet d’utiliser le thème standard de type XP. Si cette case n’est pas
cochée, on se retrouve avec une apparence des écrans plus proche des écrans Windows NT.
Intérêt du chm
Onglet sommaire
Onglet recherche
Impression directe par bouton
L’aide en ligne fonctionnelle est liée aux autres aides par des liens hypertextes.
Ces sessions peuvent être connectées à des dossiers différents, sous des langues différentes, et
avec des codes utilisateurs différents.
Une session secondaire est une session ouverte à partir d’une session primaire depuis un poste
client-serveur ou un poste en mode Web.
Par conséquent une session secondaire permet de travailler sur le même dossier que la session
primaire, avec le même utilisateur, et dans la même langue.
Le nombre de sessions primaires et secondaires est limité au niveau global, par la licence, au niveau
utilisateur ou groupe d’utilisateurs par les paramètres définis dans le dossier.
Une connexion à Sage X3 provoque l’ouverture d’une session identifiée de façon unique pour un
serveur d’application donné d’un type donné.
Remarque :
1.2.3. La licence
Développement > Utilitaires > Vérifications > Visualisation licence
Le nombre de licence par type est définie par le fichier serial_adonix installé dans le répertoire de la
solution Sage sur le serveur d’application. En cas de mise à jour de ce fichier, il est conseillé de
sauvegarder l’ancien fichier serial_adonix avant d’installer le nouveau.
Remarque :
L’utilisateur ADMIN n’est jamais limité en nombre de connexions (par contre, le verrouillage mono-
utilisateur lui est opposable).
Dans l’écran ci-dessus, Ident1 et Ident 2 correspondent au résultat que donnerait adxuid(1) et
adxuid(2) lancés dans la session correspondante, Fonction est le nom de la fonction exécutée (cette
valeur est vide si l’utilisateur se trouve au niveau du menu). Pour la ligne courante, la colonne numéro
de processus correspond au numéro donné par le système d’exploitation sur le serveur (ou le poste
client).
On remarquera ainsi, pour avoir le droit d’interrompre un processus, il faut soit avoir les droits d’un
super-utilisateur au niveau du système d’exploitation (i.e. être connecté comme root sous Unix,
comme administrateur sous Windows), soit être connecté sous la même identité que le propriétaire
des processus. Par ailleurs, une habilitation définie au niveau de l’accès de cette fonction est aussi
nécessaire
Par défaut, quand on entre dans la fonction, c’est le serveur d’application courant qui est proposé, et
si le service n’est pas donné, c’est le service courant qui est affiché.
Pour suspendre une session à partir du tableau des sessions actives, positionner le focus sur la ligne
du Poste client à suspendre. La liste des processus actifs pour la session sélectionnée est alors
affichée dans le tableau des processus actifs. A l’aide d’un clic droit sur ce tableau ou ouvre la fenêtre
permettant d’accéder à la fonction d’Arrêt des processus de cette session.
sadora ou sadsql -> Processus de gestion des accès à la base de donnée pour la session. Il est
aussi exécuté sur un serveur de traitement
Les processus sadfsq correspondent aux accès par la session à des fichiers de type séquentiels. Ils
peuvent être présents sur plusieurs serveurs (y compris sur le poste client, par exemple si on écrit un
fichier séquentiel en local).
Cette fonction permet d'arrêter le processus correspondant (par kill sous UNIX, par la fonction killadx
sous NT). L'arrêt d'un processus signifie, du point de vue de la base de données, l'arrêt propre de la
transaction en cours, mais également la perte des données en cours de saisie. Il importe donc d'être
très prudent dans l'utilisation de cette fonction réservée à la résolution d'incidents d'exploitation.
Les scripts de purge d’une session peuvent être activés par un processus externe à Sage X3
1.4.1. Généralités
Ce type de terminaux permet de créer des documents, le mode mise à jour n’est pas disponible.
Les champs présentés permettent d’identifier les lignes de stock. L’affichage des champs n’est pas
paramétrable par transaction.
Le site utilisé est affiché sur chaque mouvement. Par défaut c’est le site lié à l’utilisateur connecté. Ce
site est modifiable via une fonction « Définir le site ».
Le paramètre utilisateur VTMEN permet de définir le profil menu de l’utilisateur connecté via ce type
de terminal. En cas d’absence c’est le profil menu VT qui est utilisé par défaut.
2. CODES D’ACTIVITE
Les développements spécifiques doivent être protégés pour être pérennes, chaque élément modifié
doit être marqué par un code que nous désignons par le terme code activité spécifique.
- un patch standard ne modifiera pas le spécifique et le vertical si ils sont protégés
- un patch vertical ne modifiera pas le spécifique si il est protégé
- un patch spécifique peut le modifier
Certaines fonctions résultent d’une combinaison de paramétrage et de développement. Une partie est
alors du développement, une autre de la personnalisation. Par exemple le paramétrage des
consultations.
Ces différences peuvent paraître subtiles, mais elles n’en sont pas moins fondamentales. Dans la
suite de ce cours 90% des fonctions qui seront vues sont du paramétrage.
Pour un développement, lorsqu’un champ est modifié par rapport au standard, une marque doit signer
la modification. Cette marque est désignée dans X3 par le terme code activité.
Si ceci n’est pas fait, la modification n’est pas pérenne, et peut disparaître inopinément à la faveur
d’un patch qui toucherait l’élément en question, ou de façon certaine en cas de revalidation de
dossier.
Par exemple dans Sage Entreprise lors de la saisie du code devise d’une facture, le traitement
standard effectue un traitement sur ces champs permettant de trouver le taux de conversion en
fonction de la date de comptabilisation de la facture. Il est possible de surcharger ce traitement par un
traitement spécifique qui gère une contrainte complémentaire. Dans notre exemple on désire
rechercher le taux de change mensuel.
Lorsque les traitements spécifiques mis en place sont réutilisables pour plusieurs dossiers
indépendants, la standardisation des spécifiques devient un vertical.
Si un traitement vertical est déclaré, pour une même action X3, celui-ci sera exécuté après le
traitement spécifique et avant le traitement standard.
De même au niveau des actions sur les champs de l’écran, l’enchaînement des traitements sera :
- SPE : Action spécifique
- SPV : Action verticale
- STD : Action standard
Cette notion de vertical possède des impacts importants sur les développements et les patchs. Ce qui
nécessite la mise en place d’une normalisation des composants de la solution Sage X3.
Par exemple le nombre d’axes analytiques est une opération de paramétrage, ce nombre est prévu
dans une fourchette de 1 à 9 par le développement. C’est pourquoi nous présentons cette gestion
dans ce document.
Le rôle des codes activité est de rendre actifs ou inactifs des éléments du dictionnaire Sage X3, par
exemple :
- tables
- index
- onglets
- blocs
- champs d'écran
- etc
Le fait de rendre actif ou non un code activité donné permet de désactiver, dans les écrans, certains
champs optionnels en fonction des règles de gestion choisies.
Développement > Dictionnaire données > Ouverture au paramétrage > Code activité
A la génération d’un dossier, les codes activités peuvent être initialisés comme étant actifs ou inactifs
en fonction du paramétrage réalisé sur la fiche de description du dossier. Ce point sera présenté dans
le chapitre de gestion des dossiers.
Après la génération d’un dossier, il est possible de modifier le statut d’un code activité. En fonction
des caractéristiques du code activité des opérations de revalidation peuvent être nécessaires. Par
exemple la modification du nombre d’axes analytiques nécessite de revalider les écrans, fenêtre et
tables contenant des données dépendantes de ce code activité.
Dimensionnement : Ce type de code activité décrit une règle de dimensionnement qui permettra de
définir le nombre d’occurrences dans les tables, les écrans. Par exemple Le code ANA définit le
nombre d’axes analytiques gérés. Les codes activité de type dimensionnement possèdent des
attributs complémentaires suivants.
- Dimension maximum : Cette valeur est la taille maximum gérée par les traitements
Dimension écran : Cette valeur est la taille utilisée pour générer les écrans et les tables.
Localisation : Ce type de code activité est lié à une règle de gestion liée à une législation. Par
exemple KPA décrit comment gérer les relevés bancaires dans la législation portugaise.
Inverse : Le code activité prend la valeur inverse du code activité saisi en regard; il sera actif si le
code activité correspondant est inactif, et inactif s'il est actif.
Dimensionnement : le code activité est alors composé d'une racine, suivi d'un nombre M (de 1 à 9),
et il est associé à un code activité qui peut prendre des valeurs numériques de 1 à N. Le code activité
est actif si la valeur du code associé est supérieure ou égale à M; sinon, il est inactif. On peut prendre
l'exemple du code ANA, associés par des liens de dimensionnement aux codes AX1 à AX9. Si ANA
vaut 5, les codes AX1 à AX5 seront actifs, les codes AX6 ç AX9 seront inactifs.
Formule : permet de calculer la valeur d'un code activité en fonction d'une formule saisie. Cette
expression calculée peut intégrer des constantes, des fonctions, et des variables sous la forme
d'autres codes activité. Ces codes activité peuvent être des codes saisis, ou des codes calculés
antérieurement. L'ordre de calcul des codes activités dépendant de codes antérieurs est défini par le
rang. Un code activité non porteur d'une dimension vaut 1 s'il est actif, et 0 s'il est inactif.
Tables Contenu
ACTIV ACV Définition des codes activité et des valeurs associées
ADOVAL ADW Intitulé des codes activité (Cette table étant utilisée dans de nombreux
contexte, ne sera plus citée dans la suite de ce document)
Ce chapitre présente les outils permettant de modifier par paramétrage des fonctions existantes dans
la solution X3. Nous limitons ces modifications aux adaptations qui ne nécessitent pas la mise en
œuvre des codes activité pour protéger ces personnalisations.
- Modèle Objet
- Propriétés
- Personnalisation
- Liaisons automatiques
- Navigation
- Transaction
- Modèle consultation
- Paramétrage des écrans
Via l’explorateur
de liaisons
Remarque
Ces navigations sont toujours des navigations avec un retour à la fonction appelante.
Code identifiant
la navigation
Contexte :
Fonction de départ
Objet d’arrivée
Formules des
valeurs par défaut
Remarque :
Ces valeurs par défaut s’appliquent en création de fiche, et pas en duplication
Interface utilisateur :
4.1. INTRODUCTION
Un patch peut contenir un ou plusieurs éléments tels que des écrans, des déclarations de tables, des
codes activités, des types de données, des objets, des menus locaux, des chapitres de messages,
des traitements, des demandes d’exécution de traitements, des données...
Pour plus de facilité, les patchs sont organisés en liste, numérotées à partir du début d’une version
majeure (X.Y) de 1 à M.
Ces dépendances sont visibles dans un fichier nommé X3PATCHXY0, livré avec toute liste de patchs
Lorsqu’un patch nécessite de mettre à niveau l’un des moteurs, une procédure dédiée est précisée.
Généralement, la mise à jour d’un moteur s’effectue en exécutant le fichier sur le serveur à mettre à
jour.
Les patchs ne permettent pas de mettre un jour les différents moteurs de l’application (client, serveur
de données, serveur web, l’aide en ligne…).
Les patchs ne permettent pas de remettre à jour les données de paramétrage situées dans le dossier
de référence Sage X3.
Lorsque des spécifiques ont été réalisés, il est conseillé d’utiliser le testeur de patchs pour vérifier
d’éventuels conflits.
A partir de la zone « Répertoire des fichiers patchs », il est nécessaire de situer le répertoire
contenant les patchs « FILPATCH » ou le fichier lui-même « PP_00760_140.dat ».
Par défaut l’ensemble des dossiers se trouvant dans l’environnement est proposé.
Il est possible d’en supprimer de la liste.
Si la case à cocher Intégration de patch n’est pas cochée, les fichiers patchs sont simplement lus.
L’intégration n’est effective que lorsque la case est cochée.
Lorsque l’installation est définitive, il doit être installé à la fois sur le dossier Sage X3 et les dossiers
d’exploitation (ou autrement dit le dossier de référence et le(s) dossier(s) d’exploitation ou encore le
dossier mère et le(s) dossier(s) fille).
On peut choisir d’intégrer un fichier unique ou l’ensemble des fichiers contenus dans un répertoire
(c’est le cas d’une liste) En ne cochant pas la case Intégration de patch, on lit le contenu des fichiers
de patch
Si un dossier n’est pas mis à niveau des patchs, il risque de ne plus fonctionner correctement, car un
traitement présent uniquement dans le dossier superviseur peut s’appuyer sur une structure de
données modifiée dans le même patch. Or un traitement de dossier superviseur sera
automatiquement hérité dans tous les autres dossiers, alors que la structure de données sur laquelle il
s’appuie n’aura pas été intégrée dans le dossier en question, ce qui provoquera une incohérence.
Si un dossier est de type Test (ce flag est défini dans les paramètres de gestion du dossier), les
traitements seront intégrés dans le dossier lui-même. Ainsi, si l’on désire réaliser un test de
fonctionnement d’un patch (par exemple sur un dossier intégrant beaucoup de spécifiques) sans
perturber l’environnement d’exploitation, il est possible de n’intégrer le patch que sur ce dossier : les
traitements et le dictionnaire seront alors « patchés », ce qui permettra de réaliser un test complet.
Attention toutefois, le fait d’installer des traitements standards sur un dossier rend ensuite ce dossier
particulier : l’application uniforme d’un autre patch sur l’ensemble des dossiers y compris celui-ci
risque de ne pas être opérant sur le dossier de test (car les traitements existants dans le dossier de
test ne sont pas hérités du dossier superviseur).
Si un patch intègre des traitements spécifiques (commençant par X, Y, ou Z, ou encore par SPE), ces
traitements ne seront intégrés dans le dossier que s’ils existent déjà ; sinon, ils seront intégrés dans le
ou les dossiers de type Développement (flag défini dans les paramètres de gestion du dossier)
Si une mise à jour sur tous les dossiers est faite (ce qui est le cas le plus fréquent), les dossiers qui
auraient un niveau de patch inférieur à celui du dossier superviseur devront être revalidés pour être
en adéquation avec l’environnement.
Il permet de vérifier l’intégrité référentielle en anticipant tous conflits potentiels lors de l’installation du
patch :
Traitement standard ou état standard dupliqué dans un dossier « patché » et présent dans le patch
Présence de spécifique sur un des éléments « patchés » (le programme signale ce qui a été protégé
par un code activité spécifique).
Fichier : Nom complet du fichier. Le préfixe PX est caractéristique des patches standards sur X3
Version : Les fichiers patches standard ont des noms constitués sur le modèle PX_nnnn_vvv.dat, où :
- PX est le caractère définissant un patch standard (il est conseillé aux intégrateurs d’utiliser
l’une des lettres X,Y, ou Z pour nommer leurs fichiers de petch).
- nnnn est un numéro chronologique sur lequel une vérification de séquence est faite
- vvv caractérise la version majeure sur laquelle s’applique le patch (110, 120, 130, 140, 150).
Définit le numéro chronologique nnnn relatif au fichier de patch. C’est sur cette caractéristique, et sur
le champ Type, que le contrôle de séquence des patches est réalisé.
Création manuelle
Codes activité : Ce tableau permet de saisir une liste de codes activités commençant par X, Y ou Z.
Dès lors que l’on désire créer un patch intégrant des développements spécifiques, il est obligatoire de
définir ici les codes activités concernés. En effet, si cela n’est pas fait, les éléments du dictionnaire
portant des codes activités spécifiques non listés ici seront ignorés à l’intégration du patch. Cette
précaution est obligatoire, car sinon un patch standard serait en mesure de mettre à jour un objet
marqué par un code activité spécifique. C’est précisément le fait qu’aucun code activité spécifique ne
soit donné en tête dans un patch standard qui permet de gérer ce fait.
Ces codes activités ne sont pas un moyen de filtrer l’extraction des objets du patch, mais un moyen
d’indiquer quels codes d’activités spécifiques ne seront pas respectés à l’intégration du patch. Il existe
par contre une fonction qui permettra ensuite de pré-charger le tableau avec les objets marqués par
les codes activités saisis ici.
Objets : Ce tableau permet de saisir une liste d’objets à « patcher ». Cette liste est identifiée par un
type d’objet et un nom.
Langues : Ce tableau permet de définir les langues que l’on désire « patcher ». En effet, tous les
textes du dictionnaire de données (définis par le code type ATX) sont stockés dans une table séparée
(la table ATEXTE) et sont identifiés par un numéro (inférieur à 50.000 pour les textes standards, et
supérieur au delà). Ces textes sont transmis via patch sous leur forme littérale (le numéro n’a pas de
sens puisqu’il peut varier) dans différentes langues. La liste des langues utilisées pour inclure les
textes est donc donnée par ce tableau.
Type de patch :
- Standard : intégration du standard dans tous les dossiers ; spécifique et vertical sont conservés.
- Superviseur : intégration dans le dossier mère uniquement (documentation, modèles import-export,
pièces automatiques, workflow, etc.).
- Vertical : intégration dans tous les dossiers ; spécifique conservé, et suppression des SPV
obsolètes.
- Spécifique : intégration dans tous les dossiers ; suppression des actions SPE obsolètes.
Cette fonction permet de créer une archive contenant des développements spécifiques créés dans le
dossier courant, ainsi qu’un certain nombre d’éléments de paramétrage modifiés entre deux dates.
Une fois cette fenêtre de sélection préliminaire saisie et validée, le traitement de sélection s’exécute
(une fenêtre de progression affiche la sélection en cours), puis une deuxième fenêtre s’ouvre.
Cette fenêtre de validation présente un tableau listant, pour chacun des types d’éléments susceptibles
d’être « patchés », le nombre d’éléments concernés. La fonction Détail, accessible par clic droit,
permet alors de visualiser les éléments sélectionnés. Il est encore possible (par le champ Oui / Non)
de désélectionner globalement un type d’élément.
Lorsque cette dernière fenêtre est validée, l’extraction se fait dans le fichier de patch, et la fonction se
termine.
Si la case « Génération directe » est cochée, l’extraction va se faire sur la liste des éléments restés
sélectionnés sans autre filtre possible Si cette case n’est pas cochée, le fichier de patch qui sera créé
ne contiendra qu’un en-tête avec la liste des éléments à « patcher ». Il suffira, pour générer
effectivement le fichier avec son contenu, de rappeler ce fichier en création manuelle de patch. La
question Chargement d’objet sera alors posée. En répondant Oui à cette question, on rechargera
l’intégralité de l’en-tête du patch. Il sera alors possible de modifier manuellement la liste détaillée des
objets à « patcher », de la compléter, et de lancer finalement l’extraction des éléments du patch pour
réécrire le fichier de patch avec à la fois l’en-tête listant les éléments et leur contenu.
5. LE SERVEUR BATCH
Un traitement batch est un processus exécuté sans interaction avec un utilisateur. En général ce
processus est dédié aux traitements sur un ensemble de données qui peut être volumineux.
Ils sont surtout utilisés pour des processus automatisés, déclenchés périodiquement.
En informatique, un traitement batch est un traitement à déclenchement automatisé. Ils sont surtout
utilisés pour des tâches automatisées, notamment pour la gestion des comptes sur le parc
informatique d'une entreprise, université,...
Lorsque l'heure de démarrage d'une requête est arrivée ou dépassée, la requête est lancée (sauf si
elle est trop en retard, ou si le nombre maximum de tâches simultanément en cours est dépassé).
Lorsque le temps maximum (time-out) d’exécution alloué à une tâche est dépassé, la tâche est
interrompue.
Une requête est une demande d’exécution d’une ou plusieurs tâches soumises au serveur :
Par la fonction de soumission des requêtes : Exploitation > Serveur batch > Soumission des requêtes.
Depuis la fonction de surveillance des requêtes à l’aide d’un clic droit sur le tableau des requêtes
Exploitation > Serveur batch > Gestion des requêtes.
En déposant un fichier dans un répertoire du serveur de traitement, à l’aide d’un automate externe
(Pilote d’exploitation).
Par le biais d'un abonnement, c'est à dire une requête à lancer périodiquement.
Exploitation > Serveur batch > Gestion des abonnements.
Note technique :
Polling : Examen répété de l'état d'un ou plusieurs éléments d'un système pour y détecter un
changement d’état éventuel.
Code tâche : Code identifiant le processus qui sera activé par le serveur batch. A un instant
T une seule tache ayant ce code peut être active.
Actif : Ce témoin doit être à Oui pour que la tâche soit exécutée.
Module : Une tâche doit être rattachée à un module.
Type tâche : Traitement c’est un processus écrit dans le langage X3, sinon ce peut être un
script écrit dans le langage de la plate forme du serveur de traitement.
Time-out : Durée en minutes au-delà de laquelle le serveur batch interrompra la tâche.
Retard admissible : Si la tâche n’a pas pu être lancée au-delà de ce délai, elle ne sera pas
exécutée.
Niveau autorisation : Niveau minimal que doit avoir l'utilisateur pour lancer la tâche (paramétrage
utilisateur)
Notes techniques
Une tâche est identifiée dans X3 par son code, vu du système d’exploitation son identifiant est son
PID (Processus Identification). L’activation d’une tâche liée à une fonction X3 provoque l’ouverture
d’une session X3 avec entre autre l’initialisation des variables globales liées au couple dossier
utilisateur.
Niveau d’autorisation : Niveau minimal que doit avoir l'utilisateur pour lancer le groupe de tâches
(paramètre utilisateur)
Contrainte horaires : Table définissant les horaires admissibles
Code tâches : Liste des tâches à enchaîner
Remarque :
A la saisie d’une requête sur le groupe, tous les paramètres des tâches liées sont saisis.
Un point d’entrée permet, grâce à une variable nommée GERRBATCH, de définir des statuts d’erreur
arrêtant un enchaînement de tâches (il faut que GERRBATCH soit supérieur ou égal à 100).
Remarque :
Le dossier par défaut est le dossier courant. Il peut s’agir d’un autre dossier à condition que la tâche
soit cochée Multi-dossiers.
Si le code utilisateur n’est pas celui de l’utilisateur courant, la saisie du mot de passe est obligatoire.
La case à cocher Modèle permet de créer un fichier modèle pouvant ensuite être utilisé pour une
soumission de tâches. Dans ce cas, la tâche n’est pas exécutée. Ce fichier modèle s’appelle
MATACHE.mod (MATACHE étant le code de la tâche).
Les contraintes horaires permettent de définir les jours de la semaine et les horaires admissibles pour
lancer le batch associé à une tâche ou à un groupe de tâches.
Le calendrier est une table contenant les dates des jours fériés. Pour ces dates les processus batch
ne seront pas activés.
Remarque :
Deux types de jours : ouvrés et non ouvrés / fériés, chacun avec des plages horaires possibles
Seule l’heure de lancement définie est contrôlée. Si la tâche ne peut pas être lancée à l’heure prévue
et peut l’être dans une plage horaire qui n’est plus la bonne. Pour éviter qu’une tâche soit lancée dans
une plage horaire inadéquate, il faudra utiliser le paramètre définissant le retard admissible.
Code dossier : Code du dossier X3 sur lequel les données seront exploitées.
Code utilisateur : Code de l’utilisateur X3 pour le compte duquel le traitement sera effectué
Groupe: Code du groupe de tâches ou
Tâche : Code de la tâche.
Périodicité : Type de périodicité attribué à l’abonnement
Hebdomadaire : dans ce cas on indique dans le tableau les jours de la semaine pour lesquels
le traitement sera à exécuter
Mensuel : dans ce cas on indique les quantièmes du mois pour lesquels le traitement
sera exécuter. Le témoin fin de mois permet d’activer le traitement le dernier
jour du mois.
Jours exclus : Code du calendrier à utiliser pour déterminer les jours ouvrés.
Une seule requête : Cette case peut être cochée si l'abonnement est défini en fréquence. Si elle
est cochée, une seule requête est lancée par jour et dès que le traitement est
terminé, la tâche se met en veille pendant le nombre de minutes définies par
la fréquence, pour reprendre ensuite son exécution, ce jusqu'à ce que l'heure
de fin soit dépassée. La requête est alors affichée dans l'état En cours
pendant tout l'intervalle d'exécution. On garantit ainsi que la requête est
toujours présente en mémoire une fois qu'elle aura été lancée, ce qui peut
être au détriment d'autres tâches si le nombre maximum de tâches lancées
simultanément est atteint.
Epuration : Cette case ne peut être cochée que pour un abonnement défini en fréquence.
Dans ce cas, on ne garde pas trace des exécutions successives de la tâche
dans la fonction de gestion des requêtes. Seule la requête en cours et la
précédente requête sont conservées.
Sinon, la tache peut être activée trois fois au maximum à heure fixe et il faut
renseigner
Exécution forcée Cet indicateur ne peut être coché que si l'on donne des heures fixes
d'exécution pour un abonnement. Il garantit la création de la demande
d'exécution même si l'heure est dépassée au moment où le serveur batch
traite les abonnements de la journée.
Il est possible de visualiser les différents fichiers traces, de soumettre une nouvelle requête, de
supprimer une requête en attente ou d'en modifier les paramètres.
Remarque :
Note : l’habilitation à cette fonction permet de préciser si la personne a accès à toutes ces requêtes
ou uniquement à celles qui lui appartiennent.
Numéro : C’est le compteur des requêtes X3. Chaque requête se voit attribué un numéro i
ncrémenté séquentiellement par pas de un.
Dossier : Code du dossier X3 sur lequel le traitement est exécuté
Util : Code de l’utilisateur X3 lié à la session batch du traitement
Mono : Indicateur précisant si la tache est déclarée mono utilisateur
Etat : Statut de la requête
- Attente : le traitement n’a pas encore démarré
- Encours : le traitement est en cours d’exécution
- Terminé : le traitement est terminé sans erreur
- Erreur : le traitement est terminé avec des erreurs
- Aborté : le traitement a été interrompu soit volontairement soit à cause d’une erreur
non récupérable.
Le serveur batch possède une trace dédiée dans laquelle figure pour chaque processus activé:
La date et l’heure de démarrage
Le code du dossier sur lequel s’applique le processus
Le PID (Processus Identification Windows)
Le Numéro du processus X3
Le code de la fonction X3 correspondant au traitement
Validation des factures d’achat (FUNPIH)
Calcul des pyramides (PYRAMID)
etc..
Le serveur batch possède une trace dédiée dans laquelle figure pour chaque processus terminé lLa
date et l’heure de fin du traitement, le numéro du processus X3 et le code retour de la fonction X3
Exemple
=1000 00000004 07/11/07 12:27:46 Activation requête (DEMOFRA ACCBATCH T BATCHCPT 5600) (51000)
>2000 00000004 07/11/07 12:31:03 Requête interrompue par ADMIN pour le motif "RLV" (DEMOFRA ACCBATCH T BATCHCPT)
(32000)
=6000 00000000 07/11/07 12:38:10 ADMIN : Ordre d'arrêt transmis au serveur (56000)
=5000 00000000 07/11/07 12:38:11 Désactivation du serveur (55000)
=0000 00000000 07/11/07 12:38:36 Activation du serveur (PID=4048 ,USR=ADMIN ,SRV=1801) (50000)
=0000 00000000 07/11/07 12:38:41 Le serveur est activé \ Processus numéro 4048 (50000)
<1000 00000005 07/11/07 13:00:25 Délai dépassé (DEMOFRA FUNPIH T ) (21000)
=1000 00000006 07/11/07 13:09:40 Activation requête (DEMOFRA FUNPIH T 5888) (51000)
=1000 00000007 07/11/07 13:10:49 Activation requête (DEMOFRA ACCBATCH T BATCHCPT 5872) (51000)
Le caractère en première position de chaque ligne peut être utilisé comme filtre pour rechercher les
erreurs. Il faut filtrer les lignes qui débutent par le caractère inférieur.
La soumission de tâche par fichier permet le déclenchement de tâches X3 par des processus
externes. Ce mécanisme est à mettre en œuvre si l’on désire que l’activation des processus batch X3
soit pilotée par un superviseur d’exploitation ou si l’on désire synchroniser un processus externe avec
un traitement X3. Par exemple activer un import X3 après l’extraction des données d’une application
partenaire.
Pour activer cette fonctionnalité le paramètre superviseur EXTBATCH du chapitre habilitation (AUZ)
doit être positionné à Oui.
Principe de fonctionnement
La présence d’un fichier XXXX.job permet au serveur batch d’identifier un processus à activer. Le
fichier XXXX présent dans le répertoire job contient les codes et valeurs des paramètres nécessaires
à la soumission de la requête.
Dès que le serveur batch à pris en compte ce type de demande un fichier de même nom que le fichier
job est créé dans le répertoire req, ici XXXX.req Le processus peut être en attente.
Dès que le traitement devient actif, un fichier XXXX.run est créé dans le répertoire run. Le fichier
XXXX.req est copié dans le répertoire old pour conserver les paramètres de la demande de
traitement.
Lorsque le processus est terminé un fichier XXXX.sta est créé dans le répertoire sta. Ce dernier
contient entre autre le statut de fin du traitement.
Remarque :
Si des erreurs sont détectées dans les paramètres de lancement de la tâche (exemple : utilisateur
incorrect), le fichier passe directement du statut de .job à celui de .old et un fichier .sta est créé : la
tâche n’aura pas eu le temps d’être exécutée.
Si un fichier est dans l’état .req et qu’un fichier .kil est déposé, il passe directement en statut .old et
un fichier .sta est créé. S’il était déjà dans l’état .old (parce qu’un fichier .run existe), la tâche est
interrompue puis le fichier .sta est créé.
Dans tous les cas, le fichier .kil est effacé lorsque la demande d’interruption a été prise en compte
DOSSIER=MONDOSS
UTIL=TOTO
PASSE=WXTYSF La première partie correspond aux informations génériques de
GRP= lancement (dossier, utilisateur, mot de passe crypté, tâche ou
TACHE=VALSTA groupe de tâches, date et heure de lancement).
DATE=20030929
HEURE=0752
CODSTA=CA
DATDEB=19990601
La seconde aux paramètres saisis lors du lancement de la tâche.
DATFIN=20030930
SOCIETE=APN
TYPMAJ=2
ZSOCIETE=Société NEGOCE
Une ligne de longueur fixe, codage ascii 7 bits, séparateur entre deux champs (le « : »), Fin de ligne :
CR/LF ou LF selon le système
Statut normalisé sur 5 chiffres FSXXX, avec :
F=0 : fin normale, SXXX=nombre d’avertissements
F=1 : fin sur erreur de traitement, S=sous-cas, XXX=détails
F=2 : traitement non lancé, S=sous-cas, XXX=détails
F=3 : traitement interrompu, S=sous-cas
Remarque :
Consulter la documentation technique détaillée (RQT_FILE.htm).
Temps entre 2 scrutations : Définit le temps entre deux lectures successives de la table des requêtes.
Influe sur le délai de prise en compte d'une requête et inversement sur la charge du système.
Influe sur le temps d'entrée dans la fonction de surveillance des tâches.
Influe sur le temps d'arrêt d'une tâche trop longue. La scrutation time-out est consommatrice de
ressources.
Utilisation des fichiers batchs : Si cette case est cochée, il sera possible de lancer des tâches par la
création de fichiers dans un répertoire dédié. Ceci suppose que les utilisateurs aient le paramètre
EXTBATCH égal à Oui.
Listes des répertoires avec les extensions (.job … .old) :Définit les différents répertoires utilisés pour la
gestion des requêtes soumis par fichier. Ces répertoires sont supposés être par défaut sur le serveur
d’application (un autre serveur du réseau est envisageable, avec la syntaxe serveur@répertoire, mais
en aucun cas un répertoire sur le poste client).
la présence d’un fichier .run indique normalement que le serveur est en fonctionnement
la présence d’un fichier .stop indique qu’une demande d’arrêt a été transmise au serveur (mais que
les tâches lancées par le serveur ne doivent pas être interrompues)
la présence d’un fichier .kill indique qu’une demande d’arrêt a été transmise au serveur (avec
demande d’interruption des tâches lancées)
Les traces des requêtes sont purgées avec le bouton Epuration de la fonction de consultation des
requêtes.
Dans le répertoire …\Runtime\ServX3\TRA on trouve les fichiers trace des requêtes exécutées par le
serveur batch. Ces traces sont épurées lors de l’activation du bouton Epuration présent dans la
fenêtre de la fonction de gestion des requêtes.
Remarque :
Les écritures automatiques de la comptabilité sont également passées par cette tâche. Seules les
écritures saisies directement (OD) sont enregistrées directement.
Pour consulter les écritures comptables réalisées par les modules partenaires, utiliser le bouton trace.
Le lancement de cette tâche peut être abonné (ACCBAT)
Son arrêt peut être aussi abonné (ACCSTOP)
Les écritures automatiques de la comptabilité sont également passées par cette tâche. Seules les
écritures saisies directement (OD) sont enregistrées directement.
Tables associées
*1 La table BATCH mémorise le statut de la tache comptable batch. Suite à un arrêt du serveur ou un
incident du même type. Cette tâche peut être dans un état instable ne permettant pas son
redémarrage. Il faut alors intervenir sur cette table avec les outils de maintenance pour réinitialiser
dans l’enregistrement ACCENTRY les champs PID, RQT et STA
*2 Dans les tables GACCTMP & MTCBATCH un champ identifie les pièces qui n’on pas été prise en
compte suite à une erreur lors de la création des pièces définitives (problème de paramétrage des
pièces automatiques par exemple)
Traces
La trace des pièces comptables est dans le fichier ACCENTRY.tra dans le répertoire TRA du dossier.
Une trace VALPIECE.TRA contient les références des pièces en anomalie.
Ce chapitre présente les opérations permettant de mettre en production des états dans le contexte de
Sage X3. Il se limite à la présentation des principes de fonctionnement des éditions, aux techniques
de passage des paramètres d’édition de l’environnement de l’utilisateur X3 à celui des outils d’édition,
aux mécanismes possible d’automatisation de la production des éditions et enfin il présente une aide
au diagnostic des incidents.
- Principes de base
- Le dictionnaire des états
- Lancement des états
- Affectation des codes internes
- Valeurs par défaut des paramètres
Un serveur d’impression est un serveur Windows sur lequel sont installées, outre des composants
SAGE X3, les librairies Crystal Reports idoines.
Les éditions relatives aux données de l’application sont gérées avec le logiciel tiers « Crystal
Reports ™».
Pour pouvoir déclarer un nouvel état dans le dictionnaire X3, la présence du fichier programme .rpt est
nécessaire dans le répertoire REPORT. Dans le cas d’un dossier multi langues les répertoires des
fichiers .rpt sont organisés de la manière suivante :
Dans chaque dossier X3 de la solution on trouve un répertoire REPORT. Dans ce répertoire un sous
répertoire est créé par code langue utilisé dans le dossier X3. Les fichiers Crystal Reports ™ sont à
déposer dans les répertoires correspondants à la version de la langue pour laquelle l’état est produit.
Intitulé court : Désignation de l’état utilisée dans les fenêtres de sélection proposée aux utilisateurs
dans le cas ou un choix est possible
Groupe : Code du groupe de rattachement de l’état permettant de gérer des habilitations. Les
groupes dont déclarés dans le Menu local 97 qui est personnalisable.
Muti langues : Si cette case est cochée, cela indique que l'état a été généré dans toutes les langues
gérées par le dossier, sinon l'état est uniquement dans la langue de conception
Langue origine : Cette zone permet de réserver l'état à une langue. La langue dans laquelle à été
conçu l'état.
Type : Le type sert à déterminer une destination dans le cas ou la formule complément et la
destination ne sont pas renseignées. Au lancement de l'impression, le superviseur détermine la
destination en fonction de la valeur de ce paramètre superviseur.
Obligatoire : Si cette case est cochée, l’utilisateur ne peut pas modifier la destination au lancement
de l'impression de l'état.
Formule complément : Ce champ sert à la recherche d'une destination par utilisateur et par état.
Cette destination, si elle est trouvée, sera prioritaire par rapport à celle précisée au-dessus. Cette
formule est évaluée au lancement de l’impression.
Exemple: Si pour l'état X, on a défini un complément avec la valeur "PAR" correspondant à
l'imprimante Y et que la formule de l'état X contient l'expression "PARAM(site)", alors, au moment
d'imprimer l'état, si le paramètre "site" est égal à PAR, l'imprimante sera initialisée à Y.
Batch obligatoire : Ce témoin permet de réserver l’utilisation de l’état aux processus batch.
Contraintes horaires : Code d’une contrainte horaire batch. Voir le chapitre sur le serveur batch.
Nom état : Nom du fichier programme Crystal Reports ™ sans son extension rpt.
Traitement standard Nom du traitement standard X3. Il permet d'initialiser des variables définies
dans le paramétrage de l'état ou éventuellement de préparer des fichiers avant l'impression, ou même
de mettre à jour des champs dans la base de données (ex: flag d'édition).
Un traitement est réservé au développement standard, et l'autre aux spécifiques
Autorisation site : Ce témoin permet d’indiquer que le code site est un critère de définition du droit
d’usage de l’état. Si ce témoin est positionné à Oui, il faut indiquer le code de la fonction à utiliser pour
vérifier les droits de l’utilisateur.
Code d'accès : Ce code d'accès permet l'autorisation ou l'interdiction d'exécution de l'état par un
utilisateur.
Remarque :
Le menu local permet d’étendre les groupes d’états (une habilitation globale par groupe existe dans la
définition des utilisateurs). On retrouve ensuite l’habilitation plus fine par code activité (c’est bien sûr le
droit d’exécution qui est utilisé pour avoir le droit d’imprimer).
Cet onglet contient le tableau des paramètres qui seront envoyés au programme Crystal Report ™.
Ce tableau peut contenir un maximum de 100 paramètres.
Paramètre La valeur de ce code est transmise à Crystal Report. Une fenêtre de sélection
permet de proposer l'ensemble des paramètres déjà existants dans les états
du dictionnaire X3. Pour une même notion, il est donc conseiller de réutiliser
les mêmes noms de paramètre.
Convention pour les paramètres exprimant une borne début et fin :
Ne saisir que la borne de début. Son code doit se terminer par le suffixe
« deb » ou « str ».
Le paramètre pour la borne de fin est généré avec la même racine que
la borne début et le suffixe « fin » ou « end ».
Il n'apparaît pas dans le tableau mais est passé à Crystal Report.
Intitulé paramètre Destiné notamment à figurer sur les états et les écrans dans lesquels le code
de la fiche peut être saisi ou sélectionné. Ce texte permet de donner une
description en clair du paramètre.
Type Ce champ défini le format du paramètre. Les principaux types génériques sont
:
A: Alphanumérique
C: Entier court
L: Entier long
DCB : Décimal
D: Date
M: Menu local
D'autres types peuvent être utilisés, basés sur le dictionnaire des types des
données. La touche fonction F12 permet d'en obtenir la liste.
Longueur Permet de définir la longueur d'un champ lorsque ce champ utilise un type de
données générique dont la longueur n'est pas fixée par le dictionnaire des
types de données.
Menu Définit le numéro de menu local associée au champ défini sur la ligne.
D/F Ce témoin indique s'il faut saisir une fourchette de valeur. Le paramètre est
donc suffixé par « deb » ou « str ».
Valeur par défaut (début) Cette zone contient la valeur par défaut du paramètre. Il est possible
de saisir une expression qui sera évaluée avant la saisie pour initialiser cette
valeur.
Valeur par défaut (fin) Cette zone contient la valeur par défaut de fin du paramètre.
Table de contrôle Une table de contrôle peut être utilisée pour vérifier la valeur du paramètre
saisie. Dans ce cas c’est la référence de cette table de contrôle qui figure
dans ce champ.
Paramètre objet/dépendance Permet de définir le premier élément de clé d'un objet, si cet objet a
une clé à deux composantes. Exemple : n° table pour une table diverse.
Particularité pour une table diverse dépendante : ce champ permet de saisir l'élément maître de
la table diverse "maître"; dans ce cas, le numéro de la table diverse est à saisir dans la colonne
"menu".
Paramètre de segmentation Cette zone contient un argument permettant de découper une édition.
Cette information doit être une donnée importante de l’édition. Par exemple le code société ou le code
site. Cette possibilité de segmentation est à mettre en œuvre pour les éditions volumineuses
contenant plusieurs dizaines de milliers de pages.
Intitulé Si l'état s'appuie sur au moins une table d'un autre dossier, on aura l'obligation
d'indiquer la source de données liée à chaque dossier supplémentaire sous la
forme « solution;dossier ». Il faut que le dossier soit un dossier lié dans la
gestion dossier.
Le nombre de sources de données est limité à 5. Le dossier saisi n'est, en fait,
qu'une valeur par défaut, puisque la source est modifiable au lancement de
l'impression. Si la solution n'est pas indiquée, le superviseur prend la solution
courante; il en est de même pour le dossier. Pour atteindre les tables du dossier
mère, on peut utiliser la variable GDOSX3, disponible pour tout produit. Pour
atteindre les tables du dossier d'exploitation X3, depuis un autre produit (géode
GX, Abel X3, Paie), les variables GSOLCPT et GDOSCPT contiennent
respectivement la solution et le dossier X3.
Dossier par
Table Tables associées à l'une des sources de donnée ci-dessus pour accéder à un
autre dossier. Une limite de 10 tables est à respecter. Le nom d'une table est
limité à 200 caractères.
Intitulé
Numéro numéro identifiant l'une des sources de données du tableau ci-dessus.
Source de données Destiné notamment à figurer sur les états et les écrans dans lesquels le code de
la fiche peut être saisi ou sélectionné. Ce texte permet de donner une
description en clair de la fiche concernée.
Si l'état s'appuie sur au moins une table d'un autre dossier, on aura l'obligation d'indiquer la source de
données liée à chaque dossier supplémentaire sous la forme « solution;dossier ». Il faut que le
dossier soit un dossier lié dans la gestion dossier. Le nombre de sources de données est limité à 5. Le
dossier saisi n'est, en fait, qu'une valeur par défaut, puisque la source est modifiable au lancement de
l'impression. Si la solution n'est pas indiquée, le superviseur prend la solution courante; il en est de
même pour le dossier. Pour atteindre les tables du dossier mère, on peut utiliser la variable GDOSX3,
disponible pour tout produit. Pour atteindre les tables du dossier d'exploitation X3, depuis un autre
produit (géode GX, Abel X3, Paie), les variables GSOLCPT et GDOSCPT contiennent respectivement
la solution et le dossier X3.
Ensuite, on indiquera pour chaque source de données, les tables utilisées dans l'état. Si une table
n'est pas référencée, elle sera automatiquement associée à la source de donnée du dossier
courant. De ce fait, les tables du dossier courant n'ont pas à être référencées ici. Le nom de la table
doit être celui utilisé dans Crystal ; cela peut être le nom de pseudonyme, s’il en existe dans
Crystal. Une limite à 10 tables est à respecter ici, limite due le serveur d’impression. Le nom d'une
table est limité à 200 caractères.
Par l’entrée de la barre de menu Fichier / Impression (ou Fichier / Liste) on lance alors un état
prédéfini (éventuellement une liste).
Soit ce sont des éléments simples de type numérique, alphanumérique, date ou menu local
Soit ce sont des bornes : valeur de début et valeur de fin
Exceptionnellement, sous forme
d’une liste de valeurs (pour segmenter l’état selon des bornes)
La destination de l’état :
Soit par un code destination défini dans une table avec la possibilité d’avoir une destination par défaut
en fonction du contexte
Soit par des paramètres tels le type de sortie (pré-visualisation, Imprimante, Message, Fichier,
Imprimante/fichier)
Imprimante (sélection par une fenêtre Windows), Serveur pour une impression via un serveur
d’impression
Les caractéristiques d’impression (Orientation, copies, bornes de pages… La langue est saisie pour
les états multilingues)
Remarque :
Les valeurs par défaut proposées pour les paramètres viennent de l’état, mais peuvent aussi venir du
contexte de lancement (cf. plus loin)
Lorsque les destinations sont répertoriées (cf. plus loin), la valeur par défaut proposée pour la
destination peut être définie en fonction du contexte
Le choix Imprimante / Fichier permet de créer un fichier d’extension .prn (en général très
volumineux) qui stocke le résultat tel qu’il aurait été envoyé à l’imprimante.
A partir d’une fonction X3 on détermine le code état après une première étape qui utilise la notion de
code interne d’un état. Cette notion permet de regrouper plusieurs codes état du dictionnaire sous un
même code
Par exemple l’impression de la fiche d’un bon de livraison offre en standard les choix suivants
L’utilisateur après la sélection d’un code état dans la liste se retrouve dans le contexte du lancement
de l’état sélectionné. Si le code impression ne propose qu’une seule solution, l’utilisateur se retrouve
sur la fiche de lancement de l’état.
Rappel :
Les affectations d’états réalisées par Fichier / Impression et Fichier / Liste sont paramétrables
(Paramètres / Paramètres généraux / Personnalisation objets)
Lorsque l’impression est lancée en mode local, l’icône signale que l’édition est en cours.
Pour cette raison, il est intéressant de disposer d’un couple « code état » et « paramètres » que l’on
obtient grâce au « mémo ».
Cette fenêtre permet de visualiser les impressions en cours sur les différents serveurs d’édition, de les
réordonner, voir de les supprimer.
Remarque :
Pour paramétrer correctement des règles d’alimentation des valeurs paramètre d’un état, il faut se
mettre dans le contexte de la fonction et vérifier le contenu des classes [M] . Celles-ci correspondent
au contenu des onglets qui composent la fenêtre à partir de laquelle la demande d’impression sera
activée.
Des constantes et des variables globales peuvent êtres utilisées dans ce contexte.
Le progiciel permet d'envoyer un état vers un ensemble de destinations, en particulier vers toute
imprimante Windows(TM) visible sur le réseau du poste client, mais aussi vers des fichiers ou d'autres
destinations. Afin de faciliter le choix et l'affectation des destinations par défaut, il est possible - et
recommandé - de centraliser la description de ces destinations accessibles globalement dans cette
table.
On retrouve dans cette table les destinations, identifiées par un code, avec des caractéristiques
permettant d'en sophistiquer le processus de choix et d'affectation par défaut, et aussi de définir si un
serveur d'édition Crystal Reports est utilisé plutôt qu'une utilisation de Crystal Reports(TM) en local.
Elle n’empêche pas l’utilisation, au lancement de l’état, d’une imprimante non répertoriée par le choix
classique d’une imprimante sous Windows TM
Code d’accès : S’il est renseigné, l’utilisateur doit avoir les droits d’exécution pour utiliser
l’imprimante
Type d’imprimante : Menu local 22 (intitulés modifiables) Le premier type est un type par défaut
Format export Lorsque la sortie se fait sur fichier, il existe différents formats possibles que
l'on peut sélectionner ici. Cette liste de formats dépend de la version courante
de Crystal Reports, elle est susceptible d'évoluer dans le temps.
Serveur On peut définir le serveur d'impression à partir duquel sera imprimé l'état. Si
cette zone est vide, l'impression sera réalisée localement sur le poste client.
Imprimante Le nom d'imprimante défini ici sera proposé à l'impression de l'état. Il doit
correspondre au chemin réseau de l'imprimante, tel qu'il est défini dans le
panneau de configuration Windows.
Nombre de copies Permet, lorsque la sortie se fait sur imprimante, de donner une valeur par
défaut au nombre de copies à réaliser.
Copies assemblées Si plusieurs copies sont demandées, et si la case est cochée, on assemble
les pages avant d'éditer l'exemplaire suivant. Sinon, on répète chaque page.
Par exemple, dans le cas d'une impression de 3 pages en deux exemplaires :
- si la case est cochée, on obtient l'ordre des pages 1, 2, 3, 1, 2, 3
- si la case n'est pas cochée, on obtient l'ordre des pages 1, 1, 2, 2, 3, 3
Remarque :
Le premier type de destination désigne des destinations « passe-partout » utilisables pour tous les
états même si ceux-ci exigent un type d’imprimante particulier.
Même si dans la plupart cas la notion de destination peut être associée à une imprimante physique,
elle permet plus généralement d’envoyer un message, de créer un fichier, ou de pré-visualiser
uniquement à l’écran.
Les règles données ici permettent, lorsqu’on lance un état, de proposer une imprimante par défaut à
l’utilisateur. Dans tous les cas le type défini sur la fiche de l’état est respecté.
Si l’imprimante est protégée par un code d’accès, l’utilisateur doit avoir les droits d’exécution sur cette
imprimante (sinon, on recherche une autre imprimante par l’algorithme).
Si la règle finalement utilisée porte une information Obligatoire (oui/non) et si sa valeur est Oui,
l’utilisateur ne pourra pas la modifier. Dans tous les autres cas, ce n’est qu’une valeur par défaut.
La formule de complément est une expression pouvant faire appel à toute variable disponible dans
l’environnement, y compris les valeurs de paramètres sous la forme PARAM(NOM_PARAMETRE).
Par exemple, PARAM(SOCIETE)
Si l’imprimante est modifiable, et si l’utilisateur supprime le code imprimante, il se retrouve en choix
d’imprimante Windows. Ceci suppose que le paramètre utilisateur WINIMP soit égal à Oui (sinon, ceci
n’est pas possible).
Le serveur d’impression est normalement exécuté sous la forme d’un service Windows. Il permet
- De gérer une file d’attente des demandes d’impression déposées par les fonctions X3
- De lancer plusieurs Editions Crystal Report en parallèle
L’utilisation d’un serveur d’impression est nécessaire dans les cas suivants :
- Editions lancées par un processus batch
- Editions lourdes risquant de monopoliser les ressources du poste client dans le cas d’une
exécution interactive
Une fois dans cette fonction, il suffit de renseigner le nom réseau du serveur d’édition qu’on souhaite
surveiller (serveur:port), et les données relatives à ce serveur s’affichent automatiquement dans la
fenêtre.
Lorsque l’édition est terminée (Le processus Crystal Report s’est arrêter) un fichier séquentiel est créé
dans le répertoire ..\Temp du serveur d’impression.
Si Crystal Report à terminé l’édition sans erreur ce fichier est vide, sinon il contient le(s) code(s)
Erreur(s) généré(s) par le moteur Crystal Report.
En standard le serveur d’impression est déclaré sous la forme d’un service Windows. Celui-ci peut
être désactivé et relancé en mode trace pour analyser les points de contentions. Pour cela il faut
saisir le paramètre de démarrage /d
Ainsi configurer le serveur d’impression produit une trace dans le répertoire Windows nommée
AdxSrvImp_Trace.Log.
7. EPURATION ET HISTORISATION
Les fonctions d’historisation supposent la création d’un dossier dans lequel les données archivées
vont être stockées et se définissent par groupe de tables.
L’historisation transfère définitivement les données archivables (i.e. répondant aux critères), datées de
plus de N1 jours ou mois, dans le dossier archive.
L’épuration épure définitivement les données non archivables, datées de plus de N’1 jours ou mois, et
les données archivées datées de plus de N2 jours ou mois.
Une sauvegarde est indispensable, car ces opérations sont irréversibles et l’épuration conduit à une
suppression de données.
Le paramétrage des règles d'épuration permet de définir les durées de vie à partir desquelles des
mouvements peuvent être épurés ou archivés, en suivant des règles de cohérence par groupes de
table définis par ailleurs.
L'archivage se fait par transfert des données d'une table du dossier vers une table de même structure
(à deux champs près, CREHISDAT et CREHISUSR, qui permettent de connaître les dates et
opérateurs ayant historisé la donnée). Cette table est définie dans un dossier dédié, qui utilise par
ailleurs le dossier courant comme dossier mère, et dont la création est faite automatiquement lors du
premier archivage.
L'intérêt de cette façon de faire réside dans le fait que les fonctions de consultation sur les données de
l'historique fonctionnent alors par simple connexion sur ce dossier, de la même façon qu'elles
fonctionnent sur le dossier en cours.
Un dossier historisé est un dossier particulier, associé au dossier d’exploitation, qui se définit par :
- Un nom (HDOSSIER par défaut).
- Des paramètres de taille globale.
- Des paramètres base de données.
- Un coefficient exprimant la taille des tables historisées par rapport aux tailles des tables
d’origine.
- Un profil menu, donnant accès à des fonctions de consultation, qui sera le profil par défaut
quand on entrera dans ce dossier.
Remarque :
Il est en général intéressant de définir ce dossier historisé sur d’autres volumes disques, pour des
raisons de performance.
Il peut même être intéressant de l’installer sur un autre serveur, pourvu que Sage X3 ait été installé
sur le serveur en question. Il est à noter que la création d’un dossier historisé sur un autre serveur
n’est pas automatisée, mais il est parfaitement possible, une fois que ce dossier est créé avec des
tailles qui peuvent être minimales, de le déplacer sur un autre serveur.
Pour que ceci fonctionne ensuite, il faudra :
- Modifier le paramètre HISDOS et y mettre le chemin d’accès au dossier avec la syntaxe
serveur@DOSSIER
- Modifier le cas échéant le paramètre HISCOE (coefficient d’augmentation de tables)
Il est à noter qu’à partir du moment où les tables d’un groupe sont déclarées historisées, le traitement
d’historisation va les créer, les dimensionnant en appliquant à la table d’origine le coefficient
multiplicateur défini à la création et stocké dans HISCOE. Ce paramètre ne sert donc que s’il n’y a pas
encore eu d’historisation.
Développement > Dictionnaire données > Ouverture au paramétrage > Historisation / Epuration
On associe à un code :
- Un groupe de tables liées
- Des informations de sélection
- Société
- Site
- Date de référence
- Des formules qui doivent être vérifiées pour que l’épuration soit possible
Remarque :
Dans cet exemple, la date de référence utilisée pour savoir quels contrats d’achat peuvent être épurés
est la date DAT (date de calcul de la statistique). Ainsi, on épurera les contrats datés de plus de N
jours.
Remarque :
Selon l’opération d’épuration ou d’historisation envisagée, les dates peuvent être ramenées à des
périodes ou à des exercices.
Remarque :
Selon l’opération d’épuration ou d’historisation envisagée, les dates peuvent être ramenées à des
périodes ou à des exercices.
IL EST IMPORTANT DE FAIRE DES SAUVEGARDES AVANT DE LANCER CETTE FONCTION
Remarque :
On ne sait par réunir les données archivées et les données d’exploitation; par contre, on peut utiliser,
dans le dossier archive, potentiellement toutes les fonctions de gestion de X3, automatiquement
bridées en consultation.
Une contrainte existante est que les données archivées doivent avoir la même structure que les
données en cours d’exploitation; ceci signifie que le passage d’un patch induisant des modifications
de données provoque les modifications sur les tables du dossier archive.
Enfin, les états standards Crystal Reports ne gèrent que les données issues d’un seul dossier. Il faut
donc créer des états spécifiques si on désire éditer des données qui sont issues à la fois de tables
présentes dans le dossier d’archive et le dossier courant.
8. LE WORKFLOW MANUEL
8.1. INTRODUCTION
Les mécanismes de gestion des processus Workflow ont été complètement réécrits. Ils permettent de
gérer un ensemble d’événements déclenchants plus important, et les règles d’affectation sont plus
riches.
Des actions simples de gestion des réponses au message envoyé à l’utilisateur peuvent être
exécutées au travers du serveur http déclaré dans la solution Sage X3.
Des actions de type traitement peuvent être ajoutées au processus de Workflow lors de la génération
du message ou lors du processus de signature.
Pour assurer la compatibilité avec les versions antérieures du mécanisme de gestion des signatures
des demandes d’achat (DA) et des commandes, les fonctions de paramétrage de ces objets reste
disponible.
- Paramétrage des signatures
- Règles de signatures
- Rectification des signatures
Ces fonctions ne sont à utiliser que pour gérer les signatures des commandes et des demandes
d’achat.
L’envoi des messages est conditionné par l’utilisation d’une messagerie acceptant l’interface MAPI
lors de l’envoi par le client Sage X3 ou SMTP POP3 lors de l’envoi par le serveur X3.
Dans le cas ou le processus de Workflow inclus une action de retour ou de signature, les destinataires
sont nécessairement des utilisateurs X3.
La gestion des actions de signature passe par un serveur http qui active un processus batch
permettant la mise à jour des tables.
Les processus de Workflow utilisent les paramètres superviseur du groupe WRK suivants:
TYPMES : Envoi des messages via les postes clients ou le serveur de traitement.
WRKDAY : Nombre de jours permettant de définir la fenêtre de consultation des notifications dans un
plan de travail.
Exemples
- valeur 0 : date début = date fin = date$
- valeur 5 : date début = dates$ - 5 jours ; date fin = date$
Il existe d’autres paramètres superviseur définis pour la gestion des liens de workflow (cf. chapitre
dédié) qui peuvent être associés à des codes activité associés
8.1.2.1. Fonctionnel
AUDIT : Ce code permet de rendre optionnel la gestion de l'audit des modifications sur les tables de
la base. Cette fonction, définie via l'onglet Audit du dictionnaire des tables, permet de tracer, par des
triggers de base de données générés automatiquement, les insertions, suppressions, et modifications
faites sur une table, en stockant si nécessaire des valeurs avant et après sur des champs particuliers.
Pour mettre en place un Workflow manuel sur les évolutions des données d’une table, il faut rendre
actif ce code activité.
8.1.2.2. Dimensionnement
AWR : Ce code permet de définir le nombre maximum de signataires qu'il est possible de déclarer
dans une règle d'affectation. Ce nombre ne doit pas être supérieur à 10.
Table Abréviation
Désignation
AWRKLNK [AWM] Modèles de données
AWRKPAR [AWA] Règles de Workflow (définition)
AWRKPARC [AWC] Règles de Workflow (actions)
AWRKPARF [AWF] Règles de Workflow (signature)
AWRKPARH [AWH] Règles de Workflow (destinataire)
On ne dispose plus des 5 couples natures/information dans le moniteur Workflow. Pour contourner ce
point, il faut utiliser les variables de contexte. Ces variables peuvent être utilisées dans les données
affichées des plans de travail et comme critère de sélection des évènements de Workflow. Il n’y a pas
d’automatisme de reprise de ce type de paramétrage.
Afin de disposer d’un ensemble d’informations cohérentes pour construire un processus de Workflow,
une fonction permet de définir un modèle de données. Celui-ci est constitué d’un ensemble de tables
qui seront ouvertes lors du déclenchement du Workflow avec la définition des liens entre ces tables.
Cette fonction permet de définir un groupe de tables liées soit directement, soit en cascade, par des
liens de type (1,1) ou (1,N) à une table principale supposée être en ligne.
Développement > Dictionnaire données > Ouverture que paramétrage > Modèles de données
Le champ Actif permet d'activer ou de désactiver la fiche courante sans pour autant perdre son
contenu. Une fiche désactivée ne peut pas être utilisée (par appel de son code) dans d'autres fiches
(documents, paramétrages...), ou lors de traitements de masse.
Le champ Code activité permet de protéger le modèle décrit. En effet cette notion de modèle est
considérée comme une fonction de développement.
Il est fortement conseillé de créer un code activité dédié et d’affecter celui-ci sur tous les modèles de
données qui seront créés dans un dossier afin de ne pas perdre le paramétrage de ces modèles lors
de la revalidation du dossier.
Le champ Table principale identifie la table principale à partir de laquelle on lit d'autres tables par des
liens directs ou en cascade. Cette table est supposée être en ligne si le modèle est utilisé dans une
règle Workflow de type différent de Manuel. Dans le cas d'un Workflow de type Manuel, elle fait partie
de la jointure qui est ouverte et parcourue à l'exécution du Workflow.
Bloc Liens
Pour chaque table dépendante de la table principale devant être ouverte dans le contexte du
Workflow, une ligne doit être déclarée.
Le champ Table liée contient le code de la table liée. Le nombre de tables liées est limité à 30.
Le champ Abrév correspond à l'abréviation sous laquelle la table liée sera ouverte. Si ce champ n'est
pas saisi, on utilise l'abréviation par défaut de la table.
Le champ Table origine contient le code de la table à l'origine du lien décrit dans la ligne courante.
Ce peut être le code de la table principale ou celui d’une des tables déclarées dans des lignes
précédentes.
Le champ Clé de lien définit le code de la clé de la table utilisée pour réaliser la lecture des lignes
liées. Par défaut, la première clé de la table est utilisée.
Le champ Type de lien indique la cardinalité du lien. Il prend l'une des deux valeurs suivantes :
1,1 : signifie que pour chaque ligne de la table d'origine, une seule ligne de la table liée est lue.
1,n : dans ce cas, plusieurs lignes de la table liée peuvent être lues. Elles sont définies par
l'expression de clé, qui peut être incomplète si elle est en plusieurs parties (les lignes dont les
éléments de clés renseignés correspondent à la valeur donnée sont parcourues).
Le champ Expression de lien contient les éléments constitutifs de la clef de lecture. Il est défini
comme une ou plusieurs expressions calculées séparées par un point-virgule. Chaque expression est
évaluée, et le résultat permet de connaître la valeur de la clé utilisée pour réaliser la jointure. Lorsque
les jointures multiples sont autorisées, on peut ne donner que les premiers éléments de la clé.
Dans les expressions, on peut utiliser des constantes, et des champs issus des tables précédemment
définies dans la liste des liens.
Le Champ société contient le code du champ à utiliser pour déterminer le code de la société lors de
l’exécution du Workflow. La valeur de ce champ permet de déterminer la règle d'affectation à utiliser.
Le Champ site contient le code du champ à utiliser pour déterminer le code du site l’exécution du
Workflow. Il permet d'en déduire la société courante, si celle-ci n'est pas définie par le champ société.
Cet onglet permet de définir les conditions de déclenchement du processus de Workflow. Ces
conditions sont identifiées par un type et un code événement. Les valeurs du champ type
d’événement sont déclarées dans le menu local 988.
Le champ type d’évènement est l’attribut principal d’identification du processus de Workflow qui sera
exécuté. Les autres paramètres sont dépendants de cette valeur.
L’événement Objet regroupe les boutons et les opérations réalisées sur l’objet.
L’événement Signature correspond à l’action de signature d’un utilisateur sur un Workflow précédent.
Le contexte de l’événement de Workflow d’origine est alors en ligne.
L’événement Manuel est lié à un Workflow déclenché manuellement par un utilisateur ou par un
processus batch. Ce type d’événement peut être utilisé pour gérer les audits paramétrés sur les tables
X3.
Un code événement : La valeur de ce champ est dépendante du type d’événement. Il est utilisé
comme critère dans les transactions de consultation des évènements de Workflow.
Pour les évènements de type divers, le menu local 908 contient les évènements autorisés. Cette table
ne doit pas être personnalisée
Un code opération qui n’est significatif que pour les Workflow de type Objet, Signature et
Import/Export, il permet de préciser de manière plus fine les conditions de déclenchement du
Workflow. Les valeurs autorisées sont dépendantes du contexte.
Le modèle de données : Permet de définir un ensemble cohérent de tables qui sont utilisées dans le
contexte d’exécution du Workflow. Cette notion de modèle est rendue nécessaire pour gérer des
règles complexes de signature et pour produire des textes de messages complets.
Cette notion de modèle est obligatoire pour les Workflow de type Manuel, car il permet de définir la
requête à exécuter pour réaliser l’action de Workflow. Voir le chapitre concernant le paramétrage d’un
modèle de données.
L’indicateur de fin de transaction : Utilisé pour un Workflow de type objet, pour préciser quand le
Workflow sera déclenché. Pendant ou après la transaction de mise à jour des tables liées à l’objet.
Le code Règle d’affectation : Ce code permet de ne pas gérer de destinataires en dur au niveau de
la règle de Workflow. Il permet de définir une table de ligne multi critères qui renvoie une ou plusieurs
valeurs. Cette règle d’affectation renvoie dans une variable dimensionnée [L]USER(1..N) la liste des
destinataires. Ces destinataires sont de type utilisateurs X3. Le nombre maximum de signataires est
définit par la variable de dimensionnement AWR qui est initialisée à 6 et dont le maximum est de 10.
Le type de Workflow : Cette information permet de préciser lorsque le Workflow est lié à un modèle
de type entête / lignes, le niveau pour lequel il sera déclenché.
Le code de la Table Ligne : Cette information est à renseigner si et seulement si le Workflow est
déclenché sur une table de lignes détail (Ligne des factures liées à un règlement par exemple).
Le critère de regroupement des lignes : Cette zone permet de définir une règle de regroupement afin
de ne générer qu’un seul événement de Workflow par rupture sur ce critère. Ce critère est une
expression séparée par des points virgules.
Lorsque le contexte est de type en-tête et lignes, on peut filtrer une partie des lignes reliées à un en-
tête en définissant des conditions s’appliquant sur les lignes. S'il reste au moins une ligne concernée
et que les conditions de l'en-tête sont vraies, le déclenchement sera réalisé.
Si plusieurs lignes de conditions sont paramétrées, c’est l’ensemble de ces conditions qui détermine
le déclenchement de l’événement.
Activation suivi : Une notification est gérée dans le plan de travail et les circuits de signature
associés sont activés.
Activation action : Ce témoin permet de prendre en compte les actions déclarées dans l’onglet
action.
Le champ Condition permet d’exprimer une règle pour que le message soit envoyé au(x)
destinataire(s) déclaré(s) dans la ligne.
La notation not[L]COND(1) permet de définir la condition inverse de la ligne renseignée sous forme
d’indice (valeur 1 dans l’exemple).
La notation [L]NBUSR=0 correspond à une règle d’affectation qui ne renvoie aucun destinataire et
permet de définir un destinataire par défaut.
Le champ Type permet de préciser si le destinataire est un utilisateur Sage X3 défini dans la table
AUTILIS ou un tiers défini dans la table BPARTNER. Il est nécessaire que l’adresse mail soit
paramétrée sur la fiche correspondante du destinataire.
Le champ Destinataires contient soit une formule évaluée lors de la construction du message, soit
une adresse de messagerie. Si le type de destinataire est un utilisateur X3, le code du destinataire
sera soit définit par une formule évaluée lors de la construction du message (exemple [V]GUSER),
soit définit à l’aide d’une règle d’affectation. Dans ce dernier cas, c’est le tableau [L]USER qui contient
les codes des destinataires.
Le champ Fonction permet pour les destinataires qui sont des tiers, de filtrer dans la liste des
contacts liés au code tiers, ceux dont la fonction correspond à la valeur saisie. Dans la fiche contact
l’attribut fonction est défini par une valeur du menu local 233. Si, dans cet écran, la valeur du champ
«Fonction » n’est pas renseignée, tous les contacts déclarés dans la fiche tiers et ayant une adresse
mail renseignée recevront le message.
Le champ Envoi mail permet de préciser si les destinataires déclarés dans la ligne recevront:
- Non : Aucun message,
- Oui : Un message à chaque destinataire,
- Copie : Une copie du message.
Le champ Suivi précise si les destinataires de la ligne vont recevoir une notification dans leur plan de
travail, selon la valeur saisie :
- Non : dans ce cas, aucune notification ne sera disponible dans le plan de travail.
- Oui : une notification leur sera envoyée, elle pourra être simplement visée, pour
signaler que l'utilisateur l'a lue.
- Avec signature : cette notification devra être signée par un des destinataires de la ligne.
Le champ Nature permet de définir un critère de regroupement dans les fonctions de suivi.
Le champ Option délégué permet de préciser la façon dont est géré le fait que l’absence du
destinataire identifié dans la ligne. Cette absence est gérée par l’intermédiaire de la transaction
« Utilisateurs délégués » présentée dans un chapitre spécifique.
- Non, seul le destinataire d’origine recevra le message.
- Tous, le destinataire et tous les utilisateurs définis comme délégués du destinataire recevront
le message.
- Cascade, le destinataire, ses délégués, les délégués de ses délégués, etc. recevront le
message.
- Premier libre, le premier destinataire présent recevra le message.
Le champ Objet : permet de définir le contenu du champ Objet du message envoyé, sous la forme
d'une expression calculée qui est évaluée au moment du déclenchement de l'événement. Comme par
exemple :
"La tâche"+[F:ABR]TACHE+" est terminée"
Le champ Texte permet de définir le contenu principal du message. Son écriture se fait sous la forme
de texte libre incluant des expressions logiques (Formule de calcul) entre deux barres verticales qui
tiennent lieu de séparateur. Ainsi, par exemple, on pourra écrire des contenus tels que :
Le texte des messages peut contenir des libellés issus de la table des textes ATEXTE. Ces textes
sont alors déclarés avec l’instruction mess.
Exemple
############################
| mess(00306,00183,1)+":"- [F:PIH]NUM |
| mess(00017,00007,1)+":"- [F:PIH]BPRPAY |
| mess(00425,00183,1)+":"- format$('N:9.2',[F:PIH]AMTATI) -[F:PIH]CUR |
| mess(00048,00110,1)+":"- format$('N9.2',[M]CUMLINAMT2) -[V]GLOCALDEV |
| mess(00021,00129,1)+": 1"-[V]GLOCALDEV+"="+format$("N7.5", [F:TCH]CHGRAT)-
[F:PIH]CUR |
A la saisie, ces textes sont visualisés par l’utilisation d’un clic droit avec l’option affichage des
messages
###############################
De même la description des tables est accessible par l’utilisation d’un clic droit avec l’option assistant
de formule.
Nota : Dans le cas où le texte du message contiendrait du texte issu de la table ATEXTE, le texte
envoyé est dans la langue de l’émetteur.
Dans le corps du message, on peut insérer des données issues de la table des lignes détails, si le
modèle de données ou l’objet gère des lignes détails. Pour définir l’emplacement dans le corps du
message où doivent être insérées les données extraites des lignes détails on utilise la codification
|LIG|. Dans ce cas, le champ suivant doit être renseigné.
Le champ Ligne permet lorsque l’événement est de type ligne d’insérer dans le corps du message
des informations issues des lignes détails. Ces informations sont exprimées sous la forme d’une
formule qui est évaluée lors du déclenchement de l’événement
Ligne :
format$("K:10X",[AES]ESP1)-format$(GFMDAT,[AES]ESPDAT)-[AES]ESPTIM
###############################
# |SIG/VAL/"Pour valider, cliquez sur :"|
# |SIG/REJ/"Pour refuser, cliquez sur :"|
###############################
Ces réponses seront transformées dans le message par un lien http vers le serveur WEB habilité à
gérer ces réponses.
###############################
# Pour valider, cliquez sur : http://action.jsp?C=0700000398-
OK&K=zt4ddjr5Ud&L=FRA&D=DIAMONDTESTV5
# Pour refuser, cliquez sur : http://action.jsp?C=0700000398-
KO&K=zt4ddjr5Ud&L=FRA&D=DIAMONDTESTV5
###############################
Le champ Envoi permet de préciser si l'envoi doit être fait localement par le poste client, depuis le
serveur de traitement, ou indifféremment depuis l'un ou l'autre. Dans le cas des événements liés à un
processus batch, c’est le serveur de traitement qui est à activer.
Le champ Icône de retour permet d’insérer sous la forme d’une pièce jointe, une icône permettant
d’accéder à Sage X3 sur la fiche à l’aide d’un double clic. Cette gestion d’un accès X3 via cette icône
est réservée au mode client Serveur.
Le champ Fonction de retour est à utiliser si le champ Icône de retour est actif et si le retour doit être
effectué sur une fonction différente de celle ayant déclenché l’événement.
En Workflow objet, dans le cas de la création ou de la modification d'une fiche, ceci permet, plutôt que
de se connecter sur la fiche par défaut, d'aller sur une fiche liée (la fiche de l'utilisateur ayant créé ou
modifié l'information qui a déclenché le Workflow, par exemple).
Dans le cas du Workflow Manuel, si l’icône de retour est actif, le code de la fonction de retour est
obligatoire.
Le champ Retour Menu permet de préciser si le retour de Workflow est limité à la fonction définie
(lorsqu'on la quitte, la fenêtre se ferme) ou si on revient au menu en sortant de la fonction appelée.
Le champ Clé de lien permet de définir la clef d’accès à la fiche qui sera visualisée via l’icône de
retour.
Le champ Message modifiable permet dans le cadre d’un Workflow interactif de rendre le message
généré modifiable par l’utilisateur ayant déclenché l’événement.
Le champ Accusé de lecture permet s’il est actif d’envoyer le message avec une demande d’accusé
de réception. Cette gestion d’un accusé de réception ne fonctionne que pour les messages envoyés
via le poste client (Interface MAPI).
Les notifications sont regroupées entre elles, si elles ont les caractéristiques suivantes en commun :
- l'émetteur
- le type de serveur
- le contexte de retour
- l'objet du message
- l'accusé de réception
- les destinataires
- le flag signataire
Il est nécessaire que le paramètre général TYPMES soit égal à Serveur pour que des pièces jointes
puissent être envoyées. Si ce n'est pas le cas, seule la première pièce jointe est envoyée (ceci est
signalé par un message d'avertissement lorsqu'on impose un envoi par Client).
Par ailleurs, les pièces jointes doivent être accessibles depuis le serveur d'application par un chemin
réseau si elles ne sont pas stockées dans la base X3.
Fichier Trace lié : Cette case ne peut être cochée que si l'événement déclenchant correspond à la fin
d'une tâche batch. Dans ce cas, si elle est cochée, le fichier trace associé à la tâche batch va être
joint au message envoyé.
Pièce à joindre : Ce champ permet d'associer une pièce jointe au message, en donnant un chemin
d'accès réseau sous la forme d'une expression calculée qui sera évaluée au moment du
déclenchement de l'événement.
Pièce jointe : Quand cette case est cochée, sur un Workflow de type objet, les pièces jointes à la
fiche peuvent être envoyées en pièces jointes du message. (Exemple pièce jointe de l’entête et du
pied des factures)
Tous types : Ce champ permet d'envoyer toutes les pièces jointes à la fiche.
Type pièce jointe : Ce champ permet de préciser le type des pièces jointes à sélectionner si le
champ précédent Tous type n’est pas actif.
Toutes catégories : Cette case n'est saisie que pour un Workflow de type objet pour lequel la case
Pièce jointe est cochée. Si cette case est cochée, toutes les catégories de pièces jointes à la fiche
déclenchant le Workflow sont envoyées comme des documents joints au message. Sinon, on doit
saisir la catégorie concernée.
Catégorie : Ce champ permet, lorsque des documents joints à une fiche doivent être envoyés en
pièce jointe au message, de filtrer ces documents en fonction de leur catégorie définie par le menu
local 96.
- Confidentiel
- Interne
- Externe 1
- Externe 2
On définit alors, sous la forme d'expressions évaluées, le message à faire apparaître dans le plan de
travail, et la date limite attendue de signature si une signature est attendue.
On trouve ensuite un tableau permettant de préciser les réponses que l'utilisateur pourra faire lors de
sa signature, avec la possibilité de mettre directement à jour un champ de la fiche courante lorsque le
Workflow est de type Objet.
Il est à noter que les éléments évalués dans le tableau des réponses le sont au moment de la
signature, alors que les éléments relatifs à la notification ou au message associé le sont au moment
du déclenchement du Workflow d'origine. Ceci signifie que le contexte n'est plus exactement le même.
Les réponses sont déclarées dans la table diverse 54. Elles doivent au minimum contenir celles
déclarées dans les balises SIG du message.
Signature Si cette case est cochée, le suivi donne lieu à un processus de signature : on retrouve
alors, dans le tableau situé en bas de l'écran, un certain nombre de choix de signature possibles.
Date limite Dès lors que la case Signature est cochée, il est possible de définir une expression de
type date définissant la date au-delà de laquelle on considère qu'il y a retard si la signature n'a pas été
faite.
La valeur du champ correspondant est stockée dans la table de suivi des évènements Workflow
AWRKHISSUI (Champ DATREL).
Ce champ peut être exploité dans le moniteur Workflow, pour définir un ordre de classement. Mais il
peut aussi être exploité pour une gestion de relance des événements en attente de signature, sachant
que le champ [AWS]NBREL permet de compter les relances éventuelles faites.
Ce tableau contient des expressions évaluées au moment du déclenchement d'un Workflow. Ces
variables sont stockées dans l'historique des Workflow (variables VALCTX1 à VALCTX15).
Elles sont utilisables dans le contexte de la signature (tableau de variables CTX(1) à CTX(15))
associé à l'événement originel, ou à un événement de Workflow consécutif à la signature.
L'intérêt de ces variables est qu'elles permettent de transmettre des informations qui ne sont pas
situées dans les tables à l'origine du contexte déclencheur, et donc qui ne sont pas transmises
automatiquement d'un événement à la signature ou à l'événement suivant.
En effet, les tables de l'objet ou celles de la règle d'affectation sont transmises automatiquement. Par
contre, ne sont pas transmises
- les variables globales comme GUSER, GFONCTION, GABREV, CLEOBJ, qui définissent
respectivement l'utilisateur courant, la fonction courante, le code de l'objet, et la clé
courante au moment du déclenchement d'un Workflow objet.
- les variables liées aux écrans.
- les variables issues des expressions telles que date$, time$... qui qualifient le contexte du
déclenchement.
C'est donc pour ces variables qu'il est intéressant de paramétrer un contexte pour les transmettre de
l’événement déclenchant à celui de la signature. Les variables transmissent via ce contexte sont
exploitables par le moniteur de Workflow.
Ce bloc permet de définir les réponses possibles, à choisir par le destinataire. On déclare une ligne
par réponse autorisée.
Le champ Réponse définit un choix possible pour le récepteur du message. Les choix autorisés sont
déclarés dans la table diverse numéro 54, qui définit des choix possibles à la signature.
Dans le plan de travail des signatures, un clic droit sur la ligne à signer permettra de proposer parmi la
liste des choix issus de cette liste, ceux pour lesquels la condition est vérifiée.
Le champ Opération est le code qualifiant la signature réalisée. Il correspond au code opération
utilisé dans un événement de type Signature consécutif à l'événement signé.
Il est à noter que plusieurs lignes peuvent porter le même code opération. Les valeurs autorisées sont
déclarées dans la table diverse numéro 55.
Ce code n'est pas stocké dans l'historique des Workflow à l'issue de la signature. C'est en effet la
valeur du champ Réponse, qui n'admet pas d'homonymes entre les différentes lignes, qui est stocké.
Motif : Permet de prévoir une saisie d’un motif lors de la signature de la règle.
Ce champ permet de préciser le numéro d’une table diverse où sont gérés les motifs des réponses.
La table historique AWRKHISSUI stocke le numéro de la table diverse, le code saisi, et son intitulé.
La zone Champ mis à jour définit le nom d'un champ qui sera mis à jour par le processus de
signature. Ce champ est issu d'une des tables du contexte déclencheur.
La valeur de ce champ après la mise à jour sera celle calculée à partir de l'expression définie dans le
champ Valeur, lors du processus de signature. Ainsi on peut, par exemple, mettre à jour un champ tel
que ENAFLG (indicateur Actif) de l'objet courant lors d'un processus de signature.
Le champ Valeur définit l’expression d'une valeur calculée au moment de la signature. La valeur
correspondant à la ligne de réponse choisie sera utilisée, en cas de signature :
- soit pour mettre à jour le champ défini dans la colonne précédente.
- soit lors du déclenchement d'éventuelles actions définies dans l'onglet Action. Dans ce cas,
on retrouve cette valeur dans la variable alphanumérique [L]RESULT.
Le champ Modifiable permet de modifier la valeur renvoyée par l’expression calculée définie dans le
champ valeur, si cet indicateur est actif. La valeur résultant de la saisie sera utilisée pour réaliser la
mise à jour s'il y en a une, et transmise à la variable [L]RESULT pour exploitation par une action
complémentaire.
Début Workflow : l'action est déclenchée en début de constitution du texte du message. Lorsque le
Workflow est de type ligne, elle n'est exécutée qu'une fois par en-tête, avant la constitution du texte
d'en-tête. Les variables retournées par l'action peuvent être utilisées dans le texte du mail, mais pas
pour définir les destinataires ou les conditions de l'envoi, qui sont déjà évalués à ce stade.
Fin Workflow : l'action est déclenchée après l'envoi du message. Lorsque le Workflow est de type
ligne, cette action n'est exécutée qu'une fois par groupe de lignes.
Avant Ligne : l'action est déclenchée avant la lecture de la première ligne, lorsqu'on a un Workflow de
type en-tête et lignes. Ceci permet par exemple d'initialiser des variables de cumul pour obtenir un
total des lignes, le cumul étant réalisé dans une action ligne.
Ligne : l'action est déclenchée juste avant la constitution de chaque ligne de message, dans le cas
d'un Workflow de type ligne. Les variables retournées par l'action peuvent donc être utilisées dans le
texte ligne.
Avant Groupe : l'action est déclenchée à la détection d’une rupture sur un groupe de lignes détails.
Signature : l'action est déclenchée après la saisie de la signature. La variable [L]RESULT issue de
cette saisie est donc connue, mais avant la mise à jour des tables. On peut modifier cette valeur
durant l'action. Dans le cas d'une signature, toutes les mises à jour sont réalisées dans une seule
transaction. Ainsi, si un rollback est réalisé dans une des actions déclenchées par l'événement, on
revient à la situation de départ pour toutes les mises à jour effectuées.
Dans le cas général, du point de vue transactionnel, il faut noter que l'action fait partie de la
transaction de Workflow du message, si un rollback est fait lors de la constitution du message, les
mises à jour faites dans l'action ne seront pas réalisées.
Dans le cas particulier du Workflow sur un objet, tout est fait dans une seule transaction. Autrement
dit, si la création ou la modification d'une fiche échoue, un Rollback est fait sur l'ensemble des mises à
jour déclenchées par les actions.
Il en est de même pour le suivi : la transaction qui suit la saisie du suivi inclut le déclenchement des
actions.
Pour résumer les actions appelées par les fonctions de Workflow ne doivent pas ouvrir de transaction.
Toutes les variables du contexte de Workflow peuvent être utilisées dans l’expression qui sera
évaluée.
AWRKUPDFLD Mise à jour de 1 à 4 champs dans l'enregistrement courant d'une table avec gestion
de transaction.
Cette action permet de mettre à jour les champs FLD1 à FLD4 de la table
d'abréviation ABREV avec les valeurs respectives VALEUR1 à VALEUR4.
Si une transaction est en cours, l'action fait partie de la transaction; sinon, une
transaction unitaire est réalisée pour l'opération.
La variable GOK globale est renseignée comme pour une transaction normale.
AWRKUPDOBJ Mise à jour de 1 à 4 champs dans l'enregistrement courant d'un objet avec gestion
d’un verrou objet.
Cette action permet de mettre à jour les champs FLD1 à FLD4 de la table liée à
l'objet OBJET avec les valeurs respectives VALEUR1 à VALEUR4 uniquement si
c'est objet n'est pas verrouillé sur la clé CLE.
La variable GOK est mise à 0 en cas d'erreur.
Ces actions sont de type Superviseur, c'est-à-dire qu'elles sont génériques et ne concernent pas un
module particulier. D'autres actions liées à des modules fonctionnels existent également.
Chaque liste de destinataires est déterminée par des critères dépendant du contexte. L'utilisateur
chargé de définir les circuits de signature pourra alors saisir les combinaisons de valeurs de critère et
leur affecter les destinataires correspondants.
Cette fonction de paramétrage permet de créer et de mettre à jour les règles d'affectation, en
définissant le nombre maximum de signataires que renvoient une règle, et les critères dont la
combinaison définit les signataires.
- Ceci permet leur exploitation dans la suite de la règle de Workflow. Il est intéressant de noter
que certains critères, dont la valeur est intéressante pour la suite du processus de
Workflow, peuvent ne pas déterminer de destinataire. Dans ce cas, on leur associera
l'opérateur Indifférent.
En fonction de la combinaison obtenue, le tableau [L]USER est transmis et peut être utilisé par la
règle de Workflow.
Le champ Société permet d'affecter une règle à une société particulière. Si ce code est non
renseigné, il est définit pour toutes les sociétés.
Le champ Code d’accès permet d'interdire l'accès à la fiche courante pour certains utilisateurs.
Le champ Modèle de données définit le modèle de données dont les tables sont accessibles lors de
l'évaluation de la règle d'affectation. Ce modèle est obligatoire. Le code de ce modèle doit être
identique à celui déclaré dans la règle de Workflow qui utilise la règle d'affectation.
Le champ Table ligne ne peut être saisi que si le modèle de données contient des tables de lignes
associées à un en-tête. Si on saisit alors une des tables lignes, c'est cette table qui sera parcourue
pour déterminer les destinataires du Workflow. Un Workflow utilisant la règle d'affectation
correspondante sera forcément de type Ligne.
Le champ Nb de signataires définit le nombre maximum d'utilisateurs que renvoie la règle dans le
tableau USER. L'écran généré par la validation de la règle contiendra, outre les colonnes de critères,
autant de colonnes Utilisateur que de valeurs renvoyées. Ce nombre peut être compris entre 1 et un
maximum défini par le code activité AWR.
Le champ Table à parcourir définit la table à utiliser pour l'évaluation du critère de la ligne. Si cette
table est liée avec un lien de type 1,n avec la table ligne de la règle (ou avec la table principale du
modèle en l'absence de table ligne), un opérateur de synthèse sera saisi pour définir comment les n
valeurs contenues dans les lignes seront agrégées.
Le champ Op. synthèse est saisi lorsque le champ utilisé comme critère se trouve dans une table liée
avec un lien 1,n à la table principale du modèle.
Dans ce cas, la valeur obtenue pour le critère correspond à l'agrégation d'un ensemble de lignes, et
l'opérateur saisi ici permet de préciser comment le calcul est effectué.
Les opérateurs d'agrégation Somme et Moyenne ne peuvent être utilisés que si le critère est
numérique. Les opérateurs Minimum et Maximum peuvent être utilisés dans tous les cas.
Le champ Critère contient une expression qui sera évaluée lors de l'exploitation des règles
d'affectation. La valeur résultante est comparée à la liste des valeurs saisies dans la règle afin de
déterminer quelle est l’utilisateur destinataire du message.
Le champ Opérateur sert à comparer la valeur du critère avec les champs saisis dans les valeurs de
règle. Outre les opérateurs d'égalité et d'inégalité classiques, on retrouve l'opérateur Comme, qui
permet de saisir des valeurs caractères avec des jokers, et l'opérateur Indifférent, qui signifie que la
valeur n'est pas utilisée comme critère d'affectation des utilisateurs, mais transmise à la règle de
Workflow appelante pour être utilisée par ailleurs.
Le champ Type de données définit le type de données associé à la saisie du critère. Lorsqu'un
champ extrait d'une des tables de la base est choisi comme critère, son type est proposé par défaut.
Le champ Longueur est à saisir si le type de données est une chaîne de caractères ou un nombre.
Le champ No menu local est à saisir si le type de données est un menu local.
Le champ Paramètre est à saisir si le champ associé au critère est contrôlé par une table ayant une
clé en plusieurs parties (par exemple, les tables diverses, les textes traduisibles), on saisit ici le
composant de clé complémentaire pour établir le lien avec la table.
Le champ Lien est utilisé si le champ associé aux critères est contrôlé par une autre table. On peut
alors choisir l’intitulé associé à valeur saisie. Les choix possibles sont :
- Non pas d'affichage
- Long affichage de l'intitulé long
- Court affichage de l'intitulé court.
Le champ Valeur par défaut permet de saisir une expression qui est évaluée lors de l’affectation des
utilisateurs pour permettre de donner une valeur par défaut. Les données constituantes des règles
d’affectation sont mémorisées dans la table AWRREG.
Note :
Le nombre de critères affiché dans le tableau est égal au nombre de lignes déclarées dans la règle
d’affectation et dont l’opérateur a une valeur autre que indifférent. Pour l’exemple ci dessus on a
déclaré au minimum P critères.
Le nombre d’utilisateurs par ligne est égal au nombre de signataires saisi dans la règle d’affectation.
Les données saisies dans cette transaction sont mémorisées dans la table AWRREGVAL. Pour un
couple Règle d’affectation / Code société, on peut saisir un maximum de 99 affectations.
Le champ Code utilisateur contient le code utilisateur X3 pour lequel des délégations sont
paramétrées.
Le champ Utilisateur délégué contient le code X3 des utilisateurs qui reçoivent une délégation.
Le champ Nature contient le code nature des Workflow pour lesquels une délégation est déclarée. Si
ce code est non renseigné, la délégation est effective pour tous les Workflow à destination de
l’utilisateur d’origine.
Les champs dates de début et fin de validité indiquent la période pour laquelle la règle de
délégation s’applique. S’ils sont non renseignés, la délégation est permanente.
Impact du champ Option délégué dans l’onglet Destinataires des règles de workflow
Pour chaque ligne de destinataire déclarée dans une règle de Workflow, l’attribut Option délégué
détermine le comportement du processus de Workflow pour définir les destinataires délégués.
Par exemple
Un message doit être envoyé à un utilisateur U001 dont les délégations sont les suivantes ;
Délégué de U001 U010 période 01/08/07 au 31/08/07
- Non, seul le destinataire d’origine recevra le message quelque soit les délégués affectés à ce
destinataire. Dans l’exemple ci-dessus, seul U001 reçoit le message.
- Tous, le destinataire et tous les utilisateurs définis comme délégués du destinataire recevront
le message. Dans l’exemple ci-dessus, U001 / U010 / U020 recevront le message.
- Cascade, le destinataire, ses délégués, les délégués de ses délégués, etc. recevront le
message. Dans l’exemple ci-dessus, U001 / U010 / U020 / U011 / U012 recevront le
message.
- Premier libre, le premier destinataire présent recevra le message. U001 et U010 recevront le
message.
La conception des plans de travail doit donc être analysée lors du paramétrage des règles de
Workflow. Dans l’exemple, il est nécessaire de prévoir la conservation dans les tables de suivi du
Workflow des données date de commande / code fournisseur et numéro de commande.
Les variables de contexte [L]CTX paramétrées dans la règle de Workflow sont prévues à cet effet.
Pour assurer la confidentialité, des codes d’accès peuvent être affectés à ces transactions.
Ces lignes peuvent être présentées dans un plan de travail paramétrable afin de :
- visualiser les informations qui ont été paramétrées pour apparaître dans le plan.
- réaliser un zoom vers un contexte d'origine, le cas échéant.
- viser des lignes qui ne demandent pas de processus de signature élaboré.
- signer (en exerçant un choix parmi un ensemble de réponses) lorsqu’un processus de
signature a été paramétré.
Le paramétrage d’un plan de travail génère des transactions de consultation et de mise à jour des
tables de suivi des évènements de Workflow. Ces transactions sont accessibles aux utilisateurs via
des fenêtres générées par la fonction de paramétrage et gérées par le moniteur de Workflow.
Le paramétrage consiste à définir le nombre d’onglets de chaque transaction et pour chaque onglet à
définir ses composants et ses caractéristiques.
Puis on décrit les conditions permettant de filtrer les lignes qui doivent apparaître sur l'onglet en cours
de paramétrage. Cela permet par exemple de répartir les lignes en fonction du sujet, de l'urgence, ou
de tout autre critère entre onglets. Puis les informations qui doivent être présentées, les champs
définissant l'ordre d'apparition, et des conditions de mise en relief de certaines lignes.
8.5.1.1. Entête
Le champ Code transaction identifie l'écran associé à la consultation ou à la saisie, c’est aussi ce
code qui est la clef de la transaction. A l'exécution des transactions et des consultations, la liste des
codes accessibles à l'utilisateur est présentée, si l'entrée dans une transaction par défaut n'est pas
forcée.
Le champ Intitulé est le libellé de la transaction, qui peut être décliné par langue, est affiché dans la
fenêtre de sélection de la transaction.
Le champ Code d'accès permet de définir des filtres pour limiter l’utilisation des transactions. Si ce
champ est renseigné, l'écran de consultation ou la transaction de saisie de mouvements sont
accessibles si l'utilisateur a les droits liés à ce code.
Par ailleurs, la modification (respectivement la visualisation) des caractéristiques de la transaction
n'est possible que si l'utilisateur courant a le droit de modification (respectivement de consultation) sur
le code.
Le champ Nb de lignes définit le nombre maximum de lignes affichées dans chaque onglet.
- Le champ Intitulé court définit l'intitulé de l'onglet tel qu'il apparaîtra sur le plan de travail.
- Le champ Titre est un libellé documentaire.
- Le champ Filtre contient une formule qui sera évaluée à l’exécution de la transaction ou de la
consultation pour filtrer les données présentées dans l’onglet. On peut ainsi ne présenter
qu'une partie des lignes à traiter en les répartissant sur chacun des onglets. Par exemple
o le premier onglet contient les éléments à signer [F:AWS]FLGSIG=3
o le second onglet contient ceux déjà signés [F:AWS]FLGSIG=5
Le champ Ordre contient le rang du champ qui sera affiché dans l’onglet généré. Si ce rang est nul,
le champ ne sera pas présent dans l’onglet généré. Ces champs sont présents en mémoire mais pas
affichés.
Le champ Intitulé est affiché à titre documentaire. Sa valeur par défaut est issue du dictionnaire des
données, mais il est possible, par un clic droit, de modifier cette valeur. Cette option permet de
personnaliser les entêtes des colonnes affichées dans l’onglet. Elle est intéressante pour définir les
variables génériques qui dépendent du contexte comme VALCTX1.
Le champ Style contient le code du style à utiliser. Ce sont les styles gérés par l’objet ASY qui sont
utilisés. Pour chaque onglet, le nombre maximum de styles est limité à 5.
Le champ Condition contient le critère permettant d’appliquer le style. Ces critères sont définis sous
forme d'expressions calculées, sont évalués pour chaque ligne du plan de travail. Si aucune condition
n'est vérifiée, la ligne reste dans la couleur par défaut.
La zone Champ contient le code du champ à utiliser pour le tri. Les lignes du plan de travail sont
présentés triées selon la valeur des donnés affichées dans ce champ. A égalité sur un champ, on trie
selon les valeurs du champ suivant.
Le champ Sens définit si le tri se fait en ordre croissant ou décroissant des valeurs.
Les attributs de tri définis dans ce bloc sont concaténés pour exprimer la valeur de l’instruction
ORDER BY exécutée lors de l’utilisation du plan de travail. La longueur totale de ces attributs ne doit
pas dépasser 100 caractères.
NUMGRP Ce numéro de chrono est attribué pour chaque ligne traitée. il y en a donc plusieurs
numéros lorsqu'on a des Workflow de type en-tête/ligne avec des regroupements.
CPY Lorsqu'un modèle de données est attaché à la règle, et que ce modèle définit une
société courante en fonction du contexte (directement ou par l'intermédiaire d'un
site), on stocke dans l'événement le code de la société correspondante.
Ce code société peut être utilisé pour définir dans la règle d'affectation les
destinataires de la notification.
trouvera une ligne avec la valeur Oui avec le même numéro de chrono.
La première signature sur l'une des lignes concernées met automatiquement à jour
l'ensemble des lignes portant le même numéro de chrono en les considérants
comme signées.
ENVOI Ce champ a comme valeur Oui si un message a été envoyé lors de l'exécution de
la règle.
MAIENV Lorsqu'une ligne du plan de travail a été signée par le déclenchement d'un lien http
depuis un message, ce champ stocke l'adresse de messagerie de l'utilisateur ayant
signé de cette manière.
NATURE Ce champ contient la valeur du code Nature défini sur l'événement déclencheur.
C’est un critère important pour trier et sélectionner les lignes.
TEXSUI Ce champ contient le texte évalué à partir de la rubrique Texte suivi définie dans
l'onglet Suivi de la règle; usuellement un commentaire est paramétré expliquant les
circonstances du déclenchement de Workflow.
CODEVT Ce champ contient le code événement à l'origine du Workflow, c'est à dire le code:
de l'objet dans le cas d'un Workflow objet.
de l'état dans le cas d'un Workflow de type impression.
du modèle dans le cas d'un import ou d'un export.
de la fonction dans le cas d'une entrée sur fonction.
de la règle de Workflow ayant déclenché la demande de signature dans le cas
d'une signature.
du code identifiant un Workflow de type divers.
pour la fin d'une tâche batch, il vaut "0" si la tâche s'est terminée sans erreur; sinon,
on y trouve le numéro de statut suivi du début du message d'erreur.
DATMAXSIG Ce champ contient la date à laquelle le Workflow devra avoir été signé. Il contient la
date de déclenchement du Workflow si aucun processus de signature n'a été mis
en œuvre, ou si aucune date limite n'a été définie.
En effet, lorsque l'événement de Workflow suppose une signature, on peut gérer
une date limite de signature et ensuite déclencher des relances basées sur cette
date limite.
Ces relances se font par des règles de Workflow batch nommées WRKREM1,
WRKREM2, et WRKREM2E.
Lorsqu'une relance de ce type est faite :
le champ Nombre de relances, est incrémenté ce qui permet de savoir combien de
fois la signature a été relancée.
le champ Dernière date de relance, est modifié ce qui permet de connaître la date à
laquelle la dernière signature a eu lieu.
Si ces règles batch ne sont pas utilisées, et si aucune autre règle n'a été définie
pour mouvementer ces champs, le nombre de relance reste égal à 0 et la date de
relance reste vide, car aucun traitement standard du Workflow ne modifie cette
valeur
ACTSIG Ce champ est vide tant que l'événement n'a pas été signé. Si est signé, le champ
contient le code de la réponse qui a été saisi, tel qu'il est défini dans la table diverse
numéro 54.
USRSIG Lorsque la notification a été signée, ce champ contient le code de l'utilisateur qui a
signé. Il ne s'agit pas forcément du destinataire d'origine, puisqu'un autre utilisateur
peut avoir le pouvoir pour signer.
MAISIG Lorsqu'un message incluant une demande de suivi par activation d'un lien http a été
envoyé, ce champ permet de connaître l'adresse de messagerie de l’utilisateur qui
a signé.
REASON Ce champ contient l'intitulé associé au code motif saisi à la signature de la règle,
lorsque cette saisie est possible au moment de la signature. Ceci suppose qu’une
liste de motifs possibles est définie par l'intermédiaire d'un numéro de table diverse
REACOD Ce champ contient le code motif saisi à la signature de la règle, lorsque cette saisie
est possible au moment de la signature. Ceci suppose que l'on définisse une liste
de motifs possibles par l'intermédiaire d'un numéro de table diverse sur la ligne de
signature correspondante.
REANUM Lorsqu'une saisie de code motif a été prévue à la signature de la règle, on trouve
dans ce champ le numéro de table diverse qui définit les motifs possibles sur la
ligne de signature correspondante.
CELOBJ Dans le cas d'un Workflow objet, on retrouve dans ce champ la clé de l'objet (c'est
le champ Clé déclenchante d'origine).
Dans le cas d'un Workflow de type signature, on retrouve dans ce champ le numéro
chrono à l'origine de la signature.
Dans tous les autres cas, cette zone n'est pas renseignée.
IDENTERT Lorsqu'une icône de retour est associée au Workflow, ce champ contient le code de
la fonction sur laquelle le retour se fait.
Si la fonction est de type objet, on retrouve ensuite, séparé par un "/"
Le code de la table,
La clé correspondante. Les composants de la clé, pour une clé en plusieurs parties,
sont séparés par le caractère "~".
Le séparateur entre table et clé est "/", le séparateur entre les segments de la clé
(lorsqu'elle est composée de plusieurs champs) est "~".
Le contenu est défini de la façon suivante :
dans le cas d'un événement de type Signature, le contenu de la notification d'origine
est repris.
dans le cas où l'événement est de type Objet, le code de la table principale de l'objet
est repris, si elle peut être déterminée dans les attributs de l’objet. La clé
correspond à la clé courante lors du déclenchement du Workflow.
dans tous les autres cas, la table est définie uniquement si un modèle de données
est attaché au Workflow. Dans ce cas, c'est la table principale qui est renvoyée. La
clé correspond à l'enregistrement courant lors du déclenchement.
NUMORG Ce numéro chrono est renseigné uniquement sur les notifications liées à un
événement de type Signature. Il permet de connaître le numéro chronologique de
l'événement d'origine, celui dont la signature a déclenché la ligne courante.
USRORG Ce champ n'est renseigné que sur les lignes associées à un événement de type
Signature. Il permet de connaître le destinataire du Workflow d'origine (celui qui a
effectivement reçu la notification après application éventuelle des règles de
délégation : ce n'est pas forcément celui qui a signé).
DATREL Ce champ contient la date à laquelle la dernière relance de signature a été faite sur
la notification.
Il n'est pas renseigné si aucun processus de signature n'a été mis en œuvre.
Lorsque l'événement de Workflow suppose une signature, on peut gérer une date
limite de signature et ensuite déclencher des relances basées sur cette date limite.
Ces relances se font par des règles de Workflow batch nommées WRKREM1,
WRKREM2, et WRKREM2E.
Lorsqu'une relance de ce type est faite :
le champ Nombre de relances, est incrémenté ce qui permet de savoir combien de
fois la signature a été relancée.
le champ Dernière date de relance, est modifié ce qui permet de connaître la date à
laquelle la dernière signature a eu lieu.
Si ces règles batch ne sont pas utilisées, et si aucune autre règle n'a été définie
pour mouvementer ces champs, le nombre de relance reste égal à 0 et la date de
relance reste vide, car aucun traitement standard du Workflow ne modifie cette
valeur.
CONTXT Lorsqu'un Workflow envoie un message avec une icône de retour, le contexte de
connexion (dossier, serveur, service, fonction...) est défini sous forme d'un champ
alphanumérique.
Ce champ technique contient la valeur de ce contexte.
Les différents segments de ce champ sont séparés par le caractère "/".
d’origine.
ABROBJ Lorsque le premier événement à l'origine d'un circuit de signature est un objet, ce
champ identifie le code de l'objet. Dans les autres cas, il est vide.
Il est ensuite transmis aux différents événements de signature qui pourraient
s'enchaîner au premier.
NBRUSR Ce champ définit le nombre d'utilisateurs destinataires renvoyés par la règle
d'affectation, lorsqu'il y en a une.
S'il n'y en a pas, mais que la règle est de type Signature, le nombre de signataires
défini par la règle d'origine est repris.
Si aucune règle d'affectation n'existe, la valeur retournée est 0.
USRTOP Ce champ définit le premier destinataire de l'événement de Workflow. Un
événement peut envoyer une notification à plusieurs séries de destinataires,
chacun d'entre eux étant défini par une ligne dans le tableau des destinataires.
Ce champ contient le code du destinataire évalué par la première ligne Si l'option
de délégation est Non, Tous, ou Cascade.
Si l'option est Le premier libre, et si l'utilisateur n'est effectivement pas présent, et a
donné délégation, le champ l'utilisateur délégué est renseigné.
VALCTX1 Ces quinze champs contiennent les valeurs contextuelles évaluées au moment du
à déclenchement du Workflow à partir des formules saisies dans le tableau nommé
VALCTX15 Contexte de l'onglet Suivi du Workflow.
Les valeurs stockées dans ce tableau peuvent être utilisées :
pour transmettre à un événement de type Signature des informations utiles au
traitement de la suite du processus
pour faire apparaître des informations utiles dans les plans de travail exploités par
le moniteur de Workflow. Dans ce cas, en paramétrage de la transaction, on définir
un libellé particulier plus parlant.
Quelque soit le format de l’information d’origine, les valeurs mémorisées dans ce
tableau sont de type alphanumérique.
USRSIG1 Ce tableau de valeur contient les codes des signataires successifs, lorsqu'une règle
à d'affectation de destinataires renvoie plusieurs signataires pour la règle de
USRSIG9 Workflow.
Cette information est utilisée pour permettre de gérer correctement les annulations
de signature
Sur les événements de type Signature pour lesquels aucune règle d'affectation
n'est définie, les signataires associés à la règle déclenchante sont présents.
Ainsi, lorsque plusieurs signataires en cascade ont été définis dans la règle
d'origine, et que toutes les règles de signature qui suivent n'ont pas de règle
d'affectation, le circuit complet de signature à chaque niveau est défini dans ce
tableau.
C’est la liste des utilisateurs définis par la règle avant l'application éventuelle de
règles de délégation.
Par exemple, si le premier destinataire de la règle de signature est absent, et qu'il
est remplacé :
le champ Signataire 1 contiendra le signataire d'origine
le champ Premier destinataire contient le code du remplaçant à qui la demande de
signature a effectivement été envoyée.
Les champs affichés dans les onglets sont dépendants de ces paramétrages. Les plans de travail
doivent donc être définis en fonction des natures et des données nécessaires aux opérations qui
seront gérées à partir du moniteur de Workflow par les utilisateurs.
8.6.1. Entête
Le champ délégué exceptionnel : cette case à cocher est saisissable s’il existe des évènements
mémorisés dans la table de suivi qui sont affectés à l’utilisateur X3 connecté avec un statut de
délégation exceptionnelle.
Dans ce cas seulement, si l’utilisateur active ce flag, les évènements affichés dans les onglets seront
ceux pour lesquelles la délégation est exceptionnelle.
Les champs date début et date fin définissent la fourchette de dates de sélection des évènements. Si
ces dates sont renseignées, seules les données dont la date de dernière modification ou la date de
création est dans la fourchette saisie.
Par défaut, la valeur de la date de début proposée est la date du jour, diminuée d'un nombre de jours
égal à la valeur du paramètre superviseur WRKDAY. Celle de la date de fin est la date du jour.
Les éléments affichés dans les tableaux des onglets de la transaction dépendent du paramétrage des
plans de travail. En fonction des droits de l’utilisateur connecté et du statut des évènements les
actions ligne peuvent être utilisées pour :
8.6.2. Consultation
Cette action permet de revenir en zoom sur la fonction et le contexte à l'origine de l’événement de
Workflow. Dans le cas d'un Workflow sur objet, cette fonction affiche la fiche correspondante de
l’objet.
Cette fonction est accessible lorsque l'événement à l'origine de l’événement est de type Signature.
Dans ce cas, l’action permet de remonter à l'événement d'origine (si besoin de façon récursive) pour
retrouver la fonction et la fiche qui ont déclenché le début du processus.
8.6.3. Signature
Cette opération est différente d'une opération de rejet de la demande ou de refus, qui sera traitée de
façon tout à fait classique par paramétrage standard.
Evènement précédent
Evènement suivant
Ce bouton permet d'ouvrir un écran de saisie d'un critère de sélection des lignes sous la forme d'une
expression logique. Ce critère sera pris en compte à l’aide du bouton Rechercher
En en-tête de critères de filtrage globaux sur les événements à traiter sont saisissables, sachant que
des filtres plus fins peuvent exister sur chaque onglet de la fonction
Cette fonction permet de lancer un Workflow manuel, c'est-à-dire de parcourir la structure de données
définie par le modèle associé à l'événement de Workflow et de déclencher les actions
correspondantes : exécution d'actions, envois de notifications via la messagerie ou par un plan de
travail.
Cette fonction peut être lancée en batch. La tâche standard SAIWRKMAN est prévue à cet effet.
Le champ Filtre qui permet de saisir un filtre sous la forme d'une expression logique évaluée pour
chaque ligne parcourue lors de l'exécution du modèle de données. Si cette expression est fausse, la
règle n'est pas déclenchée pour la ligne en question. Ceci permet par exemple de borner l'exécution.
Si ce champ est non renseigné, aucun critère de filtrage n'est appliqué.
Le champ Simulation permet lorsque cette case est cochée, d ‘obtenir une trace détaillée décrivant
les éléments sélectionnés l'opération n'est pas réellement exécutée, mais simplement simulée. Une
trace détaillée qui décrit ce qui aurait été fait si l'opération n'avait pas été exécutée dans ce mode est
produite.
Dès que des notions de suivi, de plan de travail fonctionnel, sont exprimées il faut utiliser les règles de
Workflow.
Cet inventaire permet de définir la liste des variables de contexte à paramétrer dans les règles de
Workflow. Ce paramétrage doit être effectué avant la mise en service d’un Workflow. Les évènements
pré existants dans la table de suivi, à une évolution des variables de contexte ne pouvant pas être
modifiés par l’évolution de paramétrage.
En standard, il est possible de gérer 15 données de contexte et chaque donnée étant limitée à 250
octets.
La gestion des contextes est réservée aux règles de Workflow.
Utilisation du mode test, cette option n’est disponible qu’avec le paramétrage des règles de Workflow.
Il faut mettre le flag mise au point de l’onglet général à oui.
A l’exécution du Workflow une trace est affichée permettant de vérifier que les conditions de
déclenchement du Workflow sont remplies.
Puis de contrôler si les conditions de déclenchement sont valides le message produit et les
paramètres utilisés pour communiquer avec l’interface de messagerie.
Table de référence
Compteur groupe 0700000322
No chrono 0700000377
Envoi du message
- Ordre système : meladx -v -s smtpasn -r Raymond.le-6:6+A1+B:B+A:A
</devx3/DIAMOND/dossiers/TESTHTLV5/tmp/M0700000377.txt"
#NOM?
From: R.xxxx@sage.com
To: R.yyyy@sage.com
Subject: Edition liste des patch
Si le message Message accepted for delivery est présent dans la trace et que celui-ci ne parvient pas
à son destinataire, il faut effectuer une analyse au niveau du serveur de messagerie.
Note sur les pièces jointes : Le paramétrage effectué au niveau d’un serveur de messagerie peut
transformer et supprimer un message avec des pièces jointes en fonction du niveau de sécurité
implémenté sur ce serveur.
Pour que cette règle de Workflow soit opérationnelle, on doit rendre obligatoire la saisie d’un mot de
passe à la connexion à l’aide du paramètre superviseur PASSWD géré dans le groupe sécurité
(SEC). C’est un paramètre géré au niveau dossier valable pour tous les utilisateurs.
Cette règle est utilisée lors de la création d’un nouvel utilisateur, ou en cas de modification de son mot
de passe par une personne autorisée (via Fonctions/Mot de passe), si un mot de passe est obligatoire
pour le dossier. Le paramètre PASSWD du chapitre superviseur (SUP) contenu dans le groupe
sécurité (SEC) doit être égal à Oui.
Si un tel événement n’existe pas, le mot de passe provisoire est affiché à l’écran, afin que la personne
puisse le noter et le transmettre à l’utilisateur concerné. Mais si un tel événement existe, rien n’est
affiché à l’écran, et c’est l’événement en question qui est chargé de transmettre le mot de passe en
question. Il va alors envoyer le mot de passe (qui est stocké temporairement dans la variable
GMESSAGE) à l’utilisateur en question (sous réserve que son adresse de messagerie soit
renseignée).
La seule condition au déclenchement est que le champ ADDEML soit non vide dans l’écran de saisie
des utilisateurs. C’est à cette adresse qu’est envoyé le message de confirmation, qui contient :
Cette règle permet de verrouiller les utilisateurs dont le mot de passe a été attribué de façon aléatoire
par le système sans avoir été modifié ensuite dans un délai donné.
Cette règle de Workflow, qui parcourt la table des utilisateurs en vérifiant leurs caractéristiques, a
vocation à être lancée en batch avec une périodicité en rapport avec le délai de grâce (tous les jours
si le délai est exprimé en jours).
Si toutes ces conditions sont vérifiées, alors le mot de passe n’a pas été modifié depuis son
attribution. La règle déclenche l’envoi d’un message et d’une action.
C'est l'administrateur général qui reçoit un message lorsque les conditions de verrouillage du compte
sont réalisées.
L'événement de Workflow déclenche l'action AWRKUPDFLD de mise à jour d’un champ dans une
table. Cette action modifie le champ USRCONNECT (autorisation de connexion), qui est forcé à la
valeur 1 (Non).
Cette règle de Workflow est de type manuel (le Workflow est lancé soit en direct, soit en batch).
Si ces conditions sont vérifiées, un message est envoyé à l’administrateur général pour le prévenir et
l’action AWRKUPDFLD est déclenchée.
Cette action met le champ USRCONNECT à 1, ce qui interdit toute connexion à l'utilisateur en
question.
Seule la table AUTILIS est utilisée
Attention, cet événement ne peut fonctionner que si la trace des utilisateurs est activée. C'est le
paramètre superviseur TABTRA du groupe sécurité qui doit être égal à Oui pour les utilisateurs
concernés.
Il se base sur le parcours de la table AESPION par l'intermédiaire du modèle de données CONHIST,
qui lit en même temps la table des utilisateurs.
L'objet du message donne le code utilisateur concerné, et le corps est composé d'un en-tête et d'une
ligne par connexion ou déconnexion.
On envoie un message à l’administrateur général, identifié par son code défini par le paramètre
ADMUSR, qui est accessible par la fonction func AFNC.PARAM("ADMUSR","")
Le message contient le code utilisateur concerné, le numéro d’erreur et le message en clair envoyé à
l’utilisateur, ainsi que la date et l’heure à laquelle la connexion ou la tentative de connexion a été faite.
On utilise pour ce faire la variable GMESSAGE, qui donne un message clair expliquant les raisons du
refus de la connexion. Différentes erreurs existent, elles sont précisées dans le tableau ci-dessous.
Dans la règle fournie en standard, on propose de ne tracer que les connexions échouant pour cause
de mot de passe incorrect.
Il peut être intéressant d'activer temporairement cet événement lors de la mise en place de
déconnexions automatiques, afin de régler au mieux ce temps de déconnexion pour éviter les
déconnexions trop fréquentes.
Cette règle de Workflow se déclenche sur l'événement divers "Time-out" et gère un suivi.
Cet événement se déclenche sur le code événement TIM qui trace précisément ce type de
déconnexion.
Le super-utilisateur qui est défini par le paramètre superviseur ADMUSR, mais également par la
variable globale GSUPER.
Par défaut, on a défini à la fois un message et un intitulé pour le suivi, mais seule la case à cocher
Suivi a été activée. Si on veut envoyer le message qui est déjà prédéfini, il suffit de cocher à nouveau
la case correspondante.
Le message, s'il est envoyé, donne le code de l'utilisateur, la date et l'heure de déconnexion, la
fonction en cours (variable GFONCTION, qui est vide si l'utilisateur se trouvait au niveau du menu),
ainsi que la valeur du paramètre de time-out.
8.9.2. Tracabilité
Cette règle de Workflow est de type manuel, le Workflow est lancé soit en direct, soit en batch. Elle
produit un message.
La règle d'affectation UPDFLD (maj. champs dans la base) est utilisée par cette règle de Workflow.
L'exécution de cette règle provoque alors le parcours de la table des lignes d’audit, pour retrouver les
champs sensibles modifiés. Son déclenchement se faisant à la demande, il est conseillé de le lancer
en batch avec une périodicité à définir.
La règle d’affectation est prévue pour associer à chaque table auditée, un utilisateur invariant. Des
règles plus sophistiquées peuvent être mises en œuvre. Le modèle de données utilise la table
AUDITL qui est liée à la table AUDITH par le champ SEQ (numéro de séquence unique).
La règle parcourt et regroupe les lignes sur les champs de la table ([AUD]TBL) et champ ([AUL]COL),
pour afficher dans un seul message pour toutes les modifications d'un même champ d’une table.
Le message est composé d’un en-tête et d’une ligne itérative. La formule |LIB| présente dans le corps
du texte utilise la formule déclarée dans le champ Ligne.
Func
AFNC.F3C("20X",[F:AUD]ID1+string$([F:AUD]ID2<>"",";"+[F:AUD]ID2),[F:AUL]OVAL,[F:AUL]NVAL)
+" "+func AFNC.FDH([F:AUD]DAT,[F:AUD]HOU) +" "+format$("K:10X",[F:AUD]ADOUSR)
La formule de la ligne fait appel à des fonctions dédiées définies dans le traitement AFNC,
qui sont:
La fonction F3C formate trois champs avec le format donné en tête. Elle permet ici de formater sur 20
caractères, avec le format "20X", les champs ID1 et ID2 concaténés identifiant la clé de la ligne
modifiée, et les valeurs avant et après (champs OVAL et NVAL).
La fonction FDH formate une date et une heure. Les paramètres étant les champs présents dans la
table d’audit.
Enfin, l’onglet action permet la mise à jour de l’indicateur STA dans la table d’audit AWRKHISSUI,
d’abréviation AUD avec la valeur "3". Cette valeur correspond au statut Traité et évitera de traiter à
nouveau cette modification.
On utilise pour ce faire l’action standard AWRKUPDFLG, dont les arguments sont :
ABREV = « AUD » -> abréviation de la table à mettre à jour
FLD = « STA » -> code du champ à modifier
VALEUR= 3 -> valeur du champ après modification
Cette action est prévue pour permettre la modification de 4 champs d’une même table.
Les lignes notifiées ne le sont qu’une fois (le flag est modifié)
Les modifications de paramètres au niveau utilisateur (table ADOVALAUS) ne sont pas tracées. Les
modifications sont tracées uniquement pour les modifications de paramètre à un niveau global
(dossier, société, législation ou site).
Pré-requis
Un audit doit être paramétré sur la table ADOVAL, dans l’onglet Audit du dictionnaire des tables. Le
paramétrage indique les conditions de trace des modifications. Les opérations suivantes sont tracées,
la modification, la création et la suppression.
La clé de suivi est la clé ADW1 (dont le premier segment contient le code du paramètre). Ce code est
présent dans le champ ID1 de la table de suivi AUDITH.
Le champ à tracer est le champ VALEUR. C’est lui qui stocke la valeur du paramètre.
Fonctionnement
Cette règle parcourt la table d’audit et renvoie un message à un utilisateur défini par défaut par
chapitre de paramètres (table diverse 911). Les modifications de paramètre sont regroupées par
chapitre.
A partir des données de la table AUDITL, les opérations suivantes sont réalisées :
Une jointure de type (1,1) vers la table d’en-tête AUDITH, avec le champ [F:AUL]SEQ qui contient la
clef primaire de la table AUDITH (numéro de chrono)
Une jointure de type (1,1) vers la table des paramètres ADOVAL. Le code du paramètre modifié étant
contenu dans le champ ID1 de la table AUDTIH. Le champ ID2 de cette dernière table permet
d’identifier le niveau du paramètre modifié, est l’une des trois formes :
" ~SITE"
"SOCIETE~ "
"*~LEGISLATION"
La règle d’affectation UPDPAR, basée sur le champ chapitre permet de définir, par chapitre un
destinataire de message.
Un Workflow Manuel est toujours considéré comme un Workflow Ligne, même s’il n’y a pas plusieurs
niveaux de table dans le modèle de données. On définit dans le champ Regroupement le ou les
champs sur lesquels doivent se faire la rupture (champs séparés par un point-virgule). Ici, on regroupe
par le champ [ADP]CHAPITRE, ce qui correspond exactement au champ sur lequel on définit le
routage à l’utilisateur.
Le champ STA de la table AUDITH vaut 2, traitement de Workflow à effectuer sur l’enregistrement.
La table concernée par l’audit est dans le champ TBL de la table AUDITH. La valeur de ce champ doit
être égale à ADOVAL.
La variable MODIF de la table ADOPAR doit être égale à 2. Ce test permet de ne pas voir apparaître
les changements de valeur d’un paramètre nommé MONO, qui est modifié pour des raisons
techniques de façon transparente pendant la transaction de modification de paramètres.
Le champ [L]USER, qui correspond au code utilisateur renvoyé par la règle d’affectation, est non vide.
Ainsi, pour ne pas tracer les modifications de paramètres d’un chapitre, il suffit de ne pas le déclarer
dans la table d’affectation.
Il est à noter que cette dernière condition est de type En-tête, et pas de type Ligne. Ici les conditions
de ligne sont utilisées pour filtrer les lignes directement dans la base. Ces conditions ne peuvent donc
pas utiliser un champ qui est n’est évalué que lorsqu’un premier regroupement de lignes est détecté.
C’est le regroupement qui détermine les attributs de l’ en-tête.
La ligne de détail (insérée dans le texte par le biais de la formule |LIG|) formate dans l’ordre
le code utilisateur
l’opération,
la date et l’heure,
les valeurs avant et après du paramètre.
L'événement de Workflow déclenche l'action AWRKUPDFLD qui met à jour l’indicateur STA dans la
table d’audit AUDITH, avec la valeur "3" pour indiquer que l’événement est Traité.
La règle d'affectation OBJCRE (Création objet générique) est utilisée, pour affecter un destinataire par
code objet. Le caractère générique de cette règle peut devenir complexe, si le nombre d’objet est
important.
Le code modèle associé n’utilise pas la table principale de l’objet ! Ce ne serait pas le cas pour une
règle de signature «simple» liée à un objet bien déterminé.
Comme on a besoin de tester des informations issues de la structure de l’objet et de la table, le code
modèle associé à la règle d’affectation a pour table principale la table ATEXTE.
A cette table est liée, par un lien artificiel, la table des objets (lien 1,1). La clé de lien est ""+GABREV.
La variable [V]GABREV est une variable globale qui permet, dans un contexte objet, de connaître le
code de l’objet courant. Le contrôle d’existence dans la table d’origine est inhibé en mettant une
expression résultant de la concaténation d’un champ vide et de la variable GABREV.
Ainsi, dans l’événement OBJCRE, on dispose en ligne de la table AOBJET (structure de l’objet), et de
la table ATABLE (table principale de l’objet). Ceci permet ensuite de tester l’existence du champ
ENAFLG dans le dictionnaire de la table principale.
Le destinataire du message et du suivi est l’utilisateur contenu dans la variable [L]USER, alimentée
par la règle d’affectation.
L'exemple de message donné ci-dessous s'appuie sur la création d'une fiche tiers. Dans ce cas,
l’objet du message envoyé suivrait le modèle suivant :
Fiche Tiers MARTIN créée
L’intitulé de l’objet en partant du champ LIBEL de la table objet. Ce champ est de type « texte
dictionnaire », il faut donc utiliser la fonction AFNC.TEXTE pour avoir le texte dans la langue courante
de l’utilisateur envoyant le mail.
La clé courante de l’objet est donnée par la variable CLEOBJ, qui est toujours renseignée dans un
contexte objet.
Cet exemple concatène le nom de l’objet, la clé créée, et l’intitulé entre parenthèses.
La case Suivi étant cochée, l’utilisateur pourra simplement mettre un visa sans signature pour
indiquer qu’il a lu la ligne en question.
Cet événement est générique, et est relativement similaire à l’événement OBJCRE, mais il diffère,
dans ces cas d’utilisation, par les points suivants :
Les conditions de déclenchement (création d’objet, nécessité d’avoir défini un destinataire pour l’objet
dans la règle d’affectation OBJCRE) sont identiques.
Le champ ENAFLG existe dans la table, et que la fiche a été créée avec le statut « Non actif »
(ENAFLG=1). Ceci va permettre de compléter le circuit par une signature dont l’objet va être :
soit de valider la fiche en positionnant ENAFLG à 2,
soit de refuser et donc de positionner ENAFLG à 1.
Cette règle de Workflow se déclenche en gestion d'objet, uniquement sur les opérations de création.
Elle utilise la règle d'affectation OBJCRE (Création objet générique)
Les critères de déclenchement sont analogues à ceux de la règle OBJCRE (à ceci près que cette fois
on teste l'existence et non l'inexistence du champ ENAFLG). La valeur de la variable ENAFLG, dans
la table dont l'abréviation est donnée par le dictionnaire, doit être égale à 1.
Cette action est déclenchée au traitement de la réponse que si celle-ci à pour valeur :
VAL --> RESULT=1
REJ --> RESULT+2
L’action met à jour l'indicateur ENAFLG avec la valeur correspondante grâce aux variables de
contexte
OBJET : code de l’objet --> CTX(3)
CLE1 : Clef courante de l’objet --> CTX(4)
FLD : Champ à mettre à jour --> ENAFLG
VALEUR : Valeur après mise à jour --> RESULT
Les événements OBJREJ et OBJVAL vont permettre de signifier un retour au créateur de la fiche.
Cette règle parcourt l'historique des notifications AWRKHISSUI envoyées pour traiter celles qui sont
en retard.
Le texte géré dans l'onglet Suivi est rempli par défaut avec les données suivantes :
Le numéro de chrono de la notification d'origine
Le nombre de jours de retard.
Il faut que la case à cocher correspondante soit activée dans l’onglet Général de la règle de Workflow
pour que le suivi soit actif.
Les critères complémentaires de déclenchement sont les suivants :
L'indicateur FLGSIG, qui définit l'état de la demande, doit être égal soit à 2 (A viser), soit à 3 (A
signer). ->
find([F:AWS]FLGSIG,2,3)<>0
La notification ne doit jamais avoir été relancée si elle doit être visée.
[F:AWS]NBRREL=0 or [F:AWS]FLGSIG=3
La date limite de signature demandée doit être dépassée de 1 jours et si la relance concerne une
notification A signer, celle-ci sera relancée tous les 3 jours.
date$-[F:AWS]DATMAXSIG>1+3*[F:AWS]NBRREL
Le destinataire est celui à qui la notification originelle a été envoyée. Il est identifié par le code
utilisateur défini dans la ligne d'historique [F:AWS]DEST. Si ce code est non renseigné, l'adresse
email qui est renseignée [F:AWS]EMAIL dans la ligne d'historique est utilisée. Ceci peut notamment
être le cas si la notification a été envoyée à un destinataire non utilisateur X3.
L’événement de Workflow déclenche l'action AWRKUPDFLD qui permet la mise à jour des champs
suivants de la table AWRKHISSUI :
Cette règle permet de répondre en remplacement du destinataire et en gardant une trace (Réponse
ESC) de l’automatisme. Elle permet d’exécuter les actions prévues dans le processus de signature de
l’événement d’origine.
Cette règle de Workflow est de type manuel, elle est lancée soit en direct, soit en batch. Elle utilise le
modèle de données WRKREM.
Cette règle parcourt l'historique des suivis WRKHISSUI et utilise la table des règles de Workflow pour
vérifier la présence de la réponse ESC.
func AFNC.CHEF([AWS]DEST,1)
Si la demande de signature n'est pas adressée à un utilisateur, mais directement à une adresse de
messagerie, le champ n'est pas renseigné, donc aucune escalade ne sera envoyée.
L'événement de Workflow déclenche l'action SIGWRK de signature d’un Workflow en lui transmettant
les paramètres suivants
[F:AWS]CHRONO : Numéro de chrono de l’évènement à signer
[F:AWS]DEST : Code destinataire de l’évènement
"ESC" : Code de la réponse liée à la signature.
Cette règle de Workflow est de type manuel, elle est basée sur la liste des notifications. Elle utilise le
modèle WRKREM qui permet d'avoir en ligne les suivis de Workflow et le paramétrage associé.
L'événement de Workflow déclenche l'action AWRLUPDFLD pour signer l’événement d’origine avec
les paramètres suivants:
FLGSIG : Etat de l’événement : 5= signé
ACTSIG : Code à l'origine de la signature : ESC=Escalade
USRSIG : Utilisateur ayant signé : GSUPER=le super-utilisateur du dossier
DATSIG : Date de signature : date$=la date du jour
MESSAGE : Ce point d’entrée permet de prendre la main à chaque envoi automatique de message
par la fonction de Workflow. Il est ainsi possible de supprimer l’envoi du message et/ou d’exécuter un
autre traitement à la place.
L’appel du point d’entrée MESSAGE est fait juste avant l’envoi effectif du message.
La variable GPE est testée au retour du point d’entrée. Si sa valeur est différente de 0, le message
n’est pas envoyé.
Les tables AWRK* sont ouvertes mais seules les classes des tables concernant les règles de
Workflow sont renseignées.
EMAIL : Ce point d’entrée permet de modifier l’expéditeur d’un message envoyé par le serveur de
message, Interface SMTP POP3.
Il n’est pas possible de modifier l’expéditeur d’un message envoyé par un poste client X3. En effet,
c’est l’instruction Send qui est utilisée dans ce contexte.
L’appel du point d’entrée EMAIL est utilisé juste après l’ouverture du fichier texte de commande qui
sert d’interface avec la fonction meladx. Ce fichier de commande est encore vide.
Deux règles d’épuration des tables liées aux processus de Workflow sont livrées en standard. Ces
règles seront à adapter en fonction du contexte.
La formule ASUIVI permet de purger la table AWRKHISSUI qui contient le suivi des évènements de
Workflow.
Il faut modifier la formule d’épuration pour ne pas purger les évènements non signés ou non lu
[F:AUS]FLGSIG =>4
Nota : Avec le paramétrage livré en standard, les évènements à signer sont purgés.
Pour les audits, la formule d’épuration à utiliser est AUDIT, pour les audits liés à un processus de
Workflow modifier la formule d’épuration pour que les éléments à épurer vérifient la règle « Audit traité
par le Workflow » [F :AUD]STA>2
Un message Sage X3 est constitué d’un entête suivi par une ligne vide et d’un corps de message.
L'entête est constitué par une suite de lignes du type : nom_du_champ : champ
Tout autre nom de champ est accepté sans interprétation, un nom de champ ne devant pas contenir
les caractères : ()<>@,;:"\/.?= et bien sur chr$(32).
Le corps du message est constitué de lignes de texte libre limité au jeu de caractères ascii 7bits, ainsi
que de lignes de directives commençant par le caractère #. Si une ligne de texte doit commencer par
le caractère #, il faut doubler ce premier caractère #.
Une directive se traduit dans le message envoyé par un fichier joint. Il y a 2 types de directives : si la
directive commence par <, le contenu du fichier sera pris dans le texte qui suit la directive, sinon la
directive se terminera par le nom du fichier à joindre.
La directive doit préciser le type et le sous-type (au sens mime des termes) du contenu du fichier, soit
:
image/gif ou image/jpeg, ...
audio/... (basic,...)
video/... (mpeg,...)
text/... (plain,...)
application/... (PostScript,octet-stream,...)
Test envoi x3
Le programme 'meladx' sera exécuté en mode trace et affichera les différentes étapes du processus
d’envoi du mail. Si le résultat est égal à : « connect : Erreur No 25 » cela veut dire que le port 25 n'est
pas ouvert. (Ou que le paramètre « nom_serveur_messagerie » n'est pas valide)
* Le chemin + nom de fichier mail correspond au nom du fichier généré par le Workflow Adonix. Son
nom est égal à Mxxx.txt, où xxx est un numéro d'ordre. Le fichier se trouve en standard dans le
répertoire /tmp du dossier.
Attention pour que le mécanisme de Workflow fonctionne avec le protocole SMPTP, le port 25 doit
être ouvert sur le serveur de messagerie.
Mode normal
Call WORKFLOW(TYPEVT,CODEVT,OPERAT,CLEOBJ) From AWRK
Avec
TYPEVT Integer Code de l’évènement de Workflow, valeur présente dans le menu
local 988. Correspond au champ type d’événement de l’onglet
général dans la définition des règles de Workflow.
CODEVT Char Code de l’événement. La valeur de ce champ est dépendante du
type d’événement. Cette valeur répond aux mêmes règles que
celles appliquées au champ code événement dans la définition
d’une règle de Workflow.
OPERA Char Code de l’opération. La valeur de ce code répond aux mêmes
règles que celles appliquées au champ Opérations dans la
définition d’une règle de Workflow.
CLEOBJ Char Clef de l’objet si le type d’événement est égal à Objet
8.12.1. Fonctionnement
L’action de signature peut être déclenchée par l’activation d’une URL présente dans le corps du
message qui est émis par le moteur de WorkFlow. Cela permet donc de signer un évènement de
Worlfow hors du contexte Sage X3. Ce Paragraphe présente les composants mis en œuvre, pour que
ce mécanisme fonctionne, ainsi que les prés requis de paramétrage.
Action de
l’utilisateur dans
sa Serveur WEB
Messagerie Sage X3
Serveur Batch
Sage X3
Tâche
Table de suivi AWRKSIG
des Workflow
L’URL présente dans le message reçu par l’utilisateur, pointe sur un serveur WEB Sage X3. Celui-ci
dépose dans un répertoire un fichier séquentiel contenant le N° de processus de Workflow à signer et
la réponse de l’utilisateur.
Ce fichier sera pris en compte par la tâche batch AWRKSIG qui effectue la mise à jour de
l’enregistrement de suivi du Workflow avec la réponse choisie par l’utilisateur.
Pré-requis
Pour utiliser les liens Workflow, un serveur X3 Web doit être mis en place et la solution utilisée doit
être publiée sur ce serveur. En effet le serveur de liens Workflow est un composant du serveur web
X3.
WRKRMTDIR Répertoire Liens Workflow. Ce répertoire doit être accessible en écriture, par le
serveur WEB et par le serveur batch.
C:\Sagex3\WEBV5\WebData\WORKFLOW\
Ce paramètre définit le serveur http utilisé pour recevoir des événements liés à
un clic sur un lien inclus dans un message envoyé par le Workflow.
Exemple : sagex3v5:18880/AdxWfC
Le premier attribut de cette URL étant le nom du serveur sur lequel la solution
X3 est publiée. Dans notre exemple c’est sagex3v5
Exemple : http://sagex3v5:18880
Le premier attribut de cette URL étant le nom du serveur sur lequel la solution
X3 est publiée. Dans notre exemple c’est sagex3v5
On définit ensuite l'action à déclencher (Dictionnaire des actions). Cette dernière doit obéir à un
certain nombre de critères:
Elle doit être de type Traitements divers, c'est à dire qu'elle renvoie simplement vers un sous-
programme AGL qui ne contient aucune instruction d'affichage.
La case à cocher Workflow doit être activée.
L'action doit posséder 4 paramètres:
Dans cet exemple, une action XACTUSR est définie, de type Traitements divers
Cette action est utilisée pour donner la valeur 'Oui' (2) ou 'Non' (1) au flag 'Actif' (ENAFLG) d'un
utilisateur X3. C'est une action de type Traitements Divers qui exécute le sous-programme suivant:
###########################################################
# XACTAUS.src - Action XACTAUS
###########################################################
Subprog ACTAUS(RET, MES, COD, OPT)
Variable Integer RET
Variable Char MES
Value Char COD
Value Char OPT
[AUS]ENAFLG = val(OPT)
[AUS]UPDUSR = GUSER
[AUS]UPDDAT = date$
Rewrite [AUS]
Commit
If val(OPT) = 2
Call ECR_TRACE("User"-COD-"activated by"-GUSER, 0) From GESECRAN
Else
Call ECR_TRACE("User"-COD-"de-activated by"-GUSER, 0) From GESECRAN
Endif
End
Pour insérer un lien action dans un message de Workflow, une ligne de texte (onglet Message) devra
être associée à l'action définie, et les deux paramètres libres (type Char, par valeur), devront être
renseignés.
On active un lien en donnant la valeur Oui à la colonne Lien Action.
Exemple:
Dans cet exemple, on crée une règle de Workflow sur l'objet AUS (Utilisateurs) pour l'événement
"Création". Lorsqu'un nouvel utilisateur X3 est créé, un e-mail est envoyé à l'administrateur du
système.
GUSER
"Cliquer ici pour activer cet utilisateur": Oui XACTAUS [M:AUS0]USR "2"
"Cliquer ici pour désactiver cet utilisateur": Oui XACTAUS [M:AUS0]USR "1"
Dans cet exemple renseigne les deux paramètres "libres" de l'action (les deux derniers) par les
valeurs suivantes:
Le code utilisateur créé ([M:AUS0]USR) pour le paramètre CODUSR
La valeur 2 (Oui) ou 1 (Non) pour le flag 'Actif' de l'utilisateur (paramètre ACTFLG).
ATTENTION: Pour qu'une règle de Workflow puisse utiliser les liens action, elle doit obligatoirement
avoir un unique destinataire et ce dernier doit obligatoirement être un code utilisateur X3. On ne peut
envoyer de Workflow avec lien à un contact tiers externe ou à une adresse e-mail fixe (e.g.
"john.doe@sage.com").
La tâche batch à lancer
Du côté de l'application X3, une tâche batch, AWRKLNKACT, sera chargée de traiter les demandes
générées par le serveur Web lorsque les utilisateurs activent des liens Workflow.
Il faut définir un abonnement de cette tâche AWRKLNKACT, avec une fréquence à définir selon le
degré de synchronisation que l'on désire.
La tâche AWRKLNKACT ne requiert aucun paramètre, mais utilise les paramètres généraux décrits ci-
dessus (section 2).
Lorsqu'un nouvel utilisateur X3 est créé, la règle de Workflow est déclenchée et un message de ce
type est envoyé au destinataire:
Utilisateur NEWUSR créé par JDOE
Cliquer ici pour activer l'utilisateur:
http://appsrv/AdxWfC/action.jsp?C=161&K=5S2jvu&L=FRA&D=V140X3DEMO
Cliquer ici pour désactiver l'utilisateur:
http://appsrv/AdxWfC/action.jsp?C=162&K=xIfIPp&L=FRA&D=V140X3DEMO
Lorsque l'utilisateur destinataire clique sur l'un des liens, un fichier est créé par le serveur web dans le
répertoire de travail (défini par le paramètre WRKRMTDIR, cf. section 2).
Ce fichier est ensuite traité par la tâche AWRKLNKACT, qui va générer la trace suivante:
16/03/07 17:23:06 Activation requête (51000)
Nombre de fichiers action à traiter: 1
Cette action va valider l'utilisateur NEWUSR en activant le flag ENAFLG lié à l'enregistrement de cet
utilisateur. Elle sera signée (via les champs UPDUSR, UPDDAT) par l'utilisateur destinataire du mail
de Workflow (ADMIN).
D'autre part, le mécanisme de trace peut être attaché à la règle (tout comme à toute règle de
Workflow). Lors de la visualisation des éléments dans le moniteur de Workflow, la colonne 'Liens'
sera cochée pour les événements de Workflow ayant déclenché une action de lien.
9. LA GESTION DE LA DOCUMENTATION
9.1. INTRODUCTION
Cette nouvelle fonctionnalité permet de personnaliser la documentation livrée en standard ou de
développer la documentation sur les développements spécifiques. Cette fonction est intégrée au
progiciel et est basée sur l’organisation des entités X3.
L’entité de départ d’une documentation est la fonction X3 (AFC) à laquelle la documentation est
rattachée. Les principaux composants d’une fonction peuvent faire l’objet d’une documentation
particulière (Action, Ecran, Table etc..)
L’organisation de la documentation est basée sur celle du dictionnaire X3. Une documentation peut
être basée sur une table de liens permettant d’associer des compléments documentaires.
L’aide en ligne décrit précisément les différentes structures de documentation qui peuvent être
produites. Avant de débuter l’écriture d’une documentation, consultez cette aide, afin de choisir la
structure adaptée à la documentation à mettre en œuvre.
DIRDOC : Nom du répertoire destinataire de la documentation qui sera générée. Si ce répertoire est
situé sur le poste client préfixer le chemin d’accès des caractères #@. Si le chemin d’accès contient le
caractère % celui-ci est remplacé par la valeur du code de la langue dans laquelle la documentation
est générée.
- Les actions
- Les écrans
- Les codes activité
- Les tables
- Etc..
Une attention particulière doit être portée aux éléments communs à plusieurs fonctions.
C’est la compilation de cette structure hiérarchique avec les textes associés qui permet au générateur
de documentation de produire les textes XHTML.
Ces paragraphes peuvent être générés automatiquement en fonction de la typologie qui lui est
associée (fonction / code activité …)
Conseil : Pour générer les paragraphes d’une fonction accéder au dictionnaire des fonctions, et utiliser
dans la barre des menus « Documentation »
La clef de la fiche d’un paragraphe est constituée du code langue, du type de documentation et du
code, ainsi que d'un niveau et d'un sous-niveau qui permettent d'organiser des tables des matières
intermédiaires dans la documentation
Le code langue
Le type de document. En général le type de document est identifié par le type de l’objet X3
documenté.
Le code qui correspond à ce qui est documenté : le code de la fonction, le code du paramètre, le code
activité, le code de la pièce automatique...
Un niveau et un sous-niveau, qui décrivent les imbrications de paragraphes. Le titre du premier
paragraphe de chaque niveau est repris dans une table des matières qui permet de pointer
directement sur des sections de documentation. Lorsque plus d'un paragraphe existe dans un sous-
niveau donné, une sous-table des matières est créée pour les niveaux correspondants. La génération
automatique depuis le dictionnaire crée les fiches avec des niveaux et sous-niveaux.
Un code paragraphe qui détermine la façon dont le texte HTML va être généré. Cette génération
peut se faire par simple copie du texte saisi dans la fiche, ou par une mise en page plus élaborée
(inclusion d'éléments du dictionnaire sous forme de tableaux avec des liens hypertextes, par
exemple).
Un code écran, qui définit si on doit insérer, dans le bandeau du paragraphe correspondant, une
icône permettant de déplier l'aide sur champ relative à l'écran donné.
Un code activité, hérité du dictionnaire lors de la régénération, qui permet de faire notamment la
distinction entre fiches standard et spécifiques, mais aussi de créer des documentations adaptées à
des dossiers donnés en ne générant que les paragraphes et les documentations correspondant aux
codes activité activés sur le dossier. Il est à noter que le code activité FAL (toujours faux) est pris en
compte de façon particulière : un paragraphe marqué de ce code n'est jamais pris en compte par le
traitement de génération, même si on demande une génération complète. Ceci permet de désactiver
des paragraphes générés que l'on ne désire pas trouver dans une documentation.
*1 : Les types de documents DI et DL sont prévus pour documenter les personnalisations des
fonctions standard ou gérer les documentations techniques.
La documentation d’une fonction est la plus complète car elle englobe l’ensemble des entités.
La fonction de génération peut être utilisée lors de la définition d’une nouvelle documentation pour
générer son squelette. L’aide en ligne présente pour chaque type de documentation les squelettes
générés par défaut.
Pour inhiber la génération d’un élément du squelette d’une documentation, il faut utiliser le code
activité FAL.
Pour un document paragraphe TIT doit être unique, en cas de doublon c’est le dernier lu qui est utilisé
lors de la génération.
Les intitulés des premiers paragraphes des différents niveaux sont utilisés pour générer le sommaire
de la documentation. La documentation des onglets d’une fenêtre est liée au rang des onglets dans la
fenêtre de l’onglet qui varie de 1 à 15.
Les différents codes des paragraphes sont déclarés dans la table diverse 911. Le squelette sera
généré en fonction des entités trouvées dans le dictionnaire.
Développement > Dictionnaire données > Documentation > Documentation sur champs
Les documents HTML liés à ce type de documentation sont générés par la fonction de génération
documentaire, en utilisant la case à cocher Aide sur champ et en précisant la fourchette des champs
concernés.
9.4.1. Fonctionnement
Un éditeur spécifique est disponible pour permettre la saisie des textes de la documentation qui sont
conservés dans la table ADOCCLB.
Enregistrer la saisie
Annuler la saisie
Il est possible de saisir directement le code HTML à l’aide de l’éditeur accessible par le bouton
Les liens possibles sont dépendants du type de document auquel on désire rattacher des éléments du
dictionnaire.
Toutes langues :
Langue : Choix de la langue dans laquelle la documentation doit être générée
Type : Type du document à générer
Code de à : Fourchette de sélection des entités documentaires à générer
Les éléments de documentation générés (les pages HTML) doivent être transférés dans le répertoire
de publication de la documentation. Ce répertoire est déclaré lors de l’installation dans la console
Sage X3.
10.1. INTRODUCTION
Ce chapitre présente plusieurs ensembles de fonctions permettant d’administrer à partir d’X3 les
éléments d ‘un dossier. Certaines permettent de se substituer à des fonctions techniques et
nécessitent des connaissances d’administrateur Base de données ou Système. Ils font pour la plupart
partie du développement
Ces fonctions peuvent avoir des incidences sur la cohérence de la base ou du dossier. Elles sont
donc à manipuler avec précaution.
- Maintenance (mode fiche, maintenance en colonne, transactions système)
- Vérifications (Infos version, Vérification cohérence, Symboles et traitements verrouillés)
- Utilitaires dictionnaire (copies, génération et validations, comparaisons)
- Remise à zéro dossier
- Gestion mono/multi, déverrouillage
- Recherches
- Extraction / Intégration
- Optimisations de la base (Etat des tables, Recherche index, Analyse mémos, Optimisation
base de données)
Ces fonctions sont des outils dangereux, dont l’usage doit être réservé à l'installateur du logiciel.
Remarque :
Une trace des champs modifiés par les maintenances en ligne, en colonne la trace des transactions
système lancées est gardée dans le fichier espion.tra. Ce fichier contient également d’autres lignes
numérotées afin de permettre la vérification de son intégrité. En cas de gros problème, il est
recommandé de le tenir à la disposition de la hot-line, qui pourra, par son analyse, mieux comprendre
ce qui a pu se passer sur un dossier.
Dans le cas d’une transaction système, on retrouvera dans cette trace un numéro séquentiel, le code
utilisateur, la date et l’heure, le code transaction, le nombre d’enregistrements touchés, le détail des
formules de sélection et des formules de modification.
Dans le cas d’une modification par une fonction de maintenance, on retrouvera dans cette trace un
numéro séquentiel, le code utilisateur, la date et l’heure, la table concernée, la clé, la nature de
l’opération Création / Modification /Suppression…) et, en cas de modification, une ligne par champ
modifié, avec la valeur avant et après modification.
Aucun contrôle n’est effectué sur les opérations réalisées. Une trace de ces opérations est mémorisée
dans la table AESPION
L’utilisateur peut effectuer une saisie sur plusieurs colonnes puis enregistrer ses modifications dans
une seule transaction.
Le bouton informations techniques permet de visualiser les informations concernant la licence Sage
X3.
Remarque :
Les informations techniques et les niveaux de version des composants de la solution sont
nécessaires à la Hot Line ainsi que le niveau exact de patch
Les services nécessaires au bon fonctionnement des composants de la solution Sage X3 sont gérés à
l’aide de la console. Le cours sur l’installation présente ce composant. A partir de l’application Sage
X3 une fonction de surveillance permet de visualiser les principaux chemins d’accès permettant de
gérer le serveur de traitement Sage X3.
L'exécution de cet utilitaire peut être très longue : il est conseillé d'utiliser les bornes de tables et/ou de
limiter par module.
Cet utilitaire est en général lancé de façon très ciblée, par exemple après une opération de
maintenance. Il produit une trace pour chaque table à analyser.
Le message d’erreur en gestion d’objet se produit lorsqu’une fiche déjà en cours de modification par
ailleurs est modifiée par un autre utilisateur. La clé apparaît alors en bas de l’écran. Un double clic sur
la clé affiche le détail (utilisateur et poste).
Les symboles applicatifs sont gérés par les instructions Lock et Unlock dans la table APLLCK contient
les informations suivantes :
- Un symbole qui est défini par la concaténation du code objet et de la clé
- Un indice qui vaut toujours 0
- Un numéro qui identifie la session (c’est la valeur de adxuid(2) pour la session qui verrouille
le symbole).
Le message d’erreur en gestion de traitements apparaît lorsqu’on saisit un nom de traitement qui est
déjà en cours de modification. Le traitement est quand même affiché, le symbole de verrouillage étant
affiché en haut du texte.
En gestion d’objet, le symbole verrouillé correspond au code de l’objet, suivi de la clé courante (dans
l’exemple ci-dessus, la facture d’achat (PIH) AVF0904ASN00001 est verrouillée par l’utilisateur
ADMIN
Développement > Utilitaire > Vérification > Verrous > Traitement verrouillés
En gestion d'objet, chaque utilisateur peut poser, par l'intermédiaire du menu Sélection / Sélection
avancée, des filtres destinés à sélectionner dans la liste gauche une partie seulement de la table. Une
telle sélection peut ensuite être mémorisée, et réutilisée régulièrement.
Le paramètre superviseur SELWARN du groupe PRF, définit un nombre de lignes limite dans une
table. Au-dessus de ce nombre de lignes, l’enregistrement d’une sélection non performante est refusé
ou provoque un avertissement selon la valeur du paramètre superviseur AUZMEMO
Il est à noter que deux paramètres, mentionnés ci-dessous, permettent de contrôler a priori les
mémos créés par les utilisateurs. Mais ces mémos ne sont contrôlés qu'à leur création. Or des mémos
jugés performants à l'origine peuvent très bien ne plus l'être quelques mois après, si la volumétrie de
la base les rend lourds à l'exécution. C'est pourquoi il est intéressant de lancer cet utilitaire même si
les deux paramètres ci-dessous sont correctement renseignés.*
Afin d'obtenir ce résultat, le traitement lit tous les fichiers mémos présents sur le dossier, rapproche
les critères utilisés des différents index existant sur la table (y compris les index d'optimisation), et
pose un diagnostic en tenant compte du nombre de lignes présents dans la table.
Après la saisie des critères d’analyse une trace est affichée avec les mémos à analyser
Sont considérées comme posant potentiellement des problèmes de performance les sélections
suivantes :
- Celles pour lesquelles aucun champ n’est présent en première partie d’un index
- Celles qui font intervenir plusieurs tables liées
- Celles qui intègrent des opérateurs ou
- Celles qui intègrent des expressions
Les paramètres de taille permettent de classer les problèmes potentiels dans un ordre de gravité
décroissant. Dans l’exemple donné dans l’écran ci-dessus, au-dessus de 50.000 lignes dans une
table, un problème est considéré comme critique, en dessous de 5.000 lignes aucun avertissement
n’est donné, entre 50.000 et 20.000 le problème est considéré comme un problème de performance
réel, entre 20.000 et 5.000 il est considéré comme mineur.
Développement > Utilitaires > Vérifications > Base de données > Etat des tables
Remarque :
Il est utile de lancer cet utilitaire de temps en temps pour vérifier l’état de la base, tout particulièrement
si des variations de volumétrie importantes ont été faites sur la base, ou si les temps de réponse ont
subi des variations à la baisse.
On retrouve les tables pouvant poser des problèmes en couleur dans l’écran ci-dessous :
En rouge le nombre de lignes réel de la table supérieur à 3 fois le nombre prévu à l’origine
En vert le nombre de lignes réel de la table inférieur ou égal à 3 fois la taille prévue, mais plus de 30
extents sur les données ou sur les index (oracle).
Il arrive que des index soient déclarés, mais non créés, si une revalidation de la table n’a pas été faite
ou si un incident (pas assez de place sur un tablespace) empêche leur création
Remarque :
Cet utilitaire est l’un des premiers à lancer en cas de dégradation brutale et importante des
performances de la base, particulièrement à la suite de passage de patchs ayant changé la structure
d’une table, ou après revalidation de dossier. En effet, si les traces d’erreur n’ont pas été
soigneusement vérifiées, il est possible qu’un message d’erreur non bloquant de type Création d’index
impossible n’ait pas été relevé.
Le résultat de cette trace donne non seulement les index définis dans le dictionnaire, mais non
présents sur la base, mais aussi les index présents sur la base non décrits dans le dictionnaire
(notamment les index d’optimisation utilisés), et les index définis selon une norme différente de celle
utilisée par le moteur Sage X3. Ces deux dernières catégories ne posent pas de problème de
performance.
Cette fonction permet, par des requêtes sur des tables et vues du système, de donner des
informations techniques sur la base de données. L'interprétation des résultats donnés par cette
fonction est du ressort d'un administrateur de bases de données, et peut dépendre de la version de
base de données utilisée.
Développement > Utilitaire > Vérifications > Base de données > Processus
Remarque :
Le mieux étant l’ennemi du bien, il faut créer ce type d’index avec mesure, et de préférence après
avoir pris l’avis d’un administrateur de base de données.
Les index d’optimisation standard sont livrés lorsque des cas de paramétrage connus mais peu
fréquents peuvent poser des problèmes de performances (un index standard pour tous serait trop
pénalisant).
Il s’agit bel et bien de paramétrage (pérenne). Ceci signifie que de nouveaux index d’optimisation ne
sont livrés, au cours des versions, que dans le dossier de référence (et en aucun cas par voie de
patch).
Développement > Utilitaire > Vérifications > Base de données > Processus
Développement > Utilitaire > Vérifications > Base de données > Statistique
Pour une table, la modification de la colonne A traiter et l’activation du bouton GENERER active le
script base de données prévu pour générer les statistiques.
Dans certains cas pour les éditions Crystal Report l’absence de statistiques Oracle dégrade fortement
le traitement d’édition. Il peut donc être nécessaire de recalculer les statistiques sur les tables utilisées
par ces éditions.
Attention, ce type de fonction facilite, via une interface utilisateur homogène avec le progiciel, le
lancement de procédures d'exploitation dévolues à un administrateur de base de données.
Pour être utilisée avec profit, elle suppose donc une connaissance préalable du fonctionnement des
bases de données et de leur optimisation.
Attention, ce type de fonction est dévolu à un administrateur de base de données. Elle est faite pour
être lancée par un DBA.
10.6.1. Validation
Cette fonction permet de valider en masse un ensemble d'éléments du dictionnaire. C'est-à-dire de
générer le code ou de mettre à jour la base de données conformément aux informations du
dictionnaire. Ces éléments du dictionnaire peuvent être définis par des cases à cocher et par des
bornes de noms.
Cet utilitaire permet donc de réaliser les opérations identiques à la fonction de validation de dossier,
mais de façon plus sélective et donc plus rapidement.
La validation du dictionnaire permet de s’assurer que les éléments techniques issus des différentes
générations de code sont en phase avec le dictionnaire. Par exemple, si un type de données a été
modifié, on peut s’assurer que tous les écrans, fenêtres, tables l’utilisant vont être remis à jour.
La validation forcée duplique temporairement les tables et les recopie avant de les renommer, en
appliquant les règles de dimensionnement définies soit par défaut, soit dans le fichier de configuration.
Il est en outre possible de filtrer uniquement les éléments concernés par leur appartenance à un
module, par un type de données (si celui-ci a changé, par exemple), ou un code activité donné. Enfin,
contrairement à la validation de dossier, qui va réaliser le travail dans toutes les langues dans
lesquelles le dossier est géré, il est ici possible de ne choisir qu'une seule langue.
Il est fortement conseillé aux utilisateurs connectés sur le dossier de se déconnecter. Cet utilitaire
peut être amené à modifier la structure des tables, ou à modifier des écrans qui sont en mémoire d'un
processus encore actif.
L’exécution de cette fonction peut être long, et peut être réalisé en batch à l’aide de la tâche standard
VALDICO. Un fichier trace est créé dans tous les cas. On y retrouve le détail des opérations
effectuées, et des erreurs éventuelles. Il est conseillé de lire attentivement ce fichier lorsque
l'opération est terminée
Cette fonction permet de copier en masse un ensemble d'éléments du dictionnaire d'un dossier vers
un autre. Ces éléments du dictionnaire peuvent être définis par des cases à cocher, par des bornes
de nom, et par une date (éléments mis à jour plus récemment qu'une date donnée).
Il est en outre possible de filtrer uniquement les éléments à copier concernés par leur appartenance à
un module, par un code activité donné.
Enfin, le transfert d'un élément peut s'accompagner de la copie des traitements associés, et phase de
la validation du dictionnaire sur les éléments copiés dans le dossier d'arrivée peut également être
lancée.
Lorsqu'on référence un autre dossier, pour des opérations de copie ou de comparaison, par exemple,
il est possible d'utiliser les syntaxes suivantes :
DOSSIER (le nom du dossier directement : dans ce cas, le dossier est censé être accessible
directement sur le même serveur et le même service)
serveur@DOSSIER (le nom réseau du serveur où se trouve le dossier doit être indiqué : un service
adxd doit fonctionner sur le numéro de service courant pour permettre la connexion)
serveur:service@DOSSIER (même principe que ci-dessus, mais le numéro de service peut être
différent. Ceci donne, par exemple, la syntaxe serveur_01:1802@DEMO)
Si la copie se fait d'un dossier de même type (par exemple de type X3 vers un autre dossier de type
X3), cette condition est toujours remplie lorsqu'on part du dossier superviseur (X3 dans le cas
présent), puisque toute installation d'un progiciel en technologie Sage X3 suppose qu'un dossier
superviseur soit installé au minimum sur les serveurs où des dossiers sont présents. Il est donc
conseillé d'utiliser la copie depuis le dossier superviseur (X3 si c'est X3 Entreprise) dans ce cas : il est
en effet parfaitement possible de copier un élément depuis un dossier qui n'est pas le dossier courant
(même si le dossier courant est proposé par défaut), vers un autre dossier qui n'est pas non plus le
dossier courant.
Si la copie se fait entre deux progiciels différents de la gamme SAGE X3 (par exemple X3 Entreprise,
Geode GX, Abel X3, Sage RH), cette condition n'est plus remplie. Il est alors recommandé de
référencer les dossiers sur lesquels on désire faire des copies dans l'onglet de définition des liens de
la fiche dossier.
Par ailleurs, lorsqu'un traitement est associé à l'élément du dictionnaire à copier, ce traitement n'est
pas copié. Il sera nécessaire de le faire manuellement. De même, les éléments dictionnaire comme un
type de donnée, un code activité etc…définis dans l'élément à copier, ne sont pas copiés.
Enfin, lorsque des opérations de copie induisent des validations (génération de code), elles ne sont en
général pas réalisées lorsque le dossier d'arrivée est sur un serveur différent . Il vaut alors mieux
passer par des validations de dictionnaire sur le dossier d'arrivée.
La copie de et la génération de transactions sont de nouveaux utilitaires en 140, qui sont rendus
possibles par le fait qu’un dictionnaire des transactions existe désormais dans Sage X3.
Remarque :
La copie permet le transfert des dictionnaires d’un dossier à l’autre. Par défaut, le dossier d’origine
proposé est le dossier courant.
Elle peut être limitée aux éléments marqués par un code activité, ou aux éléments modifiés depuis
une date donnée. C’est une des façons (avec l’outil de patch) de transférer des éléments résultant
d’un développement d’un dossier à l’autre, mais ceci suppose que l’un soit accessible à partir de
l’autre : la syntaxe serveur@DOSSIER:service permet d’accéder à un dossier situé sur un autre
serveur, accessible par un autre numéro de service.
La phase de validation (i.e. de génération de code) peut être enchaînée à la copie.
Développement > Utilitaire > Dictionnaire > Analyseur de différence > Objets
Cette fonction permet de comparer globalement des éléments du dictionnaire entre deux dossiers. Le
résultat est obtenu sous la forme d'un fichier trace plus ou moins détaillé, selon les options de
lancement.
Ainsi qu'on le remarquera, on retrouve, dans la trace, l'identification de l'élément et des sous-éléments
(écran, champ, action, par exemple), ainsi que le nom du champ du dictionnaire sur lequel se trouve
la différence. Les noms des champs n'apparaissent pas si la case à cocher Technique n'est pas
cochée.
Cet utilitaire est très long à l'exécution s'il est lancé sur la totalité du dictionnaire. Dans ce cas il est
conseillé de l’exécuter en mode batch à l’aide de la tâche standard ACOMPOBJ.
Cette fonction permet de mettre globalement à jour les informations des tables stockant les
informations d'habilitation croisées utilisateurs / fonctions. Elle est essentiellement utile lorsqu'on a mis
à jour le dictionnaire des fonctions, la table des sociétés et/ou des sites, ou la table des habilitations
fonctionnelles par des copies ou transferts (dans le cas de saisie manuelle, la mise à jour se fait
automatiquement).
En effet, pour des raisons de performance et de facilité d'utilisation dans les états, les habilitations
sont gérées en détail dans une table croisée dont la clé est (code site, code profil, fonction). Cette
table est mise à jour à chaque fois que des profils, des sites, des groupes de sites, ou des fonctions
sont mises à jour. Lorsque des transferts par copie sont faits, il est donc nécessaire de remettre à jour
ces informations.
Attention, cette table peut être volumineuse, et les données à mettre à jour importantes. En effet, si on
a 5 profils fonctions différents, et 20 sites, sachant que le progiciel intègre plusieurs centaines de
fonctions, on a au minimum dans cette table N*100*5*20 lignes (car le profil du super-utilisateur a
accès à toutes les fonctions sur tous les sites), plus une ligne pour chaque combinaison utilisateur,
site, fonction autorisée.
L’utilitaire de mise à jour des menus locaux réalise les opérations suivantes, pour chaque langue :
Dans le répertoire de publication des menus locaux (X3_PUB/DOSSIER/GEN/LAN/MENL, il réécrit
les fichiers Mnnnn.xml des menus locaux modifiés
Il met à jour les tables d’horodatage pour forcer la revalidation des écrans Web où le menu est utilisé
lors de leur prochaine utilisation
Il met à jour les fichiers menulan qui servent à l’interface client/serveur et à l’impression via Crystal
Reports.
Il est automatiquement lancé lorsqu’un utilisateur modifie un menu local et sort de la fonction de
gestion des menus locaux. Mais si on veut enchaîner un ensemble de modifications et ne pas perdre
de temps à réaliser cette génération à un moment donné, l’utilitaire de mise à jour permet de
déclencher cette opération après coup.
Cette fonction permet de mettre à jour le fichier d'extension .mnu, situé dans le répertoire des menus
du dossier (sous-répertoire MLAN, où LAN est le code langue de connexion), associé à une profil
menu, et décrivant l'arborescence des menus et sous-menus, ainsi que des fichiers XML qui décrivent
l'arborescence pour l'interface utilisateur. Ces fichiers sont automatiquement rafraîchis sur les postes
(en client-serveur et en Web) à la connexion.
La revalidation se fait uniquement dans toutes les langues utilisées dans le dossier.
Cette phase de validation est automatiquement réalisée pour un profil utilisateur normal dès lors que
celui-ci est modifié par la gestion des profils utilisateurs. Il existe par contre un profil menu particulier,
nommé ADMIN par défaut, qui est associé à un utilisateur privilégié, et qui contient automatiquement
toutes les fonctions définies dans le progiciel. La revalidation de ce profil est rendue nécessaire par
cette fonction dès lors que l'on a mis à jour la table des fonctions du progiciel, par exemple en ajoutant
de nouvelles fonctions créées par des développements spécifiques. Tant que cette phase n'aura pas
été faite, les nouvelles fonctions ne seront pas accessibles par le menu de l'administrateur (elles le
seront pour les autres profils si on désire l'inclure au profil menu en le modifiant).
La plupart des écrans de saisie de mouvements du progiciel sont paramétrables par l'utilisateur, par le
biais de transactions. Ces transactions permettent de définir, parmi un ensemble de champs
standards, quels sont ceux qui doivent apparaître dans l'écran de l'utilisateur. Cette génération de
transaction se fait par duplication, puis modification d'écrans modèles.
Cette génération de code se fait normalement au cours de chaque opération de paramétrage, mais il
arrive, parce qu'un écran modèle a été modifié, que la régénération du code soit nécessaire pour
toutes les transactions d'un type donné. Cette fonction permet de déclencher cette régénération.
Il est à noter que les transactions sont désormais définies dans un dictionnaire dédié.
A partir de la version 5 les exécutables issu de la compilation des sources X3, autrement dit les .adx
sont présent dans le répertoire TRT et dans un fichier archive
Développement > Utilitaire > Dictionnaire > Archives > Mise à jour Menus Locaux
Les menus locaux qui sont utilisés pour la saisie des données organisées en combo-box sont définis
dans la table APLSTD, par une opération de paramétrage dédiée. Mais il est aussi nécessaire que
les valeurs de ces menus, et l'association entre les champs du dictionnaire et les menus, soient
localement stockés sur le poste client, afin de permettre leur utilisation par des fonctions dédiées de
Crystal Report.
Pour cela, il existe des fichiers sur le poste clients, dont le nom est menus (affectation champs-menus
locaux), et menuXXX (liste des valeurs des menus locaux pour la langue XXX). Ces fichiers sont
stockés dans le sous-répertoire Report\DOSSIER_serveur_service, DOSSIER étant le code du
dossier, serveur le nom du serveur, et service le numéro du service.
Ces fichiers sont automatiquement téléchargés depuis le serveur, à partir de fichiers de référence
portant le même nom, dès lors que les fichiers de référence sont plus récents que les fichiers situés
sur le poste client.
La fonction de génération des menus locaux permet de réaliser cette opération. Il est nécessaire de la
lancer dès lors que l'on désire rendre visible dans les données éditées par des états, les intitulés de
menus locaux ayant changé.
Le lancement de cette fonction est proposé automatiquement lorsque des menus locaux ont été
modifiés ; il n'est donc nécessaire de lancer cette fonction que si on a répondu Non à la question
posée, par exemple après avoir fait des modifications en masse ou par maintenance des menus
locaux.
Au niveau technique, l'interface utilisateur des progiciels en technologie Sage X3 est décrite au format
XML. Une fenêtre XML est décrite sous la forme d'un premier fichier décrivant sa structure, et d'un
ensemble de fichiers décrivant les éléments qui la composent : écrans, listes de gauche, menus
locaux. Tous ces éléments sont multilingues et indépendants du poste client sous-jacent, et leur
génération est issue d'une validation du dictionnaire.
Lorsqu’une fenêtre est modifiée, par exemple par l'ajout d'un bouton, le XML correspondant à la
fenêtre est réécrit.
Lorsqu’un écran est modifié (par exemple par rajout d'un champ), le XML correspondant à l'écran est
réécrit.
Lorsqu’une liste gauche est créée et ajoutée à une fenêtre, le fichier XML correspondant est créé, et
le fichier XML de la fenêtre est remis à jour.
A partir de ces fichiers élémentaires, une phase d'assemblage permet, dans un contexte donné (type
de client, langue), de générer un fichier XML optimisé, ne contenant plus que les informations utiles à
l'interface considérée. C'est ce fichier assemblé qui est stocké dans le cache du poste client. Il en
existe une version différente pour les interfaces client-serveur, Web, et terminaux portables, les
informations nécessaires n'étant pas strictement les mêmes.
Tous les fichiers XML sont horodatés, ce qui permet à tout moment de vérifier la cohérence entre les
éléments.
Pour des raisons d'optimisation, lorsqu'un écran est modifié, on ne relance pas l'assemblage des
fichiers XML optimisés pour toutes les fenêtres qui l'utilisent; par contre, on met à jour un indicateur
pour invalider les fenêtres. Ainsi, cet assemblage est fait à la volée lors de la première utilisation de la
fenêtre dans un contexte donné.
Cette fonction permet de forcer cet assemblage, mais il permet aussi de régénérer les fichiers XML
décrivant les fenêtres, pour permettre de gérer des cas tels que la mise à jour des générateurs XML.
Utilitaires dossiers
o Changement de dossier : permet une reconnexion sur un autre dossier
Remarque :
L‘écran de saisie de dossier est proposé dans le cas des 2 utilitaires, mais une confirmation est
demandée avant remise à zéro effective.
Remarque :
Si la connexion est impossible sur un dossier donné, le message affiché étant Dossier en cours de
validation, et si la validation n’est plus en cours, il est conseillé d’aller d’abord voir la trace de
validation, accessible en gestion de dossier, et, si la trace laisse entrevoir que le dossier devrait être
utilisable, de déverrouiller le dossier pour y entrer et faire des vérifications. Il faudra, sur un dossier
d’exploitation, revenir dans une situation normale où le dossier est correctement revalidé.
Cette recherche est nécessaire avant de modifier un code activité de type dimensionnement pour
disposer de la liste des entités impactées.
Cette recherche permet de trouver tous les messages utilisant un mot comme par exemple « facture »
Cette recherche permet de trouver le numéro d’un texte et les entités qui utilisent ce numéro.
Recherche diverses
Cette fonction permet de rechercher dans toutes les tables du dictionnaire une valeur donnée pour un
champ de type donné, pourvu que ce type soit associé à un objet du progiciel. Par exemple, on peut
rechercher les endroits où un code état est utilisé, où un code pays est utilisé, etc.
On peut également rechercher des traitements (type ADC), bien que ce type ne soit pas associé à un
objet par défaut. Ceci permet de vérifier dans quels écrans, fenêtres, actions… un traitement donné
est utilisé.
Chaque fonction de recherche produit une trace sur laquelle l’utilisateur peut réaliser son analyse.
Cette fonction permet de lancer un ordre système sur le serveur d'application du dossier. Vu d’un
dossier X3 un ordre système est l’activation d’un exécutable ou d’une commande liée à l’Operating
System qui héberge le serveur.
On peut aussi lancer des ordres systèmes sur l'une quelconque des machines où un autre serveur
d'application sur lequel les processus adxd et sadsys tournent, et également sur le poste client.
Attention : les deux dernières syntaxes supposent qu'il existe sur le serveur distant un dossier ayant le
même nom que le dossier d'où est lancée la fonction (même si ce n'est pas sur ce dossier que l'on
lance l'opération). Cette condition est toujours remplie lorsqu'on part du dossier X3, puisque toute
installation X3 suppose qu'un dossier X3 soit installé au minimum. Il est donc conseillé de n'utiliser
cette syntaxe que dans ce cas. Par ailleurs, selon les configurations réseau, la saisie d'un nom réseau
incorrect peut provoquer une attente assez longue après la saisie du champ (le contrôle d'existence
du serveur se faisant sur le réseau, il peut y avoir un délai de l'ordre de la minute, parfois même de
plusieurs minutes avant qu'un message d'erreur n'arrive).
Le lancement de l'ordre système sur le client se fait en donnant # comme nom de serveur.
En Mode Web, l'exécution directe d'un ordre système sur le poste client (syntaxe #@ordre) est
impossible, pour des raisons de sécurité.
Ce type de fonction est une fonction de développement dont l'utilisation est interdite dans le cadre
d'une exploitation normale
Cette fonction permet de copier les valeurs de paramètres (Table ADOVAL) définis à un niveau donné
(société, site, utilisateur, législation) pour un code donné, vers un ensemble de codes de destination
(société, site, utilisateur, législation, selon le choix de copie fait) définis par borne de valeurs, par
l'utilisation d'un modèle, ou donnés sous la forme d'une liste.
Cette copie peut être faite en mode simulation dans un premier temps (avec ou sans le détail des
paramètres copiés).
Au niveau des listes gauche d’un objet, un browser nommé Explorateur de liens qui permet de définir
des liens vers d'autres fiches issues d'autres objets. Ces liens peuvent être établis manuellement,
grâce à la fonction Fichier / Liaisons, mais également de façon automatique.
Ce paramétrage fait, les liaisons automatiques sont mises à jour à chaque fiche créée ou modifiée,
mais bien entendu pas sur les fiches antérieurement créées.
Cette fonction permet de lancer la mise à jour des liaisons automatiques. Elle peut être faite sur un
objet, ou tous objets confondus.
Les liaisons entre les fiches des objets de gestion, sont définies par une fiche de départ, une fiche
d'arrivée, un groupe de liaison lié aux utilisateurs, et une désignation déclarée par un code dans une
table. Chaque liaison peut être saisie manuellement ou créée automatiquement d'après un
paramétrage lié à l'objet. Enfin, chaque liaison est datée, et dispose d'un indicateur actif (Oui/Non) : le
champ ENAFLG est utilisé à cette fin.
Les liaisons attachées à une fiche sont présentées dans un volet de la liste gauche : l'explorateur de
liaisons, dont la présence est optionnelle et dépend du paramétrage de l'objet. Seules les liaisons
actives sont présentées dans l'explorateur de liaison. Par défaut, lorsqu'une liaison est créée, elle est
active, et la seule fonction susceptible de faire passer des liaisons de l'état Actif à l'état Inactif et vice-
versa est la fonction Activation des liaisons présentée ici.
Les paramètres généraux suivants ont une influence sur le comportement de la fonction :
GRPLIAISON (défini au niveau Utilisateur) : Groupe de liaison
LIAISAUTO (défini au niveau Utilisateur) : Liaisons autos
Il faut que la gestion des liaisons ait été paramétrée au départ. Ceci suppose, outre l'activation des
paramètres utilisateurs, que le volet des liaisons apparaisse dans les fonctions dans lesquelles il est
jugé utile. Ceci se définit par la fonction de personnalisation d'objet.
la création,
la mise à jour
la suppression
Par conséquent, la fonction de paramétrage des transactions est une fonction potentiellement
dangereuse. Les ordres SQL associés impactent les données de la base sans que la cohérence liée à
l’applicatif ne soit contrôlée.
Effectuer un test du résultat obtenu par la transaction sur une sélection réduite et identifiée,
avant de lancer la transaction sur l’intégralité des données à mettre à jour.
Ne donner accès à cette fonction qu’à certains utilisateurs (protéger par un code d’accès
chaque transaction système pour bien filtrer celles qui peuvent être accessibles aux
utilisateurs).
Cette fonction étant de type objet, les opérations de création, modification, et suppression de
fiche peuvent être activées ou désactivées pour un utilisateur donné.
Des filtres par rôles peuvent également être mis en place sur cette fonction. Un filtrage par
code d'accès est effectué grâce au champ nommé ACS. S’il y a un code d'accès, les droits de
visualisation et de modification sont accordés conformément aux droits de lecture et d'écriture
associés au code pour l'utilisateur, via son profil fonction.
L’accès en exécution d’une transaction système peut être contrôlé par un code d’accès. A la définition
des profils menus, on peut aussi imposer une transaction système (paramètre de la fonction AMIEXE),
mais ceci ne dispense pas de protéger les autres transactions système par un code d’accès.
1
2 3
4
Variables regroupe les variables pouvant ensuite être utilisées dans les formules de sélection,
et dans les formules de mise à jour de champs. Ces variables sont nommées V1, V2, V3,… V6.
On peut déclarer jusqu’à 6 variables.
Mise à jour d’une ou plusieurs tables. On peut effectuer pour chacune d’elle :
soit une modification de la valeur d’un ou plusieurs champs (il faudra paramétrer une ligne par
champ).
soit une création d’enregistrements à partir d’un enregistrement sélectionné (il faudra
paramétrer une ligne pour le champ clé). C’est l’équivalent d’une duplication d’enregistrement.
Pour modifier certains champs de cet enregistrement, il faudra intervenir par une autre
transaction système.
soit une suppression d’enregistrements (on ne précise rien pour les champs).
Formules permettent de faire une sélection des enregistrements à traiter. Ces formules peuvent faire
appel aux valeurs de paramètres.
Copie permet de recopier la définition de la transaction vers un autre dossier. Il faudra valider la
transaction dans le dossier de destination.
Outre l’exécution par le biais du bouton « Exec » dans la fonction de création de la transaction
système, il existe une fonction dédiée présentant des options supplémentaires.
Cocher Test permet de lancer la transaction uniquement en test. Dès lors, on saisit le nombre
d’enregistrements sur lequel porte la trace de test (10 par défaut) : la trace présentant les lignes qui
seraient modifiées si la fonction était lancée en mode réel.
Cette saisie faite, on voit apparaître, le cas échéant, des paramètres dont la valeur doit être saisie
dans le tableau situé ci-dessus.
Une trace sera affichée lorsque cette fonction sera terminée pour donner la liste des lignes modifiées.