Histórico da Página
CONTEÚDO
- Visão Geral
- Identificação
- Escolha do Mecanismo para Remoção do Semáforo
- Pontos de atenção das funções escolhidas e nas formas de bloqueio de registros
- Ca100Incl e SimpleLock
- StarJob e RpcSetEnv
- Mensagem Única
- Ca100Incl e SimpleLock
- Tabelas Contábeis Envolvidas
- Parâmetros do Semáforo Contábil
- Funções de Semáforo
- Rotinas chamadoras das funções de Semáforo Contábil
- Rotinas chamadoras da função GravaLanc
- Fluxograma
- Possíveis Soluções
- Retirada do Changequery
- Utilizar FWPreparedStatement
- Retirada do Changequery
01. Visão Geral
Identificado baixa performance na rotina de Apuração de resultado.
02.Identificação
Identificado pelo log enviado que a demora ocorre pelo numero de chamadas que tem o changequey da rotina SALDOCQ.
Na Apuração de Resultados essa função é chamada para realizar a gravação do arquivo temporariotemporário, para cada tipo de moeda, tipo de saldo e contas contábeis.
03.
...
Fluxograma
Aviso | ||
---|---|---|
| ||
|
04. Possíveis Soluções
a. Retirada do Changequery
...
Após discussões das questões de performance, concorrência, perda de dados, funções dentro de transações, fomos orientados a adotar a solução abaixo que serão feitos em dois pontos.
Na função de contabilização Ca100Incl, na contabilização de integrações, receber do módulo origem o vetor aFlagCTB preenchidos com as devidas posições, aFlagCTB{ 'campo da tabela a ser marcado', 'string a gravar', 'alias da tabela a marcar', 'recno a ser marcado' } para todos os registros de origem a serem contabilizados. Também não alterar o local da chamada dessa função dentro do ERP, podendo algumas chamadas ficarem dentro de transação.
Outro ponto é na chamada da função que gera o número do próximo documento contábil, ProxDoc. Como esta função pode estar dentro de uma transação, caso ela não consiga pegar um número de documento contábil disponível, utilizar a função Starjob para gerar 5 ( definido em conjunto com time TEC ) números de documento contábil e novamente tentar pegar um número de documento disponível e bloquear e marcar como usado.
...
a. Ca100Incl e SimpleLock
Na primeira situação em que a função Ca100Incl é chamada recebendo o vetor aFlagCTB, os elementos do vetor devem ser bloqueados para serem no final atualizados na origem. O conteúdo de alguns campos da tabela CTK também deverão ser bloqueados, como o CTK_TABORI e CTK_RECORI, pois nem sempre o conteúdo destes campos da tabela CTK são os mesmos do vetor aFlagCTB. Na grande maioria das vezes serão, neste caso, se utilizarmos a função SimpleLock ou uma outra que não utilize o LockByName ocultamente, duas vezes, devemos certificar que não ocorrerá nenhum problema. Também devemos certificar que uma outra conexão não consiga pegar esses registros.
...
Este é um outro ponto que necessitará de muito estudo e conhecimento das funcionalidades do processo de integração de mensagens únicas. Pois a inclusão de lançamentos contábeis, pode vir de outras marcas que não seja Protheus.
05. Tabelas Contábeis Envolvidas
CTF - Capa do Lote Contábil
CTK - Tabela de Contraprova gerada pela função Detprova
06. Parâmetros do Semáforo Contábil
MV_CTBSER - “1” - ligado; “2” desligado; “3” modo teste.
...
MV_CTBNFSE - “1”- ligado, “2”- desligado
07. Funções do Semáforo Contábil
CtbSerialI
CtbSerialF
CtbFimSemaforo
CtbIniSemaforo
CanProcItvl
FreeProcItvl
08. Rotinas chamadoras das funções do Semáforo Contábil
ATFA371.PRX – Contabilização Off line do Ativo
...
CTBANFS.PRW – Processamento da Contabilização Off Line de Documentos de Saída.
09. Rotinas chamadoras da função GravaLanc
CTBA211.PRW
CTBA220.PRW
CTBA231.PRW
...
CTBM300.PRW
CTBXATU.PRW
CTBXFUNC.PRW
10. Rotinas chamadoras da função Ca100incl
AR_C200A.PRX
AR_C230A.PRX
ATFA010A.PRW
...