Debulking Configuración
Debulker no tiene un entendimiento intrínseco de lo que es debulking, se puede utilizar para dividir cualquier archivo estructurado. Para poder procesar un archivo suministrado, se debe proporcionar la configuración adecuada.
La configuración para un archivo dado indicará el Debulker:
-
Tipo de estructura del archivo -(ej. XML, JSON)
-
Esquema a utilizar para la validación opcional
-
Jerarquía de elementos anidados
La muestra a continuación es de un XML file conteniendo un pain. 001 mensaje de dos elementos de Información de Pago, cada uno conteniendo dos elementos de Información de Transacción de Transferencia de Crédito.
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain. 001. 001. 09">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>abc</MsgId>
</GrpHdr>
<PmtInf>
<PmtInfId>1</PmtInfId>
<NbOfTxs>2</NbOfTxs>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>1</EndToEndId>
</PmtId>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>2</EndToEndId>
</PmtId>
</CdtTrfTxInf>
</PmtInf>
<PmtInf>
<PmtInfId>2</PmtInfId>
<NbOfTxs>2</NbOfTxs>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>3</EndToEndId>
</PmtId>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>4</EndToEndId>
</PmtId>
</CdtTrfTxInf>
</PmtInf>
<SplmtryData>
<Envlp/>
</SplmtryData>
</CstmrCdtTrfInitn>
</Document>
Para debulk el pain. 001. 001. 09 anterior y extraiga los elementos individuales de Información de Transacción de Transferencia de Crédito, el Debulker utilizaría la configuración a continuación.
ISO pain. 001. 001. 09 Ejemplo de Configuración
ipf.debulker {
configurations = [
{
# Name of the configuration which will be used as a reference for retrieving debulk configuration.
name = "pain. 001. 001. 09"
# Name of the splitter which will be used for creating components from the bulk stream
splitter = "XML"
# Optional config value that will enable validation of a file against a Schema prior to debulking
validate-before-debulk.schema-bean-name = "pain001Schema"
# The processing entity associated with this configuration which will be be used in the processing context of the initiated flow
processing-entity = "debulker"
# The directory or s3 bucket that the files will be copied to after processing.
archive-path = "/tmp/archive"
# A tree structure of the bulk elements which will be extracted as separate components to be stored in the ComponentStore."
component-hierarchy {
marker = "Document"
children = [
{
# Relative path from parent node to child node
marker = "CstmrCdtTrfInitn. PmtInf"
children = [
{
marker = "CdtTrfTxInf"
}
]
}
]
}
}
]
}
Esta configuración llevaría a 7 elementos de datos en el Component store:
-
Componente de documento sin elementos hijos PmtInf
-
Dos componentes PmtInf sin elementos hijos CdtTrfTxInf, con la referencia a un componente Document padre.
-
Cuatro componentes CdtTrfTxInf, con referencias a sus componentes PmtInf padres, y también referencia a todos los componentes padres en la jerarquía.
Configuración de Mantenimiento
La configuración de mantenimiento permite especificar cómo limpiar archivos después del procesamiento o cuando un debulk es rechazado.
A continuación se presenta una tabla de las propiedades dentro de la housekeeping configuración.
| Propiedad | Tipo | Predeterminado | Descripción |
|---|---|---|---|
|
boolean |
Especifica si se deben eliminar todos los componentes asociados con un Bulk ID tras el procesamiento exitoso. |
|
|
boolean |
Especifica si se deben eliminar todos los componentes asociados con un Bulk ID al failed procesamiento. |
|
|
enum |
Especifica qué hacer con el bulk archivo fuente tras el rechazo. Uno de |
|
La configuración de limpieza puede ser añadida bajo ipf.debulker o en específico debulk configuraciones bajo ipf.debulker.configurations[]. La configuración establecida en un específico debulk la configuración tendrá prioridad sobre las especificadas bajo ipf.debulker.
Si no se añade ninguna configuración de limpieza, se utilizarán los valores predeterminados.
A continuación se muestra un ejemplo de configuración.conf-1 anula los valores especificados a nivel raíz, mientras que conf-2 utilizará la configuración especificada bajo ipf.debulker. Si eliminamos ipf.debulker.housekeeping entonces conf-2 utilizaría la configuración predeterminada.
ipf.debulker {
housekeeping {
clean-component-store {
on-successful-processing = false,
on-failed-processing = false,
}
source-file-action-on-reject = "NO_ACTION" # DELETE or ARCHIVE
}
configurations = [
{
name = "conf-1"
housekeeping {
clean-component-store {
on-successful-processing = true,
on-failed-processing = true,
}
source-file-action-on-reject = "ARCHIVE"
}
},
{
name = "conf-2"
# will default to ipf.debulker.housekeeping
}
]
}