outras integracoes materiais

Outras Integrações Módulo Controle de Materiais

Materiais

Outras integrações

Descrição do serviço

Descrevem as integrações implementadas através de banco de dados



Tribunal de Justiça do Rio de Janeiro

Integração de Locais

Integração do cadastro de Órgãos do Sistema do PJERJ com o cadastro de locais físicos, via banco de dados, de forma assíncrona, mediante a utilização de tabela com os registros a serem unificados.
No esquema UC, do PJERJ, foi criado a tabela integracao_grp_service com a estrutura que armazena a lista dos registro a serem unificados. Através do job, esses registros são lidos e processado a sua integração.

Tabela criada no lado do cliente. Esta atividade foi realizada pelo próprio cliente em seu esquema de dados:
create table INTEGRACAO_GRP_SERVICE
(
  sequencia         NUMBER not null,
  origem            VARCHAR2(90) not null,
  chaveorigem       VARCHAR2(4000) not null,
  operacao          VARCHAR2(90) not null,
  acao              VARCHAR2(90) not null,
  dataoperacao      DATE not null,
  situacao          VARCHAR2(30) not null,
  erro              VARCHAR2(4000),
  dataerro          DATE,
  dataprocessamento DATE,
  observacao        VARCHAR2(4000)
)
Sequence criada no lado do cliente. Esta atividade foi realizada pelo próprio cliente em seu esquema de dados:
create sequence INTEGRACAO_GRP_SERVICE_SEQ
minvalue 1
maxvalue 9999999999
start with 1
increment by 1
nocache;
Na tabela UC.ORGAO, foi criada a trigger para registro na tabela de integração. Esta atividade foi realizada pelo próprio cliente em seu esquema de dados:
ORGAO_AIUD_INTEGRACAO
A rotina de integração ficou de responsabilidade do Owner ERP_UC, que deve possuir as seguintes permissões de banco:
-- Grant/Revoke object privileges 
grant execute on ERP.GRP_BAS_CONTEXTO_PACK to ERP_UC;
grant select, insert, update, delete on ERP.GRP_BAS_INTEGRACAO to ERP_UC;
grant select, insert, update, delete on ERP.GRP_BAS_LOCALFISICO to ERP_UC;
grant select on ERP.GRP_BAS_LOCALIZACAO_TOTAL_V to ERP_UC;
grant execute on ERP.GRP_BAS_ORGAO_PATRIMONIAL_PACK to ERP_UC;
grant execute on ERP.GRP_BAS_TRATA_SQLERRM_F to ERP_UC;
grant execute on ERP.ISNUMBER to ERP_UC;
grant execute on ERP.PACK_SESSAO to ERP_UC;
grant execute on SYS.DBMS_SCHEDULER to ERP_UC;
-- Grant/Revoke role privileges 
grant bas$_usuario_role to ERP_UC;
grant connect to ERP_UC;
grant resource to ERP_UC;
-- Grant/Revoke system privileges 
grant create job to ERP_UC;
Também devem ser criados dois sinônimos privados para o usuário ERP_UC apontando para os objetos do Owner UC, através do dblink a ser utilizado na integração. Desta forma, é possível ter o mesmo procedimento (package) tanto para o banco de homologação quanto de produção, que possuia dblinks diferentes.
HML:
create synonym ERP_UC$_INTEGRACAO_GRP_SERVICE for uc.INTEGRACAO_GRP_SERVICE@INT_ERP_DSV03;
create synonym ERP_UC$_ORGAO for uc.ORGAO@INT_ERP_DSV03;

PRD:
create synonym ERP_UC$_INTEGRACAO_GRP_SERVICE for uc.INTEGRACAO_GRP_SERVICE@int_erp_tj03;
create synonym ERP_UC$_ORGAO for uc.ORGAO@int_erp_tj03;
Deve ser carregado o pacote ERP_UC$_INTEGRACAO_PACK do owner ERP_UC com a seguinte descrição:
CREATE OR REPLACE PACKAGE ERP_UC$_INTEGRACAO_PACK IS

  /*
     Pacote destinado a funções e procedimentos de integrações
     Utiliza dois sinônimos: ERP_UC$_INTEGRACAO_GRP_SERVICE e ERP_UC$_ORGAO
  */

  /* ************************************************************************************************ */
  /*
   Procedure: defineCliente
   --------------------------------------------------------------------------------
   Procedimento que define o código do cliente para utilização na integração

    Parametros:
       in_cliente - código do cliente

    Histórico:
    > Fernando Souza             24/06/2020          Criação
   --------------------------------------------------------------------------------
  */
  PROCEDURE defineCliente (in_cliente IN NUMBER);

  /* ************************************************************************************************ */
  /*
   Procedure: processaIntegracaoService
   --------------------------------------------------------------------------------
   Procedimento que define o código do cliente para utilização na integração

    Parametros:
       in_cliente                  - código do cliente
       in_quantidadeRegistro       - quantidade de registros a serem processados
       in_numeroExecucoesPendentes - número de execuções que o registro pode restar com pendência

    Histórico:
    > Fernando Souza             24/06/2020          Criação
   --------------------------------------------------------------------------------
  */
  PROCEDURE processaIntegracaoService(in_cliente                  IN NUMBER,
                                      in_quantidadeRegistro       IN NUMBER,
                                      in_numeroExecucoesPendentes IN NUMBER);

  /* ************************************************************************************************ */
  /*
   Procedure: insereLocal
   --------------------------------------------------------------------------------
   Procedimento que realiza a inclusão do local

    Parametros:
       iv_chaveOrigem - código da chave de origem

    Histórico:
    > Fernando Souza             24/06/2020          Criação
   --------------------------------------------------------------------------------
  */
  PROCEDURE insereLocal(iv_chaveOrigem IN VARCHAR2);

  /* ************************************************************************************************ */
  /*
   Procedure: atualizaLocal
   --------------------------------------------------------------------------------
   Procedimento que realiza a atualização dos dados do local

    Parametros:
       iv_chaveOrigem - código da chave de origem

    Histórico:
    > Fernando Souza             24/06/2020          Criação
   --------------------------------------------------------------------------------
  */
  PROCEDURE atualizaLocal(iv_chaveOrigem IN VARCHAR2);

  /* ************************************************************************************************ */
  /*
   Procedure: removeLocal
   --------------------------------------------------------------------------------
   Procedimento que realiza a remoção da integração do local

    Parametros:
       iv_chaveOrigem - código da chave de origem

    Histórico:
    > Fernando Souza             20/07/2020          Criação
   --------------------------------------------------------------------------------
  */
  PROCEDURE removeLocal(iv_chaveOrigem IN VARCHAR2);

  /* ************************************************************************************************ */

END;
Importante Deve ser criado um registro na tabela de integração, apontando para a sequencia da unidade principal, onde serão criados os locais sem superior ou cujo superior for 0 (zero).
insert into grp_bas_integracao (CODIGO_CLIENTE, TAG, ORIGEM, DESTINO, DESCRICAO)
values (#cliente#, 'TJRJ_LOCALFISICO', '0', #sequencia da unidade#, 'Local padrão da unidade');
Por fim, deve ser criado o job de sincronização pelo usuário ERP_UC:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'SINCRONIZA_ORGAO_LOCALFISICO',
job_type => 'PLSQL_BLOCK',
job_action => 'DECLARE BEGIN erp_uc$_integracao_pack.processaintegracaoservice(#código do cliente#, 10, 3); commit; END;',
start_date => CAST('21/07/20 09:20:00' AS TIMESTAMP WITH LOCAL TIME ZONE),
repeat_interval => 'freq=minutely; interval=10', 
enabled => TRUE,
auto_drop => FALSE,
comments => 'Job que realiza a sincronização do cadastro de Órgão com os locais fisicos');
END;
Neste exemplo o job roda a cada 10 minutos, porém pode ser configurado essa periodicidade em outro tempo, conforme análise com o cliente.