Inicialização e Estrutura do BISPDV: mudanças entre as edições

De BIS Wiki
Ir para navegação Ir para pesquisar
Criou página com '= BISPDV = == Inicialização do Sistema == center|Inicialização do Sistema A inicialização do aplicativo segue as seguintes regras...'
 
Desfeita a edição 1601 de Rodrigogml (Discussão)
Etiqueta: Desfazer
 
(Uma revisão intermediária pelo mesmo usuário não está sendo mostrada)
Linha 55: Linha 55:


Uma vez nos estrados '''ADMINISTRATIVE''' ou '''SALES''' o usuário não pode mais voltar para os outros estados até que a aplicação seja finalizada.
Uma vez nos estrados '''ADMINISTRATIVE''' ou '''SALES''' o usuário não pode mais voltar para os outros estados até que a aplicação seja finalizada.
=== Inicialização: '''StartCheckStatus''' ===
[[Imagem:workflow_StartCheckStatus.png|center]]
Esse é o WORKFLOW que cuida da checagem e inicialização inicial do sistema. Seus funcionamento é assim:
* '''INITING''' - Estado inicial de começo das checkagens;
*: Neste estágio o sistema começa a ser inicializado, como carregamento dos bundles.
*: Tudo inicializado com sucesso, passa para o estado '''CHECKING_LOCALDB'''.
* '''CHECKING_LOCALDB''' - Estado para verificação do banco de dados.
*: Verifica se o banco de dados existe, se não existir o cria;
*: Passa para o estado '''CHECKING_LOCALDB_VERSION''';
* '''CHECKING_LOCALDB_VERSION''' - Verifica se o banco de dados está na versão correta e faz as alterações/atualizações necessárias;
*: Quando atualizado passa para o '''CHECKING_INSTALLATION''';
* '''CHECKING_INSTALLATION'''- Valida se a instalação do PDV está ok (empresa configurada, dados sincronizados, etc.).
*: Se a instalação estiver OK vai para o estado '''INSTALLATION_OK''', caso contrário para '''INSTALLATION_NEEDED'''.
* '''INSTALLATION_NEEDED'''
*: Nesse estado o PDVApp não faz nada, mas serve de sinalização para o '''PDVUI''' que a instalação precisa ser realizada, e a tela é exibida. Quando a tela de instalação é finalizada, o PDVUI sinaliza para o '''PDVAapp''' que volta para o estado de '''CHECKING_INSTALLATION'''.
* '''INSTALLATION_OK''' - Estado sem operação, apenas sinalizando que a Instalação está completa.
*: Passa automaticamente para o estado '''START_TERMINALAPP'''.
* '''START_TERMINALAPP''' - Inicializa o Terminal Client (Reponsável por realizar a comunicação com o servidor).
*: Após inicializá-lo passa automaticamente para o estado '''CHECKING_SERVER_ID'''.
* '''CHECKING_SERVER_ID''' - Valida se o ID atual configurado na estação PDV está válido e cadastrado corretamente no servidor.
*: Se o cadastro estiver OK passa para '''LOAD_CHECKOUT_DATA''', caso contrário trava a aplicação em erro para garantir que seja reinstalada.
* '''LOAD_CHECKOUT_DATA''' - Carrega as informações do checkout, se tiver persistido, ou se encontrar no banco de dados algum checkout aberto.
*: Passa para o '''START_SYNCDATA'''.
* '''START_SYNCDATA''' - Inicializa a Thread responsável por sincronizar os dados com/do servidor.
*: Passa para o '''OK'''.
* '''OK''' - Estado em que o WORKFLOW finalizou com sucesso. Utilizado para sinalizar outras partes do sistema que a inicialização terminou com sucesso e o sistema está pronto para ser utilizado.
*: Sinaliza o PDVApp de que este workflou finalizou através do método '''app.freeStartCheck()''', que dá sequência no workflow '''PDVState'''.

Edição atual tal como às 23h41min de 16 de fevereiro de 2025

BISPDV

Inicialização do Sistema

Inicialização do Sistema
Inicialização do Sistema

A inicialização do aplicativo segue as seguintes regras:

PDVStarter

A aplicação deve ser inicializada sempre por esta classe que contém o método main();

Esta classe não faz absolutamente nada além de passar a chamada, incluindo os argumentos de linha de comando para a PDVUpdater. Sua existência tem a finalidade de permitir a incorporação de plugins, siffers, debugger e outras ferramentas na aplicação. Para isso, basta que a ferramenta implemente uma 'sósia' desta classe (mesmo nome e package), e que sua bibliotexa (.jar) seja carregada no classpath antes dos .jars da própria aplicação. Após realizar o que for necessário a ferramenta deve repassar a chamada para PDVUpdater da mesma forma, para que a aplicação se inicie em seu fluxo normal.

PDVUpdater

Esta classe que concentra as tarefas de inicialização da aplicação recebe os seguintes parâmetros:

  • -help - Exibe este menu de opções.
  • -testDarumaFW - Não inicializa a aplicacao. Tenta apenas inicializar as bibliotecas da DarumaDramework, verificando se as DLLs estão OK. Não faz comunicação com a impressora.
  • -watcher - Habilita uma thread que imprime o valor de algumas variáveis do sistema a cada segundo no console do sistema.
  • -autoSaleTest - Carrega um arquivo de vendas automáticas. Esse arquivo deve conter o que deve ser vendido, e as vendas serão feitas automaticamente no horário programado.
  • -noUI - Não inicializa a UI do PDVApp. Útil quando estamos utilizando o -saleFile


Valida se é a única instância tentando bloquear o arquivo .\\instance.lock no diretório da aplicação.

PDVApp

O PDVApp é o coração da aplicação. Funciona com uma série de máquinas de estado (workflows) que definem a lógica da operação da aplicação.

Workflows do Sistema

Principal: PDVState


Esse é o WORKFLOW geral da aplicação, é definida nos valores da enum PDVState:

  • START - Valor inicial, utilizado somente na inicialização da aplicação.
    Neste passo é iniciado o workflow StartCheckStatus, enquanto esse workflow secundário é executado, o PDVState é passado para o estado STARTCHECK.
  • STARTCHECK - Estado enquanto a checagem inicial do sistema ocorre;
    Se a checagem inicial finalizar com sucesso vai para o estado WAITINGLOGIN, em caso de erro vai para o STARTCHECK_FAIL.
  • STARTCHECK_FAIL - indicador de que o processo de checagem inicial terminou com erro.
    Não há saída desse estado, a não ser reiniciar ou refazer a instalação do PDVApp.
  • WAITINGLOGIN - Sinaliza que o sistema está aguradando o login.
    Fica nesse estado até que o PDVUI interaja com o usuário para executar o login.
    Uma vez feita o login pelo método doLogin(), se realizado com sucesso para para o estado ADMINISTRATIVE.
  • ADMINISTRATIVE - Estado em que o sistema permite ser configurado, e permite acesso a outras funções administravias do checkout (como abrir e fechar o checkout).
    Este já um estado de uso do sistema, deste estado o usuário pode entrar no modo de venda SALES.
  • SALES - Estado em que o sistema entra no modo de vendas, permite a abertura de venda, venda de produtos, recebimento, etc.
    Sempre que não estiver com uma venda aberta, o usuário pode voltar para o estado ADMINISTRATIVE.

Uma vez nos estrados ADMINISTRATIVE ou SALES o usuário não pode mais voltar para os outros estados até que a aplicação seja finalizada.


Inicialização: StartCheckStatus


Esse é o WORKFLOW que cuida da checagem e inicialização inicial do sistema. Seus funcionamento é assim:

  • INITING - Estado inicial de começo das checkagens;
    Neste estágio o sistema começa a ser inicializado, como carregamento dos bundles.
    Tudo inicializado com sucesso, passa para o estado CHECKING_LOCALDB.
  • CHECKING_LOCALDB - Estado para verificação do banco de dados.
    Verifica se o banco de dados existe, se não existir o cria;
    Passa para o estado CHECKING_LOCALDB_VERSION;
  • CHECKING_LOCALDB_VERSION - Verifica se o banco de dados está na versão correta e faz as alterações/atualizações necessárias;
    Quando atualizado passa para o CHECKING_INSTALLATION;
  • CHECKING_INSTALLATION- Valida se a instalação do PDV está ok (empresa configurada, dados sincronizados, etc.).
    Se a instalação estiver OK vai para o estado INSTALLATION_OK, caso contrário para INSTALLATION_NEEDED.
  • INSTALLATION_NEEDED
    Nesse estado o PDVApp não faz nada, mas serve de sinalização para o PDVUI que a instalação precisa ser realizada, e a tela é exibida. Quando a tela de instalação é finalizada, o PDVUI sinaliza para o PDVAapp que volta para o estado de CHECKING_INSTALLATION.
  • INSTALLATION_OK - Estado sem operação, apenas sinalizando que a Instalação está completa.
    Passa automaticamente para o estado START_TERMINALAPP.
  • START_TERMINALAPP - Inicializa o Terminal Client (Reponsável por realizar a comunicação com o servidor).
    Após inicializá-lo passa automaticamente para o estado CHECKING_SERVER_ID.
  • CHECKING_SERVER_ID - Valida se o ID atual configurado na estação PDV está válido e cadastrado corretamente no servidor.
    Se o cadastro estiver OK passa para LOAD_CHECKOUT_DATA, caso contrário trava a aplicação em erro para garantir que seja reinstalada.
  • LOAD_CHECKOUT_DATA - Carrega as informações do checkout, se tiver persistido, ou se encontrar no banco de dados algum checkout aberto.
    Passa para o START_SYNCDATA.
  • START_SYNCDATA - Inicializa a Thread responsável por sincronizar os dados com/do servidor.
    Passa para o OK.
  • OK - Estado em que o WORKFLOW finalizou com sucesso. Utilizado para sinalizar outras partes do sistema que a inicialização terminou com sucesso e o sistema está pronto para ser utilizado.
    Sinaliza o PDVApp de que este workflou finalizou através do método app.freeStartCheck(), que dá sequência no workflow PDVState.