Añadir una configuración personalizada a un módulo de servicio de BOD

En el caso de estructuras de datos de configuración más complejas, que no se pueden representar fácilmente como parejas de nombre-valor (por ejemplo, datos anidados con estructuras muy rígidas), puede proporcionar su archivo y analizador de configuración propios. Esto requiere más trabajo del desarrollador, pero es completamente flexible - cualquier tipo de archivo de configuración podrá leerse, analizarse y recuperarse en el código Java del módulo de servicio.

Procedimiento

  1. Cree un archivo de configuración en workspace_dir\WC\xml\config\servicemodulename-ext\. El nombre del archivo (que no incluye el tipo de archivo .suffix) debe coincidir con el nombre de la interfaz de clase de analizador que defina para leer el archivo. Aunque el formato sugerido para el archivo de configuración es XML, se puede utilizar cualquier formato (recuerde que debe escribir un analizador para este archivo).
    1. Si el formato del archivo del archivo de configuración es XML, cree una XSD para el archivo de configuración. Colóquelo en el directorio workspace_dir\WC\xml\config\servicemodulename-ext\xsd.
  2. Cree las clases de interfaz y de implementación para analizar la información de configuración. La clase de implementación debe ampliarse desde AbstractConfigurationImpl tal como se muestra en el diagrama de clases de ejemplo siguiente. En el diagrama se ilustra una clase de analizador que recupera datos personalizados de un archivo de configuración personalizado, utilizando los métodos getMapGroups() y getGroupRelationships(), que son métodos arbitrarios elegidos como ejemplos.

    Diagrama de clase de un analizador de configuración personalizada.
    1. La clase Java debe implementar la interfaz. Coloque los métodos en la interfaz que tendrá que llamar para recuperar datos en el código Java.
    2. Debe implementar los métodos getInterfaceName(), loadConfig(InputStream aConfigFile, Map aConfigMapping) y isOverridable().
  3. Llame a la nueva interfaz en el código.
    String compId = "com.myco.myservicemodule";
    ComponentConfiguration config = ComponentConfigurationRegistry.instance().getComponentConfiguration(compId);
    
    List configNodes = (List) config.getComponentConfiguration(SampleCustomExtendedConfig.class.getName());
    para (int i=0; i<configNodes.size(); i++)
    {
    	SampleCustomExtendedConfig sampleConfig = (SampleCustomExtendedConfig) configNodes.get(i);
    	HashMap mapGroups = sampleConfig.getMapGroups();		
    }