...
Se Implementan los siguientes métodos protected en la clase “BasicModule” para la obtención del valor de parámetros del módulo y parámetros adicionales definidos por el usuario, que permite la descripción de esos valores de forma dinámica.
Método getObligatoryParameter:
protected String getObligatoryParameter(
HashMap moduleParameters,
String moduleName,
String paramName,
ParamValueValidator validator,
String defaultValue,
boolean traceParam)
throws ObligatoryParameterNotSetException,
InvalidModuleInputParameterException,
EvalRegExprInputParameterException {
El método devuelve el valor del parámetro indicado.
Si el parámetro es obligatorio y no viene informado se lanza la excepción à ObligatoryParameterNotSetException
Si el valor es una expresión regular y falla la obtención del valor se devuelve à EvalRegExprInputParameterException
Si el parámetro está mal informado se devuelve à InvalidModuleInputParameterException
Método getOptionalParameter:
protected String getOptionalParameter(
HashMap moduleParameters,
String moduleName,
String paramName,
ParamValueValidator validator,
String defaultValue,
boolean traceParam)
throws InvalidModuleInputParameterException,
EvalRegExprInputParameterException {
El método devuelve el valor del parámetro indicado.
Si el valor es una expresión regular y falla la obtención del valor se devuelve à EvalRegExprInputParameterException
Si el parámetro está mal informado se devuelve à InvalidModuleInputParameterException
Descripción
El módulo Orchestrator implementa la funcionalidad de parámetros dinámicos que puede ser utilizar en el parámetro de cualquier módulo de la solución.
Los parámetros dinámicos que se permiten en los dos métodos anteriores son:
- Una constante
- Un context attribute à @ATTattribute -> @{FIELD} where FIELD could beuid à @ATT donde el campo FIELD podría ser:
- uid > @{uid}
- externalUID à @ATT-> @{externalUID}sender à
- @ATTsender -> @{sender}
- receiver à @ATTreceiver -> @{receiver}serviceName à
- @ATTserviceName -> @{serviceName}
- scenarioName à @ATTscenarioName -> @{scenarioName}
- Payload content of module en claro à claro -> @MODULE{moduleName}.
- Payload content of module en Base64 à Base64 -> @MODULE_ENCODEB64{ moduleName }
Si el moduleName es “actual à -> Devuelve el contentido del mensaje de entrada en el módulo. Ej: @MODULE{actual}
- Un context parameter à parameter -> @PARAM{ParamName}
- Un session context parameter à parameter -> @S_PARAM{ParamName}
- Un XPATH expression àexpression ->
- @XPATH{xpath expression}: Valor del XML de entrada en el módulo (Actual XML)
- @XPATH_EXISTS{ xpath expression} Indica si la expresión XPATH existe o no en el XML de entrada en el módulo (Actual XML). Devuelve “true” en caso de encontrarlo y “false” en caso contrario.
- @XPATH_ENCODEB64{xpath expression}: Valor del XML de entrada en el módulo (Actual XML) codificado en Base64.
- @XPATH_DECODEB64{xpath expression}: Valor del XML de entrada en el módulo (Actual XML) decodificado de Base64.
- @XPATH(moduleName){xpath expresion}: Valor del XML del module “moduleName”
- @XPATH_EXISTS(moduleName){ xpath expression} Indica si la expresión XPATH existe o no en el XML del module “moduleName”. Devuelve “true” en caso de encontrarlo y “false” en caso contrario.
- @XPATH_ENCODEB64(moduleName){xpath expresion}: Valor del XML del module “moduleName” codificado en Base64.
- @XPATH_DECODEB64(moduleName){xpath expresion}: del XML del module “moduleName” decodificado de Base64
...
- Un MAP à La variable “mapEntry” definida a continuación, puede declararse con cualquiera de los valores dinámicos definidos.
- @MAP[mapID][mapEntry]: Valor (mapEntry) de un MAPA (mapID) definido para el módulo actual de entrada en el módulo.
- @MAP(moduleName)[mapID][mapEntry]: Valor (mapEntry) de un MAPA (mapID) definido para un módulo con nombre “moduleName”.
...
Un ejemplo de configuración y uso de @MAP sería:
...
xmltransform.codigosefact_value[3]= ESB12345000003
Otras formas de uso de los mapas
Los siguientes métodos definidos (getAdditionalData y getAdditionalDataKeygetAdditionalData y getAdditionalDataKey) son otras formas de uso de los mapas que también están en los módulos.
Método
...
getAdditionalData
...
String paramPrefix) throws InvalidModuleInputParameterException {
Este método devuelve el hashMap de los nombres y valores de los parámetros incrementales con el “paramPrefix” especificados, teniendo en cuenta que irán por parejas “_name”, “_value” más el [index].
...
- metadata_value[1] = “valor1”
Método getAdditionalDataKey
...
Este método devuelve el valor del “paramName” dado (actúa como key del hashmap), de entre valores de los parámetros incrementales con el “paramPrefix” especificados, teniendo en cuenta que irán por parejas “_name”, “_value” más el [index].
Este ”paramName” puede ser uno de los valores especificados en el punto Método getOptionalParameterpunto de Parámetros Dinámicos. Si se especifica un valor DEFAULT, se escogerá este si no encuentra ninguno.
Ejemplo para uso de certificados en módulo “wscall”. Parámetros a definir en el Adapter:
...
- wscall.certificados_value[n] = CertificadoN
Ejemplo para uso de múltiples “hashmaps” en el módulo de documentum.
...
- documdfs.user_value[1]=usuario_default
Métodos comunes para gestión de contexto y parámetros:
Nuevas clases creadas
Para implementar los métodos de obtención de parámetros se han creado las siguientes clases:
En el paquete de clases “com.realtech.efact.j2ee.ejb.adapter.orch.modules.core.extensions.module.params”:
- ParamValueValidator.java
- DefaultParamValueValidator.java
- ParamValueRegexp.java
En el paquete de clases “com.realtech.efact.j2ee.ejb.adapter.orch.modules.core.extensions.module.params.exceptions”:
- ObligatoryParameterNotSetException.java
- InvalidModuleInputParameterException.java
- EvalRegExprInputParameterException.java
Estas clases se han añadido a la Parte Pública (PP) “orch_api” del DC “efact/j2ee/ejb/adapter/orch”
Nuevos mensajes de trazabilidad definidos
Se añaden nuevos mensajes asociados a la obtención del valor de los parámetros. Por lo tanto se añaden entradas en:
...
Método persistContext
Este método gestiona la persistencia del XML (Payload) en el contexto desde cada módulo. Para ello, en el módulo, se configurará, de forma opcional, el parámetro “set_payload_to_context”. Existen varias opciones de configuración, que se detallan a continuación:
- “X”: Valor por defecto por retro-compatibilidad (Comportamiento actual). Se persiste el payload del módulo a la salida.
- "-": No vuelque nada al contexto
- @XPATH{xpath expression}: Selecciona el contenido de la etiqueta indicada por el valor XPATH y guarda ese contenido como salida del módulo.
- @GetNodeContent{xpath expression}: Obtiene el XML contenido dentro del nodo indicado por la expresión XPATH y la persiste como salida del módulo.
Método setParamsToContext
Este método gestiona la persistencia de un parámetro en una variable de sesión o de contexto desde cada módulo. Para ello, en el módulo, se configurará, de forma opcional, el parámetro “set_param_to_context”. Los posibles valores de configuración son:
- Un context parameter @PARAM{ParamName, Value}
- Un session context parameter @S_PARAM{ParamName, Value}
Donde value puede ser:
- una constante
- @XPATH{xpath expression}
De esta manera se darán de alta un valor por modulo. Si es necesario dar de alta más valores se debe usar la configuración de MAP:
- @MAP[PARAM]. Se deben definir los valores de ese MAP, de modo que se guardarán en variables de contexto. La configuración sería:
- .set_param_to_context_name[0]= nombreDelParametroEnElHashMap
- .set_param_to_context_value[0]= valorDelParametroEnElHashMap. Puede ser:
- una constante
- @XPATH{xpath expression}
- ….
- set_param_to_context_name[n]=nombreDelParametroEnElHashMap
- .set_param_to_context_value[n]= valorDelParametroEnElHashMap. Puede ser:
- una constante
- @XPATH{xpath expression}
- @MAP[S_PARAM]: Se deben definir los valores de este MAP, de la la misma forma que para el hashmap anterior (@MAP[PARAM]), pero cuyos valores se guardarán en variables de sesión.
Posteriormente, en otros módulos, se podrán utilizar estos valores recuperándolos con la sentencia @PARAM o @S_PARAM del orchestrador.
La lista de módulos que permiten la gestión del contexto y parámetros mediante los dos métodos anteriores es:
xmltransf; htmlvisor; wscall; exbinary; imxml; invoice/certdata; ocspcheck; pdfsign; sendfile; xmlsign; xpathb64; zipextract