Referencia de reglas
Un enrutamiento tiene dos partes: General, con las opciones de barrido y de log, y FileMatching, con la lista de reglas. En el modo base de datos, el enrutamiento se mantiene en el Riversoft® Console Portal y puede exportarse con -export. En el modo archivo local, es un archivo JSON creado a partir del modelo example-config_rules.json.
{
"General": { "Name": "ENTRADA", "ScanDir": "/buzon/IN", "LogLevelOnSuccess": 6, "LogLevelOnError": 1 },
"FileMatching": [
{
"Index": 0,
"Name": "NOTAS",
"FileRegEx": "^NOTAS.*\\.TXT$",
"General": { "SourceUser": "SOCIO", "WeekDayInterval": 127, "EndDateHour": 23, "EndDateMinute": 59, "EndDateSecond": 59 },
"Filename": { "RenameFileTo": "" },
"Copy": { "CopyToDir": "/buzon/OUT", "CopyFileOption": 13 },
"Backup": { "BkpToDir": "/backup/notas", "BkpFileOption": 4 }
}
]
}Los campos de texto aceptan expresiones regulares en la sintaxis RE2. Los campos numéricos marcados como opciones son sumas de valores: para combinar opciones, sume los valores, por ejemplo 1 + 4 + 8 = 13.
General del enrutamiento
| Campo | Descripción |
|---|---|
Name, Description | Nombre y descripción del enrutamiento. |
ScanDir | Directorio del barrido. La opción -scan tiene prioridad. |
ScanSubDir | 0: solo el directorio; 1: solo los subdirectorios; 2: el directorio y los subdirectorios. Las opciones -nosubdir, -subdir y -subdir2 tienen prioridad. |
ScanDirRegEx, ScanDirRegExNeg | Expresiones que incluyen o excluyen directorios del barrido. |
ScanFileRegEx, ScanFileRegExNeg | Expresiones que incluyen o excluyen archivos del barrido. |
ScanFirstRule | Número (Index) de la primera regla evaluada. Predeterminado: 0. |
ScanLockSem | Nombre del semáforo que impide dos barridos simultáneos con el mismo nombre. |
ScanLockSemTimeout | Tiempo máximo de espera por el semáforo, en milisegundos. -1 espera sin límite. |
ScanLockSemOptions | Opciones. 1: termina inmediatamente si el semáforo está en uso. |
LogErrorOption | Opciones. 1: registra error cuando el archivo no puede leerse; 2: registra error cuando un directorio no puede leerse. |
LogLevelOnSuccess, LogLevelOnWarning, LogLevelOnInfo, LogLevelOnError | Nivel de los mensajes de éxito, aviso, información y error de las reglas. Predeterminados: 6, 7, 7 y 1. Vea Niveles de los mensajes. |
ScanCheckFileInUse, DelayRetry, MaxRetries | Mantenidos por compatibilidad. No se usan en esta versión. |
Selección del archivo
Cada ítem de FileMatching es una regla. Las reglas se evalúan en el orden de Index, y vale la primera que corresponda al archivo.
| Campo | Descripción |
|---|---|
Index | Número de la regla, a partir de 0, sin huecos. Un hueco termina la evaluación. |
Name, Description | Nombre y descripción de la regla. Disponibles en $RULENAME y $DESCR. |
Locked | 1 bloquea la regla, que pasa a ignorarse. |
FileRegEx | Expresión aplicada al nombre del archivo. |
DirRegEx | Expresión aplicada al directorio del archivo. |
SrcRegEx | Expresión aplicada al origen informado en -src. |
ContentRegEx | Expresión aplicada a las primeras líneas del archivo. El número de líneas se define en General.ContentLinesToRead. |
Un campo vacío acepta cualquier valor.
Nota
Cuando ContentRegEx está completo y el contenido no corresponde, el procesamiento del archivo termina con error, sin evaluar las reglas siguientes. Use FileRegEx y DirRegEx para separar los archivos antes de verificar el contenido.
General de la regla
| Campo | Descripción |
|---|---|
SourceUser, DestinationUser | Usuarios de origen y de destino asociados a la regla. Disponibles en $SRCUSER y $DSTUSER y usados en el registro de los mensajes. |
ExecProgBefore | Comando ejecutado antes de la copia. |
ExecProg | Comando ejecutado después de la copia. |
ExecProgError | Comando ejecutado cuando una etapa falla. |
CheckLockUnlockFileName | Archivo de control verificado antes del procesamiento y eliminado al final. Acepta variables. |
CreateLockUnlockFileName | Archivo de control creado durante el procesamiento. Acepta variables. |
CheckLockUnlockOption | Opciones de los archivos de control. Vea Archivos de control. |
RemoveAfterCopy | 1 elimina el archivo original al final del procesamiento. |
RemoveAfterHours | Con RemoveAfterCopy, elimina el original solo si tiene más horas que el valor informado. 0: lo elimina siempre. |
ProcessAfterSeconds | Antigüedad mínima del archivo, desde la última modificación, para procesarse. El valor se interpreta en milisegundos. 0 lo deshabilita. |
InsertTimestamp | Opciones. 1: agrega la fecha y hora al final del nombre; 2: la agrega al inicio. El separador es .. |
InsertTimestampPart | Origen de la fecha y hora: 0, hora actual; 1, 2 o 3, fecha de modificación del archivo. |
InsertTimestampFormat | Formato de la fecha y hora, escrito con la fecha de referencia 2006-01-02 15:04:05. Ejemplo: 20060102150405 genera AAAAMMDDhhmmss. Vacío: AAAAMMDDhhmmss0mmm. |
DelayNextFileProcess | Pausa después de procesar el archivo, en milisegundos. |
StartDateHour, StartDateMinute, StartDateSecond | Inicio del horario permitido. |
EndDateHour, EndDateMinute, EndDateSecond | Fin del horario permitido. |
WeekDayInterval | Días permitidos: sume 1 (domingo), 2 (lunes), 4 (martes), 8 (miércoles), 16 (jueves), 32 (viernes) y 64 (sábado). 127 o 255: todos los días. |
FileLenOption | Opciones. 1: verifica el tamaño mínimo; 2: verifica el tamaño máximo. |
FileLenMin, FileLenMax | Tamaños mínimo y máximo, en bytes. |
ReplaceFromFileOption | 1 habilita el armado del nombre a partir del contenido (Filename.ReplacesFromFile). |
ContentLinesToRead | Número de líneas leídas para ContentRegEx. |
OtherOption | Opciones. 2: reinicia el número secuencial cada día. |
NextSection | Nombre de la próxima regla a ejecutar sobre el mismo archivo. |
Overwrite | Mantenido por compatibilidad. Para sobrescribir, use las opciones de Copy y Backup. |
Cuando el archivo está fuera del horario, del día, de la antigüedad o del tamaño permitidos, el procesamiento termina con un aviso.
Nuevo nombre (Filename)
El nuevo nombre se arma en este orden:
- Parte de
RenameFileTo. Vacío: el nuevo nombre empieza vacío y, si no se agrega nada, se mantiene el nombre original. - Aplica
ReplacesFromFile, cuando está habilitado enReplaceFromFileOption. - Aplica
Replaces, en orden. - Agrega la fecha y hora, según
InsertTimestamp. - Aplica
ReplacesByRegEx, en orden.
Replaces
Cada ítem copia un fragmento de un origen al nuevo nombre. Las posiciones empiezan en 1.
| Campos | Origen del fragmento |
|---|---|
ReplaceFileNamePosFrom, ReplaceFileNamePosTo, ReplaceFileNameLen | Nombre original del archivo. |
ReplaceFileNameFromPathPosFrom, ReplaceFileNameFromPathPosTo, ReplaceFileNameFromPathLen | Directorio original del archivo. |
VarReplaceFileNamePosFrom, VarReplaceFileNamePosTo, VarReplaceFileNameLen, VarReplaceFileNameValue | Valor fijo. El valor de -var0 sustituye el del primer ítem, -var1 el del segundo, y así sucesivamente. |
InsertTimestampPosFrom, InsertTimestampPosTo, InsertTimestampLen | Fecha y hora. |
InsertSeqNumberTo, InsertSeqNumberLen, InsertSeqNumberMin, InsertSeqNumberMax | Número secuencial con ceros a la izquierda, de Min a Max, que vuelve al mínimo después del máximo. |
...PosFrom: posición inicial del fragmento en el origen.0: inicio....PosTo: posición en el nuevo nombre donde se escribe el fragmento, sobrescribiendo lo que haya.0o-1: agrega al final....Len: número de caracteres.0deshabilita el ítem.
El último número secuencial usado se guarda en el directorio applLockDir. InsertSeqNumberSeq se mantiene por compatibilidad.
Ejemplo: para el archivo NF20261110.TXT, el ítem siguiente genera 20261110, copiando 8 caracteres a partir de la posición 3:
{ "ReplaceFileNamePosFrom": 3, "ReplaceFileNamePosTo": -1, "ReplaceFileNameLen": 8 }ReplacesFromFile
Copia al nuevo nombre un fragmento de la primera línea del archivo que corresponde a la expresión.
| Campo | Descripción |
|---|---|
ReplaceFromFileRegEx | Expresión que localiza la línea. |
ReplaceFromFilePosFrom, ReplaceFromFilePosTo, ReplaceFromFileLen | Fragmento de la línea copiado, con las mismas reglas de Replaces. |
ReplaceFromFileNext | 1 sigue leyendo las líneas siguientes después de encontrar esta. |
ReplacesByRegEx
Sustituye en el nuevo nombre cada ocurrencia de RegExReplaceFrom por RegExReplaceTo. Use ${1}, ${2} para los grupos y ${0} para el fragmento encontrado. Ejemplo: "RegExReplaceFrom": "(?i)\\.txt$", "RegExReplaceTo": ".csv". RegExReplaceOcorr se mantiene por compatibilidad.
Copia (Copy)
| Campo | Descripción |
|---|---|
CopyToDir | Directorio de destino. Vacío: el directorio del archivo original. La opción -copydir tiene prioridad. |
CopyFileOption | Opciones de la copia. Vea la tabla siguiente. |
Replaces | Arma el directorio de destino por posiciones, como en Filename.Replaces, con los campos PathReplace... (directorio original), PathReplaceFromFileName... (nombre del archivo), PathInsertTimestamp... (fecha y hora) y PathVarReplace... (valor fijo o -var0 a -var9). |
ReplacesByRegEx | Sustituciones por expresión regular en el directorio de destino. |
CopyTempExtension, CopyFileRecSize | Mantenidos por compatibilidad. No se usan en esta versión. |
| Valor | Opción de CopyFileOption |
|---|---|
1 | Ejecuta la copia. Sin esta opción, no hay copia. |
4 | Crea el directorio de destino, si no existe. |
8 | Mueve el archivo en lugar de copiarlo. |
16 | Sobrescribe el archivo de destino. Sin esta opción, la copia falla si el destino existe. |
64 | Inserta CR antes de cada LF (formato Windows). |
128 | Elimina los caracteres CR (formato Linux). |
512 | Convierte el nuevo nombre a minúsculas. |
1024 | Convierte el nuevo nombre a mayúsculas. |
Backup (Backup)
| Campo | Descripción |
|---|---|
BkpToDir | Directorio del backup. La opción -backupdir tiene prioridad. |
BkpFileOption | Opciones del backup. 0: no hay backup. Con cualquier otro valor, el backup se hace; informe también BkpToDir. |
Replaces, ReplacesByRegEx | Arman el directorio del backup, como en Copy. |
| Valor | Opción de BkpFileOption |
|---|---|
1 | Usa el nuevo nombre en el backup. Sin esta opción, usa el nombre original. |
4 | Crea el directorio del backup, si no existe. |
16 | Sobrescribe el backup existente. |
32 | Hace el backup antes de la copia. Sin esta opción, el backup se hace después de la copia. |
64, 128 | Inserta CR antes de LF o elimina CR. |
256 | Agrega la fecha y hora al final del nombre del backup. |
Archivos de control
Los archivos de control señalan a otros procesos que un archivo está en procesamiento o listo. Los nombres aceptan variables, por ejemplo $PATHOLDNAME/$OLDNAME.lck.
| Valor | Opción de CheckLockUnlockOption |
|---|---|
2 | Antes del procesamiento, exige que CheckLockUnlockFileName exista. |
4 | Antes del comando ExecProgBefore, crea CreateLockUnlockFileName. Falla si ya existe. |
8 | Después de la copia, crea CreateLockUnlockFileName. |
16 | Al final, elimina CreateLockUnlockFileName. |
32 | Al final, elimina CheckLockUnlockFileName. |
Comandos externos
ExecProgBefore, ExecProg y ExecProgError reciben un comando con argumentos, por ejemplo:
/usr/local/bin/notificar.sh "$FILENEWNAME" $SRCUSER $DSTUSER- Las variables se sustituyen antes de la ejecución. Vea Referencia de variables.
- El comando se ejecuta directamente, sin un shell: use la ruta completa y, para redirecciones o pipes, llame a un script.
- Los argumentos entre comillas dobles o simples se pasan sin las comillas.
- Riversoft STCP Gemini Rename espera el fin del comando. Un código de salida distinto de
0se trata como falla.