Debulking Configuration
Debulker no tiene comprensión intrínseca de lo que está desagregando; puede usarse para dividir cualquier archivo estructurado. Para poder procesar un archivo suministrado, debe proporcionarse una configuración adecuada.
La configuración para un archivo dado le dirá al Debulker:
-
Tipo de estructura del archivo (por ejemplo, XML, JSON)
-
Schema a usar para la validación opcional
-
Jerarquía de elementos anidados
El ejemplo siguiente es de un archivo XML que contiene un mensaje pain.001 con dos elementos de Payment Information, cada uno conteniendo dos elementos de Credit Transfer Transaction Information.
<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 desagregar el pain.001.001.09 de arriba y extraer los elementos individuales de Credit Transfer Transaction Information, el Debulker usaría la siguiente configuración.
Ejemplo de configuración ISO pain.001.001.09
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 daría lugar a 7 elementos de datos en el Component store:
-
Componente Document sin elementos hijo PmtInf
-
Dos componentes PmtInf sin elementos hijo 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 padre en la jerarquía.
Housekeeping Configuration
La configuración de housekeeping permite especificar cómo limpiar archivos después del procesamiento o cuando un debulk es rechazado.
A continuación hay una tabla de las propiedades dentro de la configuración housekeeping.
| Property | Type | Default | Description |
|---|---|---|---|
|
boolean |
Especifica si se deben eliminar todos los componentes asociados a un Bulk ID tras un procesamiento exitoso. |
|
|
boolean |
Especifica si se deben eliminar todos los componentes asociados a un Bulk ID tras un procesamiento fallido. |
|
|
enum |
Especifica qué hacer con el archivo fuente agrupado al ser rechazado. Uno de |
|
La configuración de housekeeping puede añadirse bajo ipf.debulker o en configuraciones específicas de debulk bajo ipf.debulker.configurations[]. Los ajustes configurados en una configuración específica de debulk tendrán prioridad sobre los especificados bajo ipf.debulker.
Si no se añade ninguna configuración de housekeeping, se usarán los valores por defecto.
A continuación hay un ejemplo de configuración. conf-1 sobreescribe los valores especificados a nivel raíz, mientras que conf-2 usará la configuración especificada bajo ipf.debulker. Si elimináramos ipf.debulker.housekeeping entonces conf-2 usaría los valores por defecto.
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
}
]
}