Rubrique de base-produit
Pour chaque base-produit déclarée dans la rubrique [Module] va être déclarée une rubrique base-produit de nom le nom de la base-produit. Cette rubrique énumère l ’ensemble des champs qui vont être rajoutés à chaque produit dans la base-produit en complément des champs standards de base-produit.
Pour chacun de ces champs supplémentaires, on trouvera une description du genre :
NomDeChamp = TypeDeChamp ; Longueur ; Localisation {; Unité ; Minimum ; Maximum} { ; Index {*}} { Description | { "Description1" "Description2"}}
- NomDeChamp est l ’identificateur du champ, il est utilisé par toutes les applications, les dialogues et les scripts en complément pointé au nom de la base-produit, par exemple " MesProduits.MonChamp ".
Il a les mêmes caractéristiques qu ’un nom de variable dans un script.
- TypeDeChamp décrit le type de champ :
" Int " le champ est un entier signé de longueur 4 octets
" Float " le champ est un flottant de longueur 4
" Date " le champ est une date de longueur 4, c ’est à dire date du jour plus heure minute seconde [1] ,
" String " le champ est une chaîne de caractère de la longueur précisée,
" Range " le champ est une gamme dont la longueur est égal au plus petit multiple de 4 supérieur ou égal à la longueur précisé,
" Measure " le champ est une mesure, une mesure a des paramètres supplémentaires (cf.plus loin),
"Blob" le champ définit un blob (Binary Large OBject) qui est une zone réservé dans le fichier Blob (.prb) associé à la base produit,
"Image" le champ définit un blob (Binary Large OBject) de type image,
"Curve" le champ définit un blob (Binary Large OBject) de type courbe.
- Longueur définit la longueur en octets de ce champ.
- Localisation définit où sera enregistré ce champ. Un champ peut être spécifique à chaque produit, on dira qu ’il est de type " Prd " et donc enregistré dans le fichier .prd, ou être commun à tous les produits d ’un même lot, on dira qu ’il est de type " Lot " et donc enregistré dans le fichier .lot
- Pour un champ de type " Measure ", le champ Unité donne l ’unité associèe à la mesure. Par exemple : kg, Volt, ... Pour un champ de type Blob [2] le champ Structure définit la structuration des données dans le Blob: Void, List, Vector, Array, Graph, Curve.
- Pour un champ de type " Measure ", le champ Minimum indique la valeur minimale par défaut associée à cette mesure. Cette valeur minimale est une donnée de type Lot implicite qui est enregistrée dans le fichier .Lot. Cette valeur est utilisée par certain module pour déterminer l ’intervalle de tolérance associé. Une " * " accolée à un champ minimum indique que chaque produit peut avoir une consigne différente, inversement en l ’absence de cette étoile, tous les produits appartenant à un même lot auront la même consigne. Pour un champ de type Blob le champ type précise le type des données élémentaires enregistrées dans le Blob.
- Pour un champ de type " Measure ", le champ Maximum indique la valeur maximale par défaut associée à cette mesure. Cette valeur maximale est une donnée de type Lot implicite qui est enregistrée dans le fichier .Lot. Cette valeur est utilisée par certain module pour déterminer l ’intervalle de tolérance associée. Une " * " accolée à un champ maximum indique que chaque produit peut avoir une consigne différente, inversement, en l ’absence de cette étoile, tous les produits appartenant à un même lot auront la même consigne.
- Le champ Index permet d ’indiquer à Sisal qu ’il faut maintenir un index associé à ce champ, le " * " accolé à l ’index indique qu ’il est du type à valeur unique, le « + » accolé à l'index indique qu'il est de type à valeur unique réallouable [3] . Les index peuvent être appliqués à des champs de type : Int, Date, Float ou String. Le champ Index est un numéro compris entre 1 et 9, il permet à Sisal de maintenir les fichiers index associés à la base produit d ’extension .p1d à .p9d. Les Index sont exploités par les méthodes de base-produit.
- Le champ description permet de donner une description par défaut du champ ou une liste ( entourée par { et }) de description pour chacune des langues définies dans l'application.
Les champs standard de base produit sont :
|
Nom |
Type |
Long. |
Loc. |
Description |
|---|---|---|---|---|
|
Date |
Date |
4 |
Prd |
Date de création du produit |
|
Lot |
Int |
4 |
Prd |
Numéro de lot, renvoi au lot de rang lot dans le fichier associé .lot |
|
Defect |
Int |
2 |
Prd |
Numéro de défaut associé au produit. Un produit peut avoir au plus un défaut. La valeur 0 signifie que le produit n ’est pas défectueux. |
|
Range |
Range |
n * 4 |
Prd |
Gamme opérationnelle du produit, c ’est à dire ensemble des opérations qui ont d ’ores et déjà été effectuées sur le produit. |
|
Begin |
Date |
4 |
Lot |
Date de création du premier produit dans ce lot |
|
End |
Date |
4 |
Lot |
Date de création du dernier produit dans ce lot |
|
Model |
String |
32 |
Lot |
Nom de la référence associé à ce lot |
|
Mreq |
String |
32 |
Lot |
Nom de la série de fabrication associée à ce lot |
|
Flow |
Range |
n*4 |
Lot |
Gamme fonctionnelle associée à ce lot |
Les champs d ’une base-produit sont figés à la création de la base-produit, si on doit rajouter de nouveaux champs temporairement une solution est de créer une nouvelle base-produit complémentaire à la base courante.
Généralement pour chaque produit créé sur la ligne d ’assemblage, on crée un nouvel enregistrement dans la base-produit, on ne peut ni supprimer, ni déplacer un enregistrement. Tous les champs de l ’enregistrement ne sont pas nécessairement définis à la création, on peut mettre à jour ultérieurement tous les champs applicatifs et les champs " Defect " et " Range ", y compris en les indéfinissant. On peut enregistrer un produit avec un champ indexé non défini (dans ce cas il n ’est pas indexé), puis le définir ultérieurement. Par contre il est déconseillé de modifier des champs indexés déjà valorisés, l ’index peut devenir erroné.
La base-produit crée sur le disque les fichiers de nom le nom de la base-produit et d ’extension .prd pour les données propres à chaque produit, .lot pour les données associées aux lots et .p1d à .p9d pour les index. Ces fichiers peuvent être copiés sur tous supports afin d ’être exploités sur un autre ordinateur Sisal.
Paramétrage des Blobs
Le paramètrage des blobs nécessite des paramètres supplémentaires.
Blob Void
Le Blob de type void est un objet binaire sans aucune structuration interne. On le déclare ainsi:
NomDeChamp = Blob ; 4 ; Localisation ; Void
On y accède seulement avec les fonctions NewBlob, ReadBlob et WriteBlob.
Blob String et Html
Un blob de type string ou html est une chaine de caractère de longeur quelconque. Elle contient une chaine de caractère encodée au format utf-8. On la déclare ainsi
NomDeChamp = Blob ; 4 ; Localisation ; String
NomDeChamp = Blob; 4; Localisation; Html
Dans l'implémentation il s'agit d'un Blob quelconque qui est accéder avec les fonctions NewBlob, ReadBlob et WriteBlob. Il n'est pas impératif d'appeler la fonction NewBlob avant d'appeler WriteBlob, car ce dernier réalloue automatiquement le blob dans le cas ou il serait de taille insuffisante.
Dans l'outil de recherche on ne peut pas faire de sélection sur leur contenu mais on peut les visualiser, en particulier en Html.
Le gros intérêt est de pouvoir associer des commentaires longs pour certains enregistrements et de ne pas consommer d'espace pour les autres.
Blob List
Le Blob de type Liste permet d'enregistrer une liste de valeurs élémentaires d'un type donné.
NomDeChamp = Blob ; 4 ; Localisation ; List; Type
Avec type pouvant être Byte, Word, Int, Float et Date.
Blob Vector
Le Blob de type Vector permet d'enregistrer une liste de valeurs flottantes élémentaires enregistrées dans un type donné.
NomDeChamp = Blob ; 4 ; Localisation ; Vector; Type; {Limite inférieure; Limite supérieure}
Avec type pouvant être Byte, Word et Float.
Les données enregistrées sont des flottants qui peuvent être recalibrés dans le domaine d'un type particulier afin de minimiser l'espace occupé sur le disque. Pour cela on définit les limites inférieures et supérieures qui permettent de calculer les paramètres de la transformation linéaire adéquate:
Valeur_compactée = valeur_réelle * coefficient + décalage
Si lors de l'enregistrement, une donnée sort du domaine, aucune erreur ne sera générée mais la valeur compactée sera la borne la plus proche du domaine.
Blob Array
Le Blob de type Array permet d'enregistrer un tableau à deux dimensions de valeurs flottantes élémentaires enregistrées dans un type donné.
NomDeChamp = Blob ; 4 ; Localisation ; Array; Type; { MinX; MaxX; MinY; MaxY}
Avec type pouvant être Byte, Word et Double.
Les données enregistrées sont des flottants qui peuvent être recalibrés dans un domaine d'un type particulier afin de minimiser l'espace occupée sur le disque (cf.Blob Vector).
Blob Graph
Le Blob de type Graph permet d'enregistrer un graphique simple ; c'est en fait une suite de point ( X, Y) dont les valeurs de X sont strictement croissantes et séparées par des incréments constants .
NomDeChamp = Blob ; 4 ; Localisation ; Graph; Type; X0; dX; MinY; MaxY
Avec type pouvant être Byte, Word et Double.
Les données enregistrées sont des flottants qui sont recalibrés dans un domaine d'un type particulier afin de minimiser l'espace occupée sur le disque (cf.Blob Vector).
Blob Curve
Le Blob de type Curve permet d'enregistrer une courbe quelconque ; c'est à dire une suite de points ( X, Y) qui n'ont pas de contrainte particulière sur les X. Contrairement à un graphe, une courbe peut très bien présenter des retours en arrière sur l'axe des X; par exemple une courbe pourra représenter un " 8 ", mais un graphe ne le pourra pas.
NomDeChamp = Blob ; 4 ; Localisation ; Curve; Type; MinX; MaxX; MinY; MaxY
Avec type pouvant être Byte, Word et Double.
Les données enregistrées sont des couples de flottants qui peuvent être recalibrés dans un domaine d'un type particulier afin de minimiser l'espace occupée sur le disque (cf.Blob Vector).
Paramétrage des Images
Le paramètrage des images permet de définir le format de stockage des images ; par défaut le format de stockage est celui du tableau de tous les pixels de l'image (RAW).
NomDeChampImage = Image ; 4 ; Localisation ; Format ; Commentaire
Les formats reconnus sont identifiés par leur codage :
BMP, PNG, JPEG et XPM .
Paramétrage des Courbes
Les courbes nécessitent des informations complémentaires.
NomDeChampCourbe = Curve ; 4 ; Localisation ; Type; UniteX; MinX; MaxX; UniteY; MinY; MaxY; Commentaire
L'implémentation est semblable à celle des blobs-Curve, avec la possibilité de déclarer les unités de l'abscisse et de l'ordonnée.
[1] Le format de date utilisé est le format de date standard de Windows, c ’est à dire le nombre de secondes écoulées depuis le 1/1/1970 en Temps Universel. Des dates ultérieures Au 19 janvier 2038 à 3h17m17s en Temps Universel ne sont pas gérables, ni comparables.
[2] A partir de la version 2.7
[3] A un instant donné au plus un enregistrement peut-être accédé par une valeur particulière, c'est le dernier enregistrement à avoir été créé avec cette valeur de clé.