Ajout d'une configuration personnalisée à un module de service BOD
Pour les structures de données de configurations plus complexes ne pouvant pas être représentées facilement par des paires nom-valeur (par exemple, structures lourdes, données imbriquées), vous pouvez fournir votre propre fichier et analyseur de configuration. Ceci implique un travail supplémentaire pour le développeur mais procure une flexibilité totale - n'importe quel type de fichier de configuration peut être lu, analysé et extrait dans le code Java de votre module de service.
Procédure
-
Créez des fichiers de configuration dans workspace_dir\WC\xml\config\servicemodulename-ext\. Le nom du fichier (hormis le type de fichier .suffix) doit correspondre au nom de l'interface de la classe d'analyseur définie pour lire le fichier. Bien que XML soit le format suggéré pour le fichier de configuration, vous pouvez utiliser celui de votre choix (rappelez-vous que vous devez composer un analyseur pour ce fichier).
- Si votre fichier de configuration suit le format XML, créez un fichier XSD pour ce fichier. Placez le fichier dans le répertoire workspace_dir\WC\xml\config\servicemodulename-ext\xsd.
- Créez les classes d'interface et d'implémentation pour l'analyse des informations de configuration. La classe d'implémentation doit étendre
AbstractConfigurationImpl, comme illustré dans l'exemple de diagramme de classe ci-dessous. Ce diagramme présente une classe d'analyseur qui extraie des données personnalisées depuis un fichier de configuration personnalisé à l'aide des méthodes arbitrairesgetMapGroups()etgetGroupRelationships(), choisies à titre d'exemple.
- Votre classe Java doit implémenter votre interface. Placez les méthodes sur l'interface que vous devrez appeler pour extraire des données dans votre code Java.
- Vous devez implémenter les méthodes
getInterfaceName(),loadConfig(InputStream aConfigFile, Map aConfigMapping)etisOverridable().
- Appelez la nouvelle interface dans votre code.
String compId = "com.myco.myservicemodule"; ComponentConfiguration config = ComponentConfigurationRegistry.instance().getComponentConfiguration(compId); List configNodes = (List) config.getComponentConfiguration(SampleCustomExtendedConfig.class.getName()); pour (int i=0; i<configNodes.size(); i++) { SampleCustomExtendedConfig sampleConfig = (SampleCustomExtendedConfig) configNodes.get(i); HashMap mapGroups = sampleConfig.getMapGroups(); }