Saltar al contenido

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

CampoDescripción
Name, DescriptionNombre y descripción del enrutamiento.
ScanDirDirectorio del barrido. La opción -scan tiene prioridad.
ScanSubDir0: solo el directorio; 1: solo los subdirectorios; 2: el directorio y los subdirectorios. Las opciones -nosubdir, -subdir y -subdir2 tienen prioridad.
ScanDirRegEx, ScanDirRegExNegExpresiones que incluyen o excluyen directorios del barrido.
ScanFileRegEx, ScanFileRegExNegExpresiones que incluyen o excluyen archivos del barrido.
ScanFirstRuleNúmero (Index) de la primera regla evaluada. Predeterminado: 0.
ScanLockSemNombre del semáforo que impide dos barridos simultáneos con el mismo nombre.
ScanLockSemTimeoutTiempo máximo de espera por el semáforo, en milisegundos. -1 espera sin límite.
ScanLockSemOptionsOpciones. 1: termina inmediatamente si el semáforo está en uso.
LogErrorOptionOpciones. 1: registra error cuando el archivo no puede leerse; 2: registra error cuando un directorio no puede leerse.
LogLevelOnSuccess, LogLevelOnWarning, LogLevelOnInfo, LogLevelOnErrorNivel 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, MaxRetriesMantenidos 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.

CampoDescripción
IndexNúmero de la regla, a partir de 0, sin huecos. Un hueco termina la evaluación.
Name, DescriptionNombre y descripción de la regla. Disponibles en $RULENAME y $DESCR.
Locked1 bloquea la regla, que pasa a ignorarse.
FileRegExExpresión aplicada al nombre del archivo.
DirRegExExpresión aplicada al directorio del archivo.
SrcRegExExpresión aplicada al origen informado en -src.
ContentRegExExpresió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

CampoDescripción
SourceUser, DestinationUserUsuarios de origen y de destino asociados a la regla. Disponibles en $SRCUSER y $DSTUSER y usados en el registro de los mensajes.
ExecProgBeforeComando ejecutado antes de la copia.
ExecProgComando ejecutado después de la copia.
ExecProgErrorComando ejecutado cuando una etapa falla.
CheckLockUnlockFileNameArchivo de control verificado antes del procesamiento y eliminado al final. Acepta variables.
CreateLockUnlockFileNameArchivo de control creado durante el procesamiento. Acepta variables.
CheckLockUnlockOptionOpciones de los archivos de control. Vea Archivos de control.
RemoveAfterCopy1 elimina el archivo original al final del procesamiento.
RemoveAfterHoursCon RemoveAfterCopy, elimina el original solo si tiene más horas que el valor informado. 0: lo elimina siempre.
ProcessAfterSecondsAntigüedad mínima del archivo, desde la última modificación, para procesarse. El valor se interpreta en milisegundos. 0 lo deshabilita.
InsertTimestampOpciones. 1: agrega la fecha y hora al final del nombre; 2: la agrega al inicio. El separador es ..
InsertTimestampPartOrigen de la fecha y hora: 0, hora actual; 1, 2 o 3, fecha de modificación del archivo.
InsertTimestampFormatFormato de la fecha y hora, escrito con la fecha de referencia 2006-01-02 15:04:05. Ejemplo: 20060102150405 genera AAAAMMDDhhmmss. Vacío: AAAAMMDDhhmmss0mmm.
DelayNextFileProcessPausa después de procesar el archivo, en milisegundos.
StartDateHour, StartDateMinute, StartDateSecondInicio del horario permitido.
EndDateHour, EndDateMinute, EndDateSecondFin del horario permitido.
WeekDayIntervalDí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.
FileLenOptionOpciones. 1: verifica el tamaño mínimo; 2: verifica el tamaño máximo.
FileLenMin, FileLenMaxTamaños mínimo y máximo, en bytes.
ReplaceFromFileOption1 habilita el armado del nombre a partir del contenido (Filename.ReplacesFromFile).
ContentLinesToReadNúmero de líneas leídas para ContentRegEx.
OtherOptionOpciones. 2: reinicia el número secuencial cada día.
NextSectionNombre de la próxima regla a ejecutar sobre el mismo archivo.
OverwriteMantenido 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:

  1. Parte de RenameFileTo. Vacío: el nuevo nombre empieza vacío y, si no se agrega nada, se mantiene el nombre original.
  2. Aplica ReplacesFromFile, cuando está habilitado en ReplaceFromFileOption.
  3. Aplica Replaces, en orden.
  4. Agrega la fecha y hora, según InsertTimestamp.
  5. Aplica ReplacesByRegEx, en orden.

Replaces

Cada ítem copia un fragmento de un origen al nuevo nombre. Las posiciones empiezan en 1.

CamposOrigen del fragmento
ReplaceFileNamePosFrom, ReplaceFileNamePosTo, ReplaceFileNameLenNombre original del archivo.
ReplaceFileNameFromPathPosFrom, ReplaceFileNameFromPathPosTo, ReplaceFileNameFromPathLenDirectorio original del archivo.
VarReplaceFileNamePosFrom, VarReplaceFileNamePosTo, VarReplaceFileNameLen, VarReplaceFileNameValueValor fijo. El valor de -var0 sustituye el del primer ítem, -var1 el del segundo, y así sucesivamente.
InsertTimestampPosFrom, InsertTimestampPosTo, InsertTimestampLenFecha y hora.
InsertSeqNumberTo, InsertSeqNumberLen, InsertSeqNumberMin, InsertSeqNumberMaxNú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. 0 o -1: agrega al final.
  • ...Len: número de caracteres. 0 deshabilita 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.

CampoDescripción
ReplaceFromFileRegExExpresión que localiza la línea.
ReplaceFromFilePosFrom, ReplaceFromFilePosTo, ReplaceFromFileLenFragmento de la línea copiado, con las mismas reglas de Replaces.
ReplaceFromFileNext1 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)

CampoDescripción
CopyToDirDirectorio de destino. Vacío: el directorio del archivo original. La opción -copydir tiene prioridad.
CopyFileOptionOpciones de la copia. Vea la tabla siguiente.
ReplacesArma 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).
ReplacesByRegExSustituciones por expresión regular en el directorio de destino.
CopyTempExtension, CopyFileRecSizeMantenidos por compatibilidad. No se usan en esta versión.
ValorOpción de CopyFileOption
1Ejecuta la copia. Sin esta opción, no hay copia.
4Crea el directorio de destino, si no existe.
8Mueve el archivo en lugar de copiarlo.
16Sobrescribe el archivo de destino. Sin esta opción, la copia falla si el destino existe.
64Inserta CR antes de cada LF (formato Windows).
128Elimina los caracteres CR (formato Linux).
512Convierte el nuevo nombre a minúsculas.
1024Convierte el nuevo nombre a mayúsculas.

Backup (Backup)

CampoDescripción
BkpToDirDirectorio del backup. La opción -backupdir tiene prioridad.
BkpFileOptionOpciones del backup. 0: no hay backup. Con cualquier otro valor, el backup se hace; informe también BkpToDir.
Replaces, ReplacesByRegExArman el directorio del backup, como en Copy.
ValorOpción de BkpFileOption
1Usa el nuevo nombre en el backup. Sin esta opción, usa el nombre original.
4Crea el directorio del backup, si no existe.
16Sobrescribe el backup existente.
32Hace el backup antes de la copia. Sin esta opción, el backup se hace después de la copia.
64, 128Inserta CR antes de LF o elimina CR.
256Agrega 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.

ValorOpción de CheckLockUnlockOption
2Antes del procesamiento, exige que CheckLockUnlockFileName exista.
4Antes del comando ExecProgBefore, crea CreateLockUnlockFileName. Falla si ya existe.
8Después de la copia, crea CreateLockUnlockFileName.
16Al final, elimina CreateLockUnlockFileName.
32Al 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 0 se trata como falla.