Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

NFS xMova Field Server

Como Funciona

O XFS (xMova Field Server) é uma funcionalidade que permite que o smartphone onde é realizado o apontamento que se encontra fixo ou mesmo móvel, mas em um área 100% sem sinal possa receber dados atualizado da Web através de um segundo celular que passar por esse local de tempos em tempos.

Para todas essa estrutura funcionar é necessário primeiro definir quem vai ser o smartphone Server, responsável por coletar (Obtem dados de Apontamentos e quando com sinal transmite-os) e entregar (Obter os dados atualizados da Web e transmitir para o aparelho que está 100% sem sinal) os dados.

O Segundo é definir quem será o Client, que é o smartphone que está em um equipamento que está numa área sem sinal e raramente se desloca para uma área com sinal, porém, é necessário tanto obter seus dados de apontamentos quanto atualizar sua lista de dados com possíves novas informações.

O NFS entra na parte de gerar os dados e enviar eles para todos os possiveis auths, porque você pode alimentar um ou mais equipamentos que estão sem sinal.

Como é muito para gerar os dados de todos os auths possíveis leva um tempo e acontece timeout na comunicação com o xMova, no NFS antes geramos um arquivo prévio e quando é feita a transmissão para o xMova, só lemos esse arquivo e enviamos seus dados, então é importante os dados neles estarem atualizados.

Configuração

Pré-requisito

É necessário ter na par_parametros o PROCESS_BACKGROUND ativo para poder gerar o arquivo de XFS pelo painel.

INSERT INTO nfs_core_par_parametros (EMPRESA, FILIAL, `LOCAL`, NOME, CONTEUDO, TIPO) VALUES(9999, 9999, 9999, 'PROCESS_BACKGROUND', '1', 1);

param

xMova

Primeiro configurar o Server e Client no fluxo, que é possível através do link (colocar aqui link xmova config.)

Montar JSON

O json que é montado é referente ao Client, que é o responsável por receber os dados da WEB.

  • Acessar o banco de dados do cliente e criar o seguinte entry point:
INSERT INTO nfs_entry_point (FILE_OR_DOMAIN, `ACTION`, XMOVA_INSTALLCODE, XMOVA_INSTALLCODE_VERSION, EMPRESA, FILIAL, `LOCAL`, TABELA, ENTRY_NUM, CODE, VERSION, BUILD, ATIVO, CODETYPE, FIELD, DESCRIPTION, INS_DH, UPD_DH, NFS_USER) VALUES('XFS', 'test_many_install_codes_in_one', 999000011, '9999', 1, 9999, 9999, NULL, NULL, '{
    "auths": {
        "220123350": {
            "fields": [
                "SELECT seq_db seqEquipamento FROM app_eqp WHERE ativo=1"
            ],
            "entities": [
                "Funcionario_Mobile",
                "Equipamento_Mobile",
                "Eqp_Classe_Mobile",
                "Oper_Mobile",
                "Oper_Grupo_Mobile"
            ],
            "empresaFilialLocal": [
                "UPs_Mobile"
            ],
            "shared": []
        }
    },
    "installCodes": [220123350, 187123701]
}', 1, 304, 1, 'JSON', NULL, NULL, '2021-06-08 09:06:44', '2021-06-29 16:20:49', '1');

As colunas mais importantes são: Empresa/Filial/Local e Action, obvio que se não tiver CODE não vai funcionar.

Como foi adicionado Empresa 9999, Filial 9999 e Local 9999 ele vai criar dados para todos as empresas, filiais e locais, porém se você deseja gerar somente para uma filial/local é possível configurar somente ela, logo o XFS será só para filial do entry point configurado.

Action deve ser XFS. {.is-warning}

  • Estrutura da configuração:
ChaveTipoDescrição
fieldsArraySelect que montará o auth do xmova com idEmpresa, idFilial e idLocal junto com o resultado consulta, então no caso insert do entry point que já possui uma configuração, o resulta do auth será todos os equipamentos ativos e seu SEQ_DB será representado por seqEquipamento. Ex.: "auth": {"idEmpresa": 1, "idFilial": 1, "idLocal": 1, "seqEquipamento" : 100} Essa é só uma parte se tiver 500 equipamentos vai ter um auth para cada eles nesse formato.
entitiesArrayCada item desse array são as entidades que são filtradas a partir do dos dados do Auth, então por exemplo se eu for enviar a Classe do Equipamento, é passado o seqEquipamento e seus dados são filtrados.
empresaFilialLocalArraySão as entidade que são iguais para todas as filais, porém, o seu SEQ_DB pode variar de filial/local ou mesmo os dados são diferentes, porém, é o mesmo para todos os auths dela. Exemplo: Funcionário, ele pode ser diferente de uma filial/local para outra, porém, todos os equipamentos de um filial/local deve ter toda a lista de Funcionário da sua filial/local porque de um dia para o outro pode vim o funcionário que estava operando no equipamento A para operar no B.
sharedArraySão declaradas aqui todas as entidades que são iguais e compartilhadas por todas as filiais e locais, são aquelas que são declaradas como 9999 e estão mapeadas como compartilhadas no NFS para filial e local.
installCodesArrayUma chave imporatente e deve conter os installCodes do coletor, ele pode ser o install code de uma outra filial/local, por exemplo, na Suzano temos a empresa Suzano MVI e Suzano SAL, o coletor (XFS Server) fica instalado nele onde ele passa nas gruas da Suzano SAL(XFS Client) coletando e enviados os dados, porém, nessse caso precisa de uma configuração onde será gerado o coletor dizendo quais são os installCodes que existira em seu arquivo para ser obtido futuramente. No caso devo vim na Configuração do Suzano SAL, gerar o Arquivo e depois sincronizar os dados no coletor. Antes de enviar os dados para o xMova são enviados os installCodes que ele deve fazer a requisição, depois eles mesmo são devolvidos em outra requisição para a Web, onde envia todos os auths que o xMova requisitou

Gerar Arquivo

Para Gerar o Arquivo é necessário ter acesso a Admin Console > Acessar XFS e depois de já configurado é só clicar no botão Gerar Arquivo dentro no menu ações.

acoes

Após isso é enviada uma mensagem para uma fila de processamento para que o arquivo seja gerado em background, assim em Log de Geração vai mostrar uma nova linha assim que começar o processamento, para isso hoje ainda é necessário apertar F5, não costuma demorar.

acoes

E quando terminar

acoes

Edição das configurações

Para editar uma configuração existente você pode acessar como admin, ir no menu Admin Console > Acessar XFS nisso vai ter seu entry point, onde tera um editor de código sempre validando o JSON, e também é possível alterar a empresa, filial e local.

acoes

Gerar por EntryPoint

Caso deseje gerar por entry point o código deve ser:

$xfsService = new XMovaFieldServerService();
$saveLogXfsRepo = new SaveLogXFSRepository();
$updateLogXfsRepo = new UpdateLogXFSRepository();
$user = xDS::getUser();

$log = $saveLogXfsRepo->save([
    'name' => 'EntryPoint', // pode ser qualquer nome
    'progress' => BackgroundProgressStatus::DOING,
    'userSeq' => $user->SEQ_DB, 
    'empresa' => $user->EMPRESA_ATUAL,
    'filial' => $user->FILIAL_ATUAL,
    'local' => $user->LOCAL_ATUAL,
    'corporate' => false,// true ou false, se true sobreescreve filial/local com 9999
]);
$result = $xfsService->generateXFSDataFile();
$updateLogXfsRepo->update([
    'seqDb' => $log[2],
    'progress' => BackgroundProgressStatus::DONE, 
    'fileName' => $result['fileName']
]);

Com isso é possível acompanhar pela tela de Log do XFS.

Exemplos

Suzano MVI

{
    "auths": {
        "187123701": {
            "rangeIps": {

            },
            "fields": [
                "SELECT seq_db seqEquipamento, codigo codigoEquipamento FROM app_eqp WHERE ativo=1 "
            ],
            "entities": [
                "Atividade_Programada_Mobile"
            ],
            "empresaFilialLocal": [],
            "share": []
        }
    },
    "installCodes": [220123350, 187123701]
}

Suzano SAL

{
    "auths": {
        "220123350": {
            "fields": [
                "SELECT seq_db seqEquipamento FROM app_eqp WHERE ativo=1"
            ],
            "entities": [
                "Funcionario_Mobile",
                "Equipamento_Mobile",
                "Eqp_Classe_Mobile",
                "Oper_Mobile",
                "Oper_Grupo_Mobile"
            ],
            "empresaFilialLocal": [
                "UPs_Mobile"
            ],
            "shared": []
        }
    },
    "installCodes": [220123350, 187123701]
}