Histórico da Página
...
Informações |
---|
Índice | ||||||
---|---|---|---|---|---|---|
|
| ||
Nota | ||
---|---|---|
Este recurso está disponível a partir da atualização 1.5.5 da plataforma fluig. do TOTVS Fluig Plataforma. |
Índice | ||||||
---|---|---|---|---|---|---|
|
Conceito
...
A sincronização de datasets tem como objetivo reduzir o número de acessos a serviços de dados fornecidos por produtos externos ao fluigà plataforma TOTVS Fluig. É uma prática comum trazer dados de sistemas externos para complementar informações do formulário de um processo ou realizar validações em eventos com base nas informações retornadas por este dataset.
...
- o usuário acessar o campo com pesquisas, através de um formulário;
- esse campo solicita informações para o dataset;
- o dataset, quando executado através do fluigda plataforma, faz acesso ao serviço de dados do sistema externo.
...
O desenho abaixo ilustra como funciona o ciclo de acesso do usuário a uma informação externa ao fluigà plataforma.
Figura 1 - Ciclo de acesso do usuário a uma informação externa ao fluigà plataforma
Contudo, como tratam-se de sistemas externos não é possível para o fluig garantir tanto a performance quanto a disponibilidade desses serviços de dados. Eventuais problemas de performance ou disponibilidade impactarão o desempenho do fluig da plataforma TOTVS Fluig e podem até mesmo inviabilizar o uso de determinado processo workflow.
...
No modelo de dados sincronizados, o fluig através por meio de uma tarefa agendada realiza é possível realizar a consulta do sistema externo e copia os dados retornados para uma tabela espelho criada dentro do banco de dados do fluigda plataforma.
Figura 2 - Tarefa agendada para consulta ao sistema externo
...
Uma vez que a primeira sincronização tenha sido concluída com sucesso, todas as consultas realizadas neste dataset não irão mais consultar o sistema externo, mas sim a tabela que foi espelhada pela tarefa agendada. Em nosso cenário hipotético caso o administrador do sistema opte por agendar a tarefa que atualiza a lista de centros de custo uma vez por dia. Após a sincronização a performance e a disponibilidade do sistema externo não afetarão mais a performance do fluig e da plataforma e dos sistemas workflow.
Nota | ||
---|---|---|
| ||
A Sincronização de datasets em tabelas do fluig da plataforma não pode ser utilizada em datasets do tipo interno. |
...
- Sincronização Comum: Este tipo de sincronização pode ser feita com qualquer dataset já implementado na plataforma. Neste modelo de sincronização toda vez que a tarefa agendada de sincronização de datasets for executada será criada uma nova tabela e todos os registros retornados pelo método createDataset serão copiados para esta nova tabela. A tabela anterior será removida do banco. Esse modelo não é recomendado para datasets que retornam muitos registros.
- Sincronização Jornalizada: Este tipo de sincronização permite a atualização e cópia incremental de registros de acordo com o retorno do método onSync do dataset. Através do método defineStructure é possível definir de forma mais detalhada quais são os campos da tabela bem como seus tipos. Também é possível criar índices e uma chave principal para obter ainda mais performance durante as consultas aos dados do dataset. No método OnSync é possível determinar quais são as linhas novas a serem adicionadas na tabela como na sincronização comum. Com os métodos updateRow e deleteRow através da configuração da chave é possível atualizar registros já existentes bem como eliminar registros. Esse modelo é o recomendado para situações em que há uma grande quantidade de dados.
Sincronização mobile: Este modelo de sincronização pode ser utilizado com qualquer dataset, seja ele sincronizado no servidor ou não, e permite a cópia local dos registros de um dataset em um dispositivo mobile que sincronize de forma offline com o fluiga plataforma. Os Os prazos de sincronização são configurados no aplicativo fluig Mobile.
Nota title Atenção Novos dados criados em dispositivos móveis, quando utilizando o modo offline, só estarão disponíveis para consulta em outros formulários depois que o aplicativo móvel passar por um processo de sincronização com o servidor do fluigda plataforma. Para entender mais sobre este processo, acesse nesta página o passo Configurando sincronização de datasets.
...
Nota | ||
---|---|---|
| ||
|
...
Para que a sincronização aconteça deve ser criada uma tarefa no Agendador de tarefas do fluig com com o tipo 'Sincronização de dataset', selecionando qual dataset deverá ser sincronizado e em que período.
...
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
function onSync(lastSyncDate) { var dataset = DatasetBuilder.newDataset(); var integracao = ServiceManager.getService('FLUIG3'); var serviceLocator = integracao .instantiate('pkgWkfSolicPagamento.FLUIGLocator'); var service = serviceLocator.getFLUIGSOAP(); var cdEmp = 1; // código empresa pagadora var cdFilial = 0; // todas as filiais var cdTitulo = 0; // todos os titulos var cdPrefixo = "" var cnpj = 0; // cnpj fornecedor var codForn = 0; // cod universal para todos os fornecedores var lojaForn = 0; // loja fornecedor // Invocando o servico passando a data da ultima sincronização com oa fluigplataforma. // O webservice foi preparado para trazer apenas os dados desde a ultima // sincronização. var retorno = service.CONSPAG(cdEmp, cdFilial, cdTitulo, cdPrefixo, cnpj, codForn.toString(), lojaForn.toString(), lastSyncDate); var arrayListaTitulo = retorno.getLISTACPAG(); for (var i = 0; i < arrayListaTitulo.length; i++) { var r = arrayListaTitulo[i]; if (r.getCE_TIPO() == "ADD") { dataset.addRow(new Array(r.getCE_CODIGO(), r.getCE_LOJA(), r .getCE_NUMTIT(), r.getCE_PARCELA(), r.getCE_PEFIXO(), r .getCE_TIPO(), r.getCE_VALOR(), r.getCE_INSS(), r .getCE_ISS(), r.getCE_IRRF(), new java.util.Date(r.getDT_TITULO()), r .getCE_PIS(), r.getCE_COFINS())); } else if (r.getCE_TIPO() == "MOD") { dataset.updateRow(new Array(r.getCE_CODIGO(), r.getCE_LOJA(), r .getCE_NUMTIT(), r.getCE_PARCELA(), r.getCE_PEFIXO(), r .getCE_TIPO(), r.getCE_VALOR(), r.getCE_INSS(), r .getCE_ISS(), r.getCE_IRRF(), new java.util.Date(r.getDT_TITULO()), r .getCE_PIS(), r.getCE_COFINS())); } else if (r.getCE_TIPO() == "DEL") { dataset.deleteRow(new Array(r.getCE_CODIGO(), r.getCE_LOJA(), r .getCE_NUMTIT(), r.getCE_PARCELA(), r.getCE_PEFIXO(), r .getCE_TIPO(), r.getCE_VALOR(), r.getCE_INSS(), r .getCE_ISS(), r.getCE_IRRF(), new java.util.Date(r.getDT_TITULO()), r .getCE_PIS(), r.getCE_COFINS())); } else { // Estado do registro é desconhecido no cache dataset.addOrUpdateRow(new Array(r.getCE_CODIGO(), r.getCE_LOJA(), r .getCE_NUMTIT(), r.getCE_PARCELA(), r.getCE_PEFIXO(), r .getCE_TIPO(), r.getCE_VALOR(), r.getCE_INSS(), r .getCE_ISS(), r.getCE_IRRF(), new java.util.Date(r.getDT_TITULO()), r .getCE_PIS(), r.getCE_COFINS())); } } return dataset; } |
...
A forma como os dados são inseridos na base de dados é gerida pelo fluig e pela plataforma TOTVS Fluig e desta forma o momento em que os registros são inseridos, editados ou excluídos no código do dataset, não é exatamente o mesmo momento em que, na prática, essas operações serão realizadas. Com isso, a importância em saber como funciona a sincronização e gravação de informações do dataset para tabelas de banco de dados é de utilidade geral.
Ao executar os métodos createDataset ou OnSync nas tarefas de sincronização o fluig a plataforma irá montar inicialmente em memória quatro coleções de registros que serão alimentadas de acordo com o comando utilizado pelo desenvolvedor.
...
Com as coleções montadas, a ordem que o fluig a plataforma utiliza para fazer a efetivação no banco é a seguinte.
...
Isso é necessário para que as alterações e efetivações de registros no banco sejam gerenciadas pelo fluigpela plataforma, afim de garantir melhor performance e obter um tempo reduzido na sincronização de informações.
...
A partir da atualização 1.6.2 o Painel de controle disponibiliza a opção Datasets, com uma listagem de todos os datasets cadastrados no fluigna plataforma. Nessa tela é possível:
- Ligar ou desligar a sincronização de datasets em tabelas do servidor fluig.
- Ligar ou desligar cache de informações de datasets em dispositivos mobile.
- Editar agendamentos para os datasets sincronizados.
- Consultar o dataset - consulta do código fonte do dataset.
- Consultar os dados do dataset
- Apagar todos os dados - Permite apagar os dados sincronizados para reiniciar a sincronização.
...
Utilize os botão salvar para confirmar as alterações.
Configurando sincronização de dados para o servidor
...
da plataforma
Para definir que determinado dataset irá sincronizar as linhas obtidas para dentro de uma tabela fluigda plataforma, é preciso clicar no link da coluna Sincronização, que abre a tela abaixo.
...
Após definir que determinado dataset é sincronizado no servidor do fluigda plataforma, é é preciso agendar pelo menos uma execução da tarefa de sincronia do dataset. Para acessar essa opção, é preciso acionar o link da coluna Sincronização, que abre a tela de Sincronização (Figura 5), e acionar a opção Editar agendamento.
...
As outras informações se referem a frequência e horário de execução da tarefa e segue o mesmo padrão dos outros tipos de tarefa agendada existentes no fluig. Para mais informações, consulte a documentação de usuário do Agendador de tarefas.
...
Essa opção possibilita a consulta dos resultados do dataset no banco de dados do fluigda plataforma. Qualquer tipo de dataset pode ser consultado, mesmo aqueles que não tenham sincronização.
...