Académique Documents
Professionnel Documents
Culture Documents
Principes de base
Sage X3
V6
Sommaire .................................................................................................................................... 2
Introduction ................................................................................................................................ 4
Procédure pratique pour la gestion d’un environnement d’exploitation sur lequel des
spécifiques sont installés ...................................................................................................... 14
Organisations préconisées pour les environnements clients.............................................. 14
Architecture à deux niveaux......................................................................................... 14
Architecture à trois niveaux ......................................................................................... 15
Procédure d’installation d’un patch standard ....................................................................... 16
Procédure d’installation d’un patch standard ....................................................................... 17
Procédure d’installation d’une nouvelle version mineure .................................................... 21
Les erreurs à ne pas commettre (pour les spécifiques comme pour les verticaux) .. 24
Oublier de protéger un champ commençant par X, Y ou Z ................................................ 24
Modifier des traitements standards ....................................................................................... 24
Ne pas vérifier ses valeurs de code activité ......................................................................... 24
Bien faire attention à la valeur des codes activités livrés .................................................... 24
Multiplier les « petits » spécifiques partout ........................................................................... 24
Protéger trop globalement un élément ................................................................................. 25
Ne pas tester ses spécifiques après une mise à jour .......................................................... 25
Ne pas gérer correctement les actions sur champ SPE ou SPV ....................................... 25
Patcher des écrans générés par des transactions .............................................................. 25
2 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Annexes .................................................................................................................................... 26
Sous-programme de recherche d’un texte dans un écran.................................................. 26
Gestion d’un traitement vertical de point d’entrée pour permettre un chaînage................ 27
Normes de numérotation et de dénomination...................................................................... 29
Codes activités ........................................................................................................... 29
Champs, écrans, objets ............................................................................................... 29
Messages (ATEXTE) .................................................................................................... 29
Menus locaux et chapitres de messages ........................................................................ 29
Tables diverses........................................................................................................... 29
Sous-programme de protection d’un vertical ....................................................................... 30
3 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Introduction
4 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Principes de base
Développements spécifiques
Un développement spécifique est défini comme étant :
Un ensemble d’éléments techniques (ie. du code et des données),
usuellement fournis dans un format de fichier particulier nommé patch.
Permettant de répondre à un besoin fonctionnel.
Défini de telle façon qu’il puisse être installé de façon pérenne dans un
environnement donné.
Installable de façon autonome dans un environnement donné (ie. à un
niveau de version donné).
Développements verticaux
Un développement vertical est un développement spécifique qui a vocation à
être installé chez un ensemble de clients. En soi, il n’y a pas de différence
fondamentale entre les deux. Mais comme on part du principe que l’objectif
d’un développement vertical est d’être partagé, et d’être packagé pour pouvoir
être facilement installé en plusieurs exemplaires, on utilisera des normes de
développement un peu différentes (règles pour nommer les éléments) et on
dispose dans le dictionnaire, d’informations spécifiques marquées comme
verticales, afin de permettre une cohabitation entre spécifique et vertical. De
même, les principes de déploiement pourront être différents, surtout si on
désire gérer de façon rigoureuse la cohabitation entre vertical et spécifique.
Par ailleurs, une large diffusion suppose la mise en œuvre d’un suivi rigoureux
des maintenances du vertical et de leur synchronisation avec les versions
standard, afin d’en permettre une diffusion large à l’instar de ce qui est fait
pour les maintenances standard.
5 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
appelés en complément d’un traitement standard à partir de fonctions
dont le comportement va ainsi se trouver modifié.
Deux grands types de traitements existent :
• ceux associés à un modèle standard (objet, par exemple). Leur code est
appelé automatiquement par l’intermédiaire du modèle. Le nom du
traitement utilisé est défini dans le dictionnaire (nom de traitement
spécifique ou vertical dans le dictionnaire des objets, des actions, des
écrans, des états…)
• ceux qui sont appelés par des branchements standard nommés points
d’entrée. Ils permettent d’intervenir dans un contexte d’exécution décrit
par une documentation technique, pour en modifier le comportement.
Une table de routage associe le traitement standard au traitement dans
lequel se trouve le point d’entrée.
Un vertical ou spécifique peut aussi appeler des exécutables (.exe, OCX, DLL)
réalisés dans des technologies autres, installés sur le client et/ou le serveur.
La diffusion à l’intérieur de ce type d’élément à l’intérieur d’un patch standard
n’est pas prévue, il faut donc créer des procédures d’installation dédiées.
Codes activité
Un code activité est un code de 5 caractères permettant de marquer des
éléments dans le dictionnaire de Sage X3. En configurant le dossier, on peut :
activer ou désactiver le code activité
lui donner une valeur numérique
La valeur d’un code activité est saisie directement en gestion de dossier, ou
évaluée par calcul à partir de valeurs d’autres codes activité.
Ceci permet de définir des variantes dans le dictionnaire : les champs, onglets,
éléments marqués par un code activité Inactif ne sont pas exécutés ou pas
visibles dans le dossier.
Cette notion est utilisée en standard pour disposer de variantes fonctionnelles
(ex : utilisation d’une localisation ou d’une fonctionnalité avancée), pour
dimensionner des tableaux dans des écrans. Mais le cas d’emploi le plus
important concerne le marquage d’un spécifique par un code activité. La règle
est alors de créer ces codes activités en les faisant commencer par X, Y, ou Z.
Cette règle est testée explicitement dans le superviseur, assurant la protection
du code ou des éléments concernés : quand un patch standard est installé, les
éléments ainsi marqués sont protégés. En cas de revalidation de dossier, il en
va de même. Une norme a été créée à partir de la V5 pour différencier plus
clairement les verticaux des spécifiques. Cette norme est la suivante :
un code activité commençant par X protège des développements
verticaux réalisés par un partenaire Sage X3.
un code activité commençant par Y protège des développements
spécifiques faits par un partenaire Sage X3 chez des clients finaux.
un code activité commençant par Z protège des développements
spécifiques faits par un client final pour ses propres besoins.
Outre la protection des éléments marqués vis à vis d’un patch standard, elle
permet aussi de définir un critère pour une extraction d’un développement
sous forme d’un fichier de patch. Bien entendu, un code activité de ce type
6 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
permet d’activer ou de désactiver des éléments, y compris des éléments
standard jusque là.
7 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Il faut noter que le numéro attribué est en principe fixe pour les éléments
standard dans un progiciel donné, et défini dans une plage de numérotation
donnée. Mais dans le cas d’un spécifique, il n’est pas fixe, car l’attribution se
fait à la volée au moment de la création du texte, dans une autre plage de
numérotation. Or rien n’interdit de livrer par patch un développement
spécifique donné, réalisé dans un environnement donné, avec des numéros de
texte attribués dans cet environnement. A l’installation du patch, il n’est pas
exclu que l’environnement d’arrivée ait déjà utilisé cette plage de
numérotation.
Pour gérer cette problématique :
le fichier de patch contient à la fois le numéro du texte et le texte lui-
même (dans toutes les langues livrées dans le patch).
à l’installation, le numéro de texte est respecté si le texte n’existe pas
encore dans la table ATEXTE du dossier d’arrivée, ou si le texte est déjà
présent et identique.
si ce n’est pas le cas, le texte est re-numéroté à la volée et créé ailleurs
Ceci permet de gérer les textes spécifiques de façon entièrement transparente
pour le développeur, dès lors qu’il utilise la procédure de patch pour livrer des
éléments développés. Mais cela signifie aussi qu’il ne faut en aucun cas faire
référence à un numéro de texte ailleurs que dans un élément du dictionnaire
gérant des textes (type de données ATX). Notamment, utiliser un numéro de
texte dans un traitement pour faire référence à un texte donné est prohibé. Si
on veut impérativement faire référence à un texte que l’on sait présent dans
un élément du dictionnaire, il faudra relire l’élément en question. On trouvera
en annexe un exemple de fonction permettant de rechercher un tel texte.
en version 5 ou 6, les textes standards sont numérotés de 1 à 99.999
(en version 140, on allait jusqu’à 49.999). Au delà, les numéros sont
réservés aux spécifiques et verticaux.
quand on crée un développement spécifique, les textes sont
automatiquement attribués dans une plage située au delà de celle
réservée aux textes standards. Cette plage, commence donc à 100.000
en V5 et V6 (c’était 50.000 en version 140). Lorsqu’on revalide un
dossier 140 pour passer en V5 ou en V6, la renumérotation des textes
spécifiques est faite automatiquement.
8 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
l’utilisation pratique d’un menu local se fait dans les écrans, en donnant le bon
numéro. Par exemple, le menu local numéro 1 contient les choix Non (choix
numéro 1) et Oui (choix numéro 2).
la visualisation d’un choix de menu local, hormis le cas où il est présent sur un
écran, peut se faire par la formule suivante :
mess(I,M,1) donne le message numéro I du menu local numéro M
dans langue de connexion. Ainsi, mess(2,1,1) renverra "Oui" pour un
utilisateur connecté en français.
APLSTD stockant des menus locaux ou des messages, on a réservé certaines
plages de numérotation aux messages (par exemple les messages d’erreur).
Pour éviter les conflits avec le standard, certaines plages de numéros sont
réservées aux verticaux et aux spécifiques. Elles ont été étendues en V5. Il
faut donc prendre garde à les utiliser. On retrouvera en annexe un récapitulatif
des différentes normes de numérotation et de dénomination.
Il faut noter que la limite technique de la longueur d’un message de APLSTD
est de 123 caractères, ce qui est en principe amplement suffisant pour des
menus locaux. Pour des messages, il est toujours possible de gérer plusieurs
messages et de les concaténer dans un traitement.
Documentation spécifique
Les versions 5 et 6 intègrent un outil de documentation qui permet :
de créer de nouvelles documentations associées à des fonctions,
paramètres, actions… spécifiques.
d’ajouter voire de modifier des paragraphes à des documentations
existantes, en les marquant comme spécifiques.
de livrer par patch des documentations.
La structure de la documentation est stockée dans le dossier X3, et propagée
dans tout dossier situé en dessous. Les textes sont stockés uniquement dans
le dossier X3, mais des textes spécifiques peuvent être ajoutés dans les
dossiers où la documentation spécifique est réalisée.
Il est de même possible de gérer des documentations spécifiques sur champs,
à condition de créer des mots-clés commençant par X, Y, ou Z. Dans ce cas
particulier, la règle de dénomination suffit à pérenniser les documentations sur
champ et l’affectation qui en est faite dans les écrans.
9 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Comment réaliser un développement
spécifique
Principes de base
Un développement est considéré comme pérenne si les modifications qu’il
comporte, une fois installées dans un dossier donné, ne sont pas altérées
lorsqu’un patch standard ou une nouvelle version est installée. Ceci ne signifie
pas pour autant que le spécifique va continuer de fonctionner !
En effet, il est possible (par exemple) que les données qu’il manipule, qui
peuvent être des données standard, soient complétées, au détour d’une
version, de nouvelles informations obligatoires que le spécifique ne renseigne
pas…
Ainsi donc, la pérennisation du spécifique ne dispense pas d’un test de son
fonctionnement (notamment dès lors que des structures de données standard
mises à jour directement par le spécifique sont concernées).
Pour qu’un spécifique soit inaltérable, il faut que trois conditions soient
remplies :
les éléments définis ne doivent pas entrer en conflit avec de nouveaux
éléments susceptibles d’être livrés en standard. Ceci impose des règles
de dénomination.
les éléments spécifiques définis, tout comme les modifications
spécifiques faites sur le standard, doivent être marquées par un code
activité spécifique, et ce, au niveau de détail approprié.
les traitements standard, même s’ils sont livrés en source, ne doivent
jamais être modifiés. La technique de point d’entrée permet d’écrire
dans un traitement complémentaire qui ne sera jamais altéré par un
patch. Ce traitement complémentaire est susceptible d’être exécuté
avant, après, ou en remplacement du code standard dans le cas
d’actions sur les champs d’un écran (positionnement du code SPE,
indicateur de désactivation d’un code standard et/ou vertical). Dans le
cas de points d’entrée, une variable en retour (GPE) dont la valeur peut
être testée dans le cadre du point d’entrée permet de désactiver le
fonctionnement standard ou de le compléter, selon les cas.
10 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Règles de dénomination
Un élément spécifique doit avoir un nom qui commence par Y ou Z. On entend
par élément spécifique un élément qui peut être patché séparément : un type
de données, une table, un écran, une fenêtre, un objet, une action, un
traitement… A cette règle, il faut noter deux exceptions : sont considérés
comme spécifiques les traitements dont le nom commence par SPE, et ceux
dont le nom commence par CNS et se termine par SPE (il s’agit de traitements
normalisés attachés aux actions spécifiques objet et consultation).
Un sous-élément d’un élément spécifique n’a pas besoin de suivre ces règles
de dénomination (par exemple un champ dans un écran ou dans une table).
En effet, on peut avoir intérêt à utiliser des codes correspondants à des
champs standard, dans le but de faciliter des affectations de classe à classe.
Certains champs techniques servant à l’affichage d’intitulés commençant par
Z peuvent exister dans des écrans standard. Pour éviter des conflits, on peut
utiliser, dans les écrans standard modifiés en spécifique, des champs préfixés
par Z_ pour les champs.
11 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Comment faire évoluer un développement
spécifique ou vertical
Le testeur de patch
Cet outil permet de lire un patch ou une série de patchs, afin de lister les
éléments inclus dans le patch. Pour chaque élément, une vérification est faite
pour savoir si des modifications spécifiques ont été faites dans le dossier en
cours de test. Si c’est le cas, un conflit potentiel existe, il est affiché dans la
trace détaillée. La personne en charge de mettre les patchs en place peut alors
mener des tests sélectifs sur les points potentiels de conflit.
Il est à noter que le testeur de patch ne sait pas distinguer ce qui a changé
entre la version précédente et la version patchée ; il s’intéresse simplement au
fait qu’il y a du spécifique sur un élément patché, et ne lit en réalité que la
« table des matières » du patch pour savoir ce qui est livré.
Il est important de noter que, sur le CD d’une version mineure, on livre un
pseudo-fichier de patch ne contenant que la liste des éléments modifiés depuis
la précédente version mineure. Le testeur de patch peut donc aussi être utilisé
dans ce cas.
12 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
La livraison d’un spécifique sur une version donnée
Si un client est dans une version X.Y donnée, et que l’on désire lui installer un
spécifique par patch, il importe, si ce spécifique intègre des éléments standard
modifiés, que ces éléments aient été extraits d’un environnement de
développement dans la même version. Ceci signifie qu’il faut maintenir un
spécifique livré chez plusieurs clients dans toutes les versions que les clients
utilisent (y compris les niveaux de patch).
Il doit notamment être clair qu’on ne sait pas faire de patch « delta », c’est-à-
dire par exemple un patch qui ajouterait un champ sur une table (ie. qui
pourrait l’ajouter, dans deux versions différentes de la table, indépendamment
de la structure d’origine qui pourrait être différente) ; en fait, le patch décrit la
totalité de la structure de la table (il en respecte le contenu…).
La version 5 permet de typer les fichiers de patch. On utilisera donc un patch
typé spécifique pour livrer un spécifique (ce qui permet notamment de
supprimer par patch une action spécifique, ou de modifier le nom du
traitement spécifique associé aux actions, écrans, objets).
13 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Procédure pratique pour la gestion d’un
environnement d’exploitation sur lequel
des spécifiques sont installés
14 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Cette disposition permet de tester de façon sécurisée toute installation de
patch avant de la mettre en production. Si on désire sécuriser de la même
façon toute installation de version intermédiaire, on disposera ces deux jeux
de dossiers dans des environnements X3 différents (dénommés solutions dans
la terminologie habituelle utilisée par la console), comme le montre le schéma
ci-dessous qui résume l’organisation recommandée :
(**) Le dossier "X3" en question est soit le même que le premier (cas où un
seul environnement est installé, pour sécuriser l’installation de patchs), soit un
dossier différent avec le même contenu (si on a deux environnements, ce qui
est utile si on veut pouvoir installer des versions intermédiaires avec le même
niveau de test chez le client).
15 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Le schéma est alors celui-ci :
Environnement Environnement
(« solution ») (« solution ») de
d’exploitation développement
EXPLOIT EXPLOITST
(dossier (dossier de test
d’exploitation des spécifiques
client) client)
16 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Procédure d’installation d’un patch standard
Les principes de base de la procédure d’installation des patchs restent les
mêmes dans un environnement à deux ou trois niveaux. La seule différence
consiste dans le fait qu’on a deux étapes avec 3 niveaux, et une seule étape
avec deux :
Etape 1, uniquement dans le cas d’une structure à 3 niveaux : on
commencera par valider le fonctionnement du vertical par rapport au
standard, ce qui pourra amener à fournir un patch vertical
complémentaire (ce test n’étant pas fait en principe dans
l’environnement du client final). Puis on analysera l’impact sur le
spécifique éventuel (Etape 2).
Etape 2, dans la structure à 3 niveaux : on valide le fonctionnement du
spécifique, le vertical étant l’environnement de référence (dossier
VERTICAL). Cette validation est faite en général sur le site du client
dans un environnement de test dédié.
Etape unique dans le cas d’une structure à deux niveaux : on valide le
fonctionnement du spécifique, le standard étant l’environnement de
référence (dossier X3).
Lorsqu’un patch est livré pour être installé dans des environnements
d’exploitation ou de test, il faut lire avant toute chose le fichier d’information
qui donne le détail des corrections apportées par une liste de patch. Cela
permettra de voir où il faut focaliser les tests. Un point est tout
particulièrement à noter : si un patch livre un nouveau code activité, il faut
vérifier avec quelle valeur (actif ou inactif) il est livré par défaut, et penser à
modifier sa valeur après installation si on désire que ce ne soit pas cette valeur
qui soit retenue dans le dossier. La valeur du code activité n’est fixée par le
patch que si le code activité n’existait pas au préalable dans le dossier (sinon,
on ne touche pas à sa valeur).
Cette lecture faite, il faudra déposer les fichiers correspondants dans un
répertoire et lancer le testeur de patch depuis le dossier de test.
Le résultat de cette opération va être une liste de points de conflits potentiels
(un écran présent dans le patch sur lequel se trouve un spécifique, par
exemple).
Si aucun conflit n’est signalé, on installe le patch dans le dossier de test, puis
on fait des tests minimaux. Si l’interaction entre les modifications spécifiques
et le éléments patchés est nulle, les régressions éventuelles ne viendront pas
du spécifique lui-même.
Si des conflits existent, l’installation du patch peut provoquer des
dysfonctionnements dans les éléments correspondants. Il est donc
recommandé dans ce cas, pour chacun des éléments signalés comme
susceptibles de poser des problèmes, de suivre une procédure de vérification
en deux étapes (avant installation, après installation). Cette procédure est
détaillée dans les tableaux ci-dessous.
17 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
PROCEDURE DE PATCH STANDARD DANS LE CAS D’UN VERTICAL :
Mise à jour du dossier vertical, création du patch complémentaire
18 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
PROCEDURE DE PATCH DANS LE CAS D’UN VERTICAL :
Mise à jour du dossier d’exploitation après test
19 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
PROCEDURE DE PATCH DANS LE CAS D’UN SPECIFIQUE (2 niveaux):
Mise à jour du dossier d’exploitation après test
20 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Procédure d’installation d’une nouvelle version mineure
Le principe va être un peu le même, puisqu’une nouvelle version correspond
en réalité à un ensemble de mises à jour faites sur une version donnée. Le
testeur de patch peut toujours être utilisé pour vérifier les éventuels conflits.
En effet, sur tout CD de mise à jour, des pseudo-fichiers de patch, contenant
juste la liste des éléments contenus dans le patch, sont livrés.
Le fait d’avoir deux environnements est nécessaire pour travailler de façon
étanche dans ce cas. Au lieu d’installer des patchs, on installe la nouvelle
version, puis on procède par revalidation des dossiers et ensuite on teste les
éléments concernés identifiés par le testeur de patch.
Par ailleurs, il faut faire attention à trois points particuliers lorsqu’on met à
jour une version :
la mise à jour du dictionnaire se faisant par revalidation du dossier ;
elle sera donc un peu plus longue (surtout sur 3 niveaux, puisqu’on a 3
dossiers à revalider, le dossier DEMO étant rechargé lors de la mise à
jour). Elle suppose de vérifier attentivement avant mise à jour la valeur
des codes activité (standard et spécifiques) pour éviter, lors de la
revalidation, une désactivation de fonctions utiles, voire la perte de
données.
une mise à jour peut impliquer des modifications de moteurs ou de
clients (que l’on peut vouloir tester).
il faut veiller à supprimer, dans les dossiers de tests, les traitements et
états standards qui y sont présents (ceux qui ont été installés lors des
derniers tests de mise à jour), car la mise à jour mineure ne touche
que les traitements et états du dossier de référence et pas ceux des
dossiers de tests.
21 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Quel environnement préconiser pour
gérer des développements verticaux
L’environnement de développement
Lorsque l’on crée un vertical, l’environnement concerné est un environnement
standard, dans une version et un niveau de patch clairement identifié, sur
lequel on dispose d’un dossier de développement, et en principe d’un dossier
de test. On travaille dans ce dossier de développement en respectant les
normes de développement et de dénomination. Cela correspond au triplet de
dossiers nommés X3, VERTISPE, et DEMOTEST dans le schéma décrit en
architecture 3 niveaux.
Sage
Division Moyennes et Grandes Entreprises
10 rue Fructidor
75834 Paris Cedex 17
Tel. 0825 007 017
Les environnements de maintenance et de support
Lorsqu’on gère un vertical, il n’est pas rare d’avoir des clients utilisant ce
vertical dans des niveaux de versions et de patchs différents. Il est donc
conseillé de disposer d’une copie de l’environnement de développement
(dossier de développement et dossier de test) dans chaque version et à
chaque niveau de patch en diffusion chez les clients. Ceci suppose de limiter
au maximum chez les clients le nombre de versions en diffusion, et aussi
d’essayer au maximum de leur imposer un niveau de patch minimal. Au delà,
si l’environnement est très particulier, la maintenance et le diagnostic en cas
d’incident peuvent aussi être faits directement dans l’environnement du client,
avec toutes les précautions que cela suppose.
Une nouvelle version du standard, parce qu’elle est livrée comme un nouveau
support, mais aussi parce qu’elle se matérialise par une liste de patch faisant
la transition, impose de fait un test et une nouvelle livraison d’un vertical (dès
lors qu’il est impacté). Il est donc recommandé aux partenaires développant
des verticaux de suivre le rythme des versions et des patchs pour réaliser des
versions et des patchs correspondant à leur vertical. Il est bien entendu
également possible de livrer des versions de vertical à un rythme plus rapide ;
mais toute nouvelle version de vertical se réfèrera à une version et à une liste
de patch du standard à partir de laquelle elle a été élaborée.
23 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Les erreurs à ne pas commettre (pour les
spécifiques comme pour les verticaux)
24 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Protéger trop globalement un élément
C’est se couper des évolutions du standard sur des éléments qui auraient pu
ne pas être protégés.
25 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Annexes
26 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
If fstat=0
End [ATX]TEXTE
Else
End “”
Endif
Raz NBENT,TRTENT,ACTENT,VACTENT
If clalev([F:APE])=0 : Local File AENTREE [APE] : Endif
If clalev([F:ACV])=0 : Local File ACTIV [ACV] : Endif
Read [APE]APE0=PROGSTD
If fstat<>0 or [F:APE]TRTPAR="" : End : Endif
27 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
D1=instr(D1+1,TRTPAR,"~")
If D1=0 : Break 1 : Endif
NBENT+=1 : A1(NBENT)=D1
Next I
For I=1 To NBENT
D1=instr(D1+1,TRTPAR,";")
A2(I)=D1
Next I
If A2(I)=0 : A2(I)=len(TRTPAR) : Endif
28 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Normes de numérotation et de dénomination
Codes activités
Commençant par X : verticaux
Commençant par Y : spécifiques faits par le partenaire pour un client
donné
Commençant par Z : spécifiques faits par le client lui-même
Messages (ATEXTE)
Spécifiques et verticaux : numéros supérieurs à 100.000
Tables diverses
Les normes sont les suivantes :
Tables diverses verticales : 1000 à 1999
Tables diverses spécifiques : 6000 à 6999
29 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
Sous-programme de protection d’un vertical
Afin de garantir l’investissement qu’un partenaire fait sur un vertical installé
chez un client, il peut être intéressant de gérer une protection. La première
chose à faire est de ne pas livrer les sources (ou au moins pas tous). La
deuxième chose peut être de tester la présence d’un fichier de sérialisation
basé sur le numéro de série unique de la licence. Le traitement proposé ci-
dessous est un exemple qui peut – et doit – être adapté par le partenaire pour
tester la présence d’un tel fichier de sérialisation.
###########################################################################
#
# Gestion de numéros de série pour protéger des verticaux
#
###########################################################################
#
# Ce traitement est fourni à titre d'exemple, sans aucune garantie d'aucune
# sorte. Il contient un algorithme simple de crytage (qui n'est pas celui
# utilisé par Sage ERP X3, et qui n'a pas la prétention d'être inviolable)
# N'importe quel autre algorithme de cryptage du marché pourrait être
# utilisé
#
# Il se base sur le numéro de série unique fourni par Sage lors de la
# livraison d'une licence. Aucune garantie implicite ou explicite n'est
# donnée sur la pérennité de ce numéro, qui peut être amené à
# changer pour des raisons techniques lorsque le client est amené à changer
# les options de sa licence
#
# (C) SAGE 2009
###########################################################################
#
# Principe de base :
# On part du principe que le numéro de licence standard fourni par Sage
# contient 6 chiffres uniques liés au client et à son identité
# (numéro de série du client).
#
# Ce numéro est accessible par la fonction adonix ver$(0)(il s'agit des 6
# derniers chiffres)
#
# On définit deux sous-programmes qui doivent être placés dans deux
# traitements différents,
# et dont les sources ne sont pas livrés :
#
# - le premier (appelé ici CREE_SERIE) crée un fichier de clés qui encode
# un numéro de série donné
#
# - le deuxième (appelé ici TEST_SERIE) lit le fichier de clés et vérifie
# que l'encodage correspond au numéro de la licence
# Le spécifique devra appeler (à des endroits stratégiques non fournis en
# source) ce deuxième sous-programme qui sera intégré dans un traitement
# spécifique non fourni en source, afin de bloquer le fonctionnement si,
# en retour, OK=0
#
# Remarque :
# Il n'est pas recommandé d'appeler trop souvent ce
# traitement, qui fait tout de même une lecture sur le serveur
# d'application et pourrait générer des contentions s'il était utilisé
30 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
# dans une boucle trop fréquemment appelée. L'idéal est de l'appeler dans
# une séquence d'initialisation stratégique pour la suite
#
# Les deux sous-programmes proposés ici font le même encodage du numéro de
# série, basé sur 8 nombres premiers quelconques qui seront particularisés
# par chaque partenaire.
#
# Il est suggéré de nommer ce fichier serial_nompartenaire, et de le placer
# dans le répertoire .serialisation du run-time.
#
# Recherche de nombre premiers... (exécuté si on exécute le traitement)
Local Integer NOMBRE, ESSAIS : NOMBRE=1243 : ESSAIS=1
Call RECH_PREM(NOMBRE,ESSAIS)
End
#
# Sous-programme de génération d'un fichier de clés (ici dans le répertoire
# tmp). On précise en entrée le numéro de série (entier sur 8 chiffres
# maximum), et le fichier à créer.
# Ce fichier, renommé comme précisé ci-dessus, devra être installé chez le
# client.
# Ce sous-programme doit rester chez le partenaire ayant créé le vertical
# (sa livraison permettrait à quiconque de créer des fichiers de
# sérialisation)
# Remarque : rien n'empêche d'encoder à la suite un deuxième nombre
# permettant de définir des options secondaires de la licence
#
Subprog CREE_SERIE(SERIE,FICSER)
Value Integer SERIE
Value Integer OPTIONS(8)
Value Char FICSER()
31 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
NOMBRE8=131057
# Rien n'interdit des variations pourvu que ce soient les mêmes dans le
# programme de test de licence
Wrseq format$("N0:8#",mod(PART1*NOMBRE1,NOMBRE2)) Using [SER]
Wrseq format$("N0:8#",mod(PART2*NOMBRE3,NOMBRE4)) Using [SER]
Wrseq format$("N0:8#",mod(PART3*NOMBRE5,NOMBRE6)) Using [SER]
Wrseq format$("N0:8#",mod(PART4*NOMBRE7,NOMBRE8)) Using [SER]
# C'est fini
Openo Using [SER]
End
#
#
# Sous-programme de vérification du fichier de clés (ici dans le répertoire
# .serialisation)
# Doit être inclus dans un traitement non livré (on peut modifier son nom,
# mais l'algorithme doit être le même que le sous-programme précédent)
Subprog TEST_SERIE(OK)
Variable Integer OK
# Vous pouvez prendre le nom que vous voulez... mais pas serial_adonix !
FICSERIE="serial_partenaire"
OK=1
Rdseq NUMLU(1) Using [SER]: Rdseq NUMLU(2) Using [SER]
Rdseq NUMLU(3) Using [SER]: Rdseq NUMLU(4) Using [SER]
Openi Using [SER]
#
# Cette partie de l'algorithme est la même que dans le sous-programme
# précédent
#
32 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -
PART1=mod(SERIE,10000)
PART2=int(SERIE/10000)
PART3=100*int(PART1/100)+int(PART2/100)
PART4=100*mod(PART1,100)+mod(PART2,100)
#
# Si votre imagination vous fait défaut pour trouver des nombres
# premiers...
#
Subprog RECH_PREM(NOMBRE,ESSAIS)
Variable Integer NOMBRE
Variable Integer ESSAIS
Local Integer FOUND
NOMBRE+=(mod(NOMBRE,2)=0)
Repeat
Repeat
FOUND=1
For I=3 To int(sqr(NOMBRE)) Step 2
If mod(NOMBRE,I)=0
NOMBRE+=2
FOUND=0
Break
Endif
Next
Until FOUND=1
Errbox num$(NOMBRE)
NOMBRE+=2
ESSAIS-=1
Until ESSAIS<0
End
33 / 33 Livre blanc spécifiques et verticaux.doc - document indicatif fourni sans engagement ni garantie -