Conceitos e arquitetura
Como funciona
O Riversoft® STCP Gemini Rename é um utilitário de linha de comando: ele é executado, processa os arquivos e termina. Cada execução recebe um roteamento, que é um conjunto de regras. Para cada arquivo, o Riversoft STCP Gemini Rename procura a primeira regra que corresponde a ele e aplica as ações dessa regra.
Cadastro dos roteamentos
O operador cadastra os roteamentos no Riversoft Console Portal, que os grava no banco de configuração por meio da Riversoft STCP Gemini API. No modo arquivo local, o operador cria o arquivo JSON de roteamento.
flowchart LR
OP[Operador] -->|modo banco de dados:<br/>cadastra o roteamento| PORTAL[Riversoft<br/>Console Portal] --> API[Riversoft STCP<br/>Gemini API] -->|grava| DB[(Banco de<br/>configuração)]
OP -->|modo arquivo local:<br/>cria o arquivo JSON de roteamento| JSON[Arquivo JSON<br/>de roteamento]
Acionamento por evento
Quando um parceiro envia um arquivo, o Riversoft STCP Gemini Server ou o Riversoft STCP DirectLink aciona o Riversoft STCP Gemini Rename com o arquivo recebido. O Riversoft STCP Gemini Rename lê o roteamento e aplica a regra ao arquivo.
flowchart LR
PARC[Parceiro] -->|envia o arquivo| GEM[Riversoft STCP Gemini Server<br/>ou Riversoft STCP DirectLink]
GEM -->|aciona com o arquivo<br/>recebido| REN[Riversoft STCP<br/>Gemini Rename]
DB[(Banco de<br/>configuração)] -->|roteamento| REN
REN -->|aplica a regra| DEST[Destino]
Acionamento por agendamento
No horário definido, um agendamento da instância ou do sistema operacional executa o Riversoft STCP Gemini Rename com varredura (-scan). Ele lê o roteamento, percorre o diretório de origem e aplica a regra a cada arquivo encontrado.
flowchart LR
AG[Agendamento] -->|executa a varredura| REN[Riversoft STCP<br/>Gemini Rename]
DB[(Banco de<br/>configuração)] -->|roteamento| REN
DIR[Diretório<br/>de origem] -->|arquivos| REN
REN -->|aplica a regra<br/>a cada arquivo| DEST[Destino]
Modos de configuração
O modo é definido em cfgProviderType, no arquivo de configuração. Veja Configuração.
| Modo | cfgProviderType | Instância e roteamentos | Log |
|---|---|---|---|
| Banco de dados | stcpgeminidb | Lidos do banco de configuração. Os roteamentos são mantidos no Riversoft Console Portal. | Banco de log da instância. |
| Arquivo local | stcpgeminifile | A instância fica na seção cfgInstance do config.json, e cada roteamento é um arquivo JSON. | Arquivo texto no diretório applLogDir. |
O modo banco de dados é o mais usado: os roteamentos são cadastrados no Portal e as execuções aparecem no log da instância, junto das transferências.
Formas de execução
| Forma | Quando usar | Exemplo |
|---|---|---|
| Um arquivo | O Riversoft STCP Gemini Server ou o Riversoft STCP DirectLink acionam o Riversoft STCP Gemini Rename a cada arquivo recebido, informando o nome do arquivo. | stcpren -db -rules ENTRADA /caixa/IN/NOTAS.TXT |
| Varredura | Processar todos os arquivos de um diretório, por agendamento ou manualmente. | stcpren -db -rules ENTRADA -scan /caixa/IN |
| Conversão de regras | Converter regras antigas em formato INI para JSON. | stcpren -ini regras.ini -rules regras.json |
| Exportação | Gravar em arquivo JSON um roteamento cadastrado no banco. | stcpren -db -rules ENTRADA -export /tmp |
Todas as opções estão em Referência de comandos.
Roteamentos e regras
Um roteamento tem uma parte geral, com as opções de varredura e de log, e uma lista de regras numeradas (Index) a partir de 0.
- As regras são avaliadas em ordem, e vale a primeira que corresponder ao arquivo.
- Uma regra corresponde quando o nome do arquivo (
FileRegEx), o diretório (DirRegEx) e a origem (SrcRegEx) atendem às expressões regulares. Opcionalmente, o conteúdo das primeiras linhas também é verificado (ContentRegEx). - Uma regra bloqueada (
Locked) é ignorada. - A numeração precisa ser contínua: uma lacuna no
Indexencerra a avaliação. - Uma regra pode indicar a próxima regra a executar (
NextSection), o que permite encadear ações sobre o mesmo arquivo.
A estrutura completa está em Referência de regras.
Processamento de um arquivo
O Riversoft STCP Gemini Rename procura a primeira regra que corresponde ao arquivo e confere os limites dessa regra. Se nenhuma regra corresponder, ou se o arquivo estiver fora dos limites, ele fica na origem.
flowchart LR
A[Arquivo] --> B{Alguma regra<br/>corresponde?}
B -- não --> X[Registra erro MSG7003<br/>e o arquivo fica na origem]
B -- sim --> C{Horário, dia, idade<br/>e tamanho permitidos?}
C -- não --> W[Registra aviso<br/>e o arquivo fica na origem]
C -- sim --> P[Aplica as ações<br/>da regra]
As ações são executadas nesta ordem. Cada etapa é opcional e só é executada quando está configurada na regra.
Monta o novo nome
Novo nome e diretórios de cópia e de backup (Filename, CopyToDir, BkpToDir).
Confere e cria os arquivos de controle
CheckLockUnlockOption.
Executa o comando antes da cópia
ExecProgBefore.
Faz o backup antes da cópia
BkpFileOption com a opção 32.
Copia ou move o arquivo
CopyFileOption.
Faz o backup depois da cópia
BkpFileOption.
Remove o arquivo original
RemoveAfterCopy.
Remove os arquivos de controle
CheckLockUnlockOption.
Executa o comando depois da cópia
ExecProg.
Se a etapa de comando antes da cópia, de backup antes da cópia ou de cópia falhar, o comando de erro (ExecProgError) é executado, quando configurado, e o processamento do arquivo termina. Se a etapa de backup depois da cópia ou de comando depois da cópia falhar, o comando de erro também é executado, mas o processamento continua. Se a regra indicar uma próxima regra (NextSection), ela é executada sobre o mesmo arquivo.
flowchart LR
S[Etapa da regra] -- concluída --> N{Próxima regra<br/>definida?}
N -- sim --> R[Executa a próxima regra<br/>sobre o mesmo arquivo]
N -- não --> F[Fim do arquivo]
S -- falha --> E[Comando de erro<br/>ExecProgError]
E --> T[Fim do arquivo<br/>com erro]
Na varredura, cada arquivo é processado da mesma forma. Um arquivo com erro não interrompe a varredura dos demais.
Variáveis
Os comandos externos e os nomes dos arquivos de controle aceitam variáveis, como $FILENEWNAME (nome completo do novo arquivo) e $SRCUSER (usuário de origem). Os valores de -var0 a -var9, informados na linha de comando, também podem ser usados. Veja Referência de variáveis.
Execução simultânea
Para evitar que duas execuções processem os mesmos arquivos ao mesmo tempo:
- a varredura pode usar um semáforo (
ScanLockSem): outra varredura com o mesmo semáforo espera ou termina; - cada regra pode usar arquivos de controle (lock e unlock), criados e conferidos antes e depois da cópia;
- o controle de lock do aplicativo é definido em
lockProvider, noconfig.json.
Conceitos-chave
| Conceito | Descrição |
|---|---|
| Roteamento | Conjunto de regras com um nome. É informado em -rules. |
| Regra | Critérios de seleção e ações aplicadas a um arquivo. |
| Instância | Instância do Riversoft STCP Gemini associada, informada em cfgInstanceName. É a mesma do Riversoft STCP Gemini Server ou do Riversoft STCP DirectLink. |
| Origem | Usuário ou nome de origem informado em -src, comparado com SrcRegEx. |
| Varredura | Busca de arquivos em um diretório (-scan ou ScanDir). |
| Arquivo de controle | Arquivo criado ou conferido pela regra para sinalizar que um arquivo está em uso (lock) ou liberado (unlock). |