|
outras integracoes materiais
[Edit] Outras Integrações Módulo Controle de Materiais
Materiais
[Edit] Tribunal de Justiça do Rio de Janeiro[Edit] Integração de LocaisIntegraçã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_INTEGRACAOA 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. |
|
All contents copyright of the author. ©2007. JAMWiki Version 0.5.2 |