Bonjour,
Actuellement pour configurer les données de notre logiciel nous avons un fichier de classe.
Ce dernier contient une partie lier à la création du fichier, la version etc..
Et une autre partie qui contient les données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #------------------------------------------------------------------------------- #Author : Moi #Company : Notre companie #Description : Descriptors of the object types managed by the supervision. # Used to build the Configuration data base. #Release Info : $Archive: /classes.txt $ # $Revision:2 $ # $Date: 2010/02/03 9:53 $ #------------------------------------------------------------------------------- $Compliance = 3.00 #-------------------------------------------------------------------------------
C'est données sont classées en 3 groupes.
le 1er c'est le nom de l'objet, suivi d'un descriptif, ensuite se sont les commandes pour lire et écrire les données dans notre supervision (automate)
Ensuite les données que contient l'objet. En 2 groupes, Data et Configuration. Il se peut d'un objet n'est que Data ou que Configuration, ou les 2 comme le court exemple ci dessous.
Notre logiciel se configure donc à la lecture de ce fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #------------------------------------------------------------------------------- ObjDesc = Al, Alarm, RDT, WDT, RCG, WCG DataAtt = Al, Active, Active, -1, Enum, 0:False/1:True DataAtt = Al, Raised, Raised, -1, Enum, 0:False/1:True DataAtt = Al, ACKable, Alarm can be acknowledged (Write 0 to acknowledge), 1, Enum, 0:False/1:True CfgAtt = Al, Level, Severity level, 2, Enum, 0:URGENT/1:NON URGENT/2:INFORMATIVE/3:HIDDEN/4:NOT MANAGED CfgAtt = Al, Label, Label, 2, String, 10 #------------------------------------------------------------------------------- ObjDesc = AG, Group of alarms (up to 32), RDT, WDT, RCG, WFG DataAt = AG, Active, Bitfield of active alarms, -1, Enum, 0:False/1:True DataAt = AG, ACKable, Bitfield of alarms can be acknowledged (Write 0 to acknowledge), 1, Enum, 0:False/1:True CfgAtt = AG, Level, Severity level, 2, Enum, 0:URGENT/1:NON URGENT/2:INFORMATIVE/3:HIDDEN/4:NOT MANAGED CfgAtt = AG, Label, Label, 2, String, 8 CfgAtt = AG, DelayUnit, Delay unit, 2, Enum, 0:Seconds/1:Minutes #-------------------------------------------------------------------------------
Dans le cadre de l’évolution de nos logiciels vers le .net, j'aurais aimer basculer ce fichier vers de l'XML.
Quelque chose qui ressemblerai à cela:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 <CONF> <produit>MonProduit</produit> <author>Moi</author> <descript>Decriptor of Object ... </descript> <releaseinfo> ...........</releaseinfo> <rev>1.0.1</rev> <date>2014/05/20 13:51</date> <compliance>3.0<compliance> </CONF> <OBJ> <desc name = Al > <name>Alarm</name> <readdat>RDT</readdat> <recdat>WDT</recdat> <readconf>RCG</readconf> <recconf>WCG</recconf> <data> <dt name = active> <desc>Active</desc> <niv>0</niv> <type>ENUM</type> <info>0:False/1:True</info> <classe>3.0</classe> <tpclas>1</tpclas> </dt> <dt name = Raised> <desc>Raised</desc> <niv>-1</niv> <type>ENUM</type> <info>0:False/1:True</info> <classe>3.0</classe> <tpclas>1</tpclas> </dt> <dt name = ACKable> <desc>Alarm can be acknowledged (Write 0 to acknowledge)</desc> <niv>-1</niv> <type>ENUM</type> <info>0:False/1:True</info> <classe>3.0</classe> <tpclas>1</tpclas> </dt> </data> <cfg> <dt name = Level> <desc>Severity level</desc> <niv>2</niv> <type>ENUM</type> <info>0:URGENT/1:NON URGENT/2:INFORMATIVE/3:HIDDEN/4:NOT MANAGED</info> <classe>3.0</classe> <tpclas>1</tpclas> </dt> <dt name = Label> <desc>Label</desc> <niv>2</niv> <type>String</type> <info></info> <classe>3.0</classe> <tpclas>1</tpclas> </dt> </cfg> </desc> <desc name = AG> <name>Group of alarms (up to 32)</name> <readdat>RDT</readdat> <recdat>WDT</recdat> <readconf>RCG</readconf> <recconf>WCG</recconf> <data> <dt name = active> <desc>Bitfield of active alarms</desc> <niv>-1</niv> <type>ENUM</type> <info>0:False/1:True</info> <classe>3.0</classe> <tpclas>1</tpclas> </dt> <dt name = ACKable> <desc>Bitfield of alarms can be acknowledged (Write 0 to acknowledge)</desc> <niv>-1</niv> <type>ENUM</type> <info>0:False/1:True</info> <classe>3.0</classe> <tpclas>1</tpclas> </dt> </data> <cfg> <dt name = Level> <desc>Severity level</desc> <niv>2</niv> <type>ENUM</type> <info>0:URGENT/1:NON URGENT/2:INFORMATIVE/3:HIDDEN/4:NOT MANAGED</info> <classe>3.0</classe> <tpclas>1</tpclas> </dt> <dt name = Label> <desc>Label</desc> <niv>2</niv> <type>String</type> <info></info> <classe>3.0</classe> <tpclas>1</tpclas> </dt> </cfg> </desc> </OBJ>
J'ai ajouté aux fichiers d'origine <classe> et le <tpclas> Pour gérer à partir de quelle classe on utilise cette attribut. Par exemple à partir de cette classe on peut l'utilisé, ou jusqu’à cette classe, ou cette classe uniquement etc.. la n'est pas le souci.
Dans tout les cas chaque objet aura donc les même informations pour chaque attribut, mais la quantité de données varie complètement ainsi que le nom de chaque attributs par exemple l'attribut "Label" on le retrouve régulièrement mais d'autre sont différents.
Je deja travaillé un peu avec du XML avec XMLDocument, XPATH. Mais j'arrive pas à voir pour ce genre de document comment le gérer. J'aurai un accès en lecture principalement mais aussi en écriture pour ajouter des attributs suivant l'automate en face lors des mise à jour par exemple.
Déjà au niveau code je pensais faire une gestion de ces données dans des classes sérialisable stockées dans des collections ou dictionnaire. Une collection pour la configuration et une pour les data.
Pourquoi j'ai décidé de basculer sur du XML? Dans l'avenir ont souhaiterais faire un serveur WEB qui utilise ce fichier. Le serveur Web (php ou autre) se substituant à nos logiciels actuel en grande parti. Afin qu'une les fonctionnalités courante soit accessible depuis n'importe quel navigateur ou OS.
Je ne sais pas si le XML est le meilleur choix et si le brouillon que j'ai laissé au dessus est exploitable facilement.
Partager