Inicialização e Estrutura do BISPDV: mudanças entre as edições
Criou página com '= BISPDV = == Inicialização do Sistema == center|Inicialização do Sistema A inicialização do aplicativo segue as seguintes regras...' |
|||
Linha 25: | Linha 25: | ||
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. | 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. | ||
=== 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'''. | |||
== Workflows do Sistema == | == Workflows do Sistema == |
Edição das 23h39min de 16 de fevereiro de 2025
BISPDV
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.
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.
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.