O Millennium, desde as primeiras versões e incluindo o Basic e Store Manager, é um sistema em três camadas, que são apresentação aplicação e banco de dados (3-Tier Application).

Para essas 3 camadas temos os seguintes aplicativos que estão rodando no sistema:


Banco de Dados

Essa é a camada mais básica e não é gerenciada pelo sistema Millenniuim, esse apenas envia as solicitações para o mesmo, ela é feita através de um sistema gerenciador de banco de dados (SGDB) e o Millennium hoje suporta 2 tipos de banco de dados, o Firebird SQL, (Banco de dados inicialmente projetado pela Borland (empresa que  criou o Dephi)  e o Microsoft SQL Server.


Configuração do banco de dados

A configuração do banco de dados do Millennium fica no arquivo wtsdatasources.ini que tem o seguinte formato:

[DataSourcecs] 

MILLENIUM=127.0.0.1:c:\sys\base\MILLENIUM.FDB,dbtype=Firebird

A primeira linha é obrigatória, é o nome da sessão do arquivo de configuração.

Na segunda linha temos o nome do sistema (MILLENIUIM) - isso porque o Sistema pode conter mais de um bando de dados conectado à ele,

depois vem o endereço do servidor (pode ser omitido no caso do firebird estar no mesmo computador, a diferença é que nesse caso o sistema se conectará ao firebird pelo protocolo de comunicação direta

depois separado por um : (dois pontos vem o caminho do banco de dados no caso do firebird ou o nome da instância no caso do SQL Server

separado por virgula vem depois o tipo do banco que pode ser Firebird, Firebird21 ou MSSQL, o tipo Firebird21 é apenas para o Basic quando usamos o Firebird Embarcado e nesse caso ele não utiliza a RFunc (veja mais para frente na instalação do firebird)

ainda pode vir opcionalmente o usuário e a senha caso não seja padrão, user=SYSDBA,password="Hg43&hkj" a senha precisa estar entre aspas


exemplos:

MILLENIUM=xiaomidb1.database.cl9.cloud:MILLENIUMXIAOMI, user=sa, pass="f461JfujdJw9", dbtype=MSSQL

MILLENIUM=177.85.162.203:/var/lib/firebird/3.0/data/MILLENIUM_BM.FDB,user=sysdba,pass="00E7CxKflhhM",dbtype=firebird


DBDIC - Dicionário de dados do Millennium

O DBDic é uma ferramenta desenvolvida pelo time de P&D da Millennium responsável por atualizar a estrutura do banco de dados do sistema e também serve para modelar essa estrutura. Todas as alterações no banco de dados devem ser executadas pelo DBDic e o instaldor dele é o B5DBDICIBX.EXE


TRaceexplorer

Essa ferramenta é muito útil para investigar erros e métodos com ploblemas, ele deve ficar sempre na pasta  wts e quando executado ele abre os arquivos que estão na pasta trace e monta uma àrvore com os métodos que foram executados pelo sistema conforme mostra a imagem à seguir

caso não venha nenhuma informação verifique se os logs do servidor estão configurados para o nível 5 (ver em wtsconfig)

Na barra de  ferramentas existem essas 3 ferramentas que vou descrever:

 Examinar, quando acionada ele entra dentro do método que está selecionado e mostra as interações que ocorreram nele, veja o exemplo (dar dois cliques no método aciona esse comando também)


Veja que nesse exemplo podemos ver também os comandos SQL executados e do lado direito aparece um quadro com todo o comando e abaixo os parâmetros utilizados, além do resultado da operação.

Essa ferramentaserve para voltar para a lista de métodos quando estamos dentro de um método específico, note que o comando acima pode ser recursivo onde um método pode chamar outro método então podemos navegar nas chamadas que foram feitas no servidor.

Essa ferramenta, que funciona apenas na tela inicial serve ara recarregar os logs do disco

essa caixa de texto serve para filtrar apenas os métodos que contem o texto colocado na ferramenta segue exemplo

veja que aparecem apenas os métodos que contem o texto do filtro


WTSBROKER

O wtsbroker é o aplicativo principal do sistema Millennium. O sistema Millennium é um aplicativo em 3 camadas chamado de MVC (Modelo Visão e Controle) onde o Broker faz o papel de  controle, o modelo é atendido pelo banco de dados que pode ser MS SQL Server ou Firebird e a visão é atendida pelo client que no caso hoje pode ser o binbrowser (que roda nas estação) ou uma página HTML acessando a API do broker.

O wtsbroker disponibiliza 2 portas de comunicação, a 6015 que roda um protocolo proprietário da Millennium que trafega as informações entre o broker e o binbrowser (ou ainda outros programas proprietários que entendem esse protocolo), e a porta 6017 que usa o protocolo HTTP com uma API Rest (Restfull onde não existe controle de sessão como o HTML comum). 

o wtsBroker por padrão não abre a porta 6017 por causa de permissões do windows, para que ele abra a porta 6017 é necessáro abrir uma  janela de comando como administrador e executar o comando wtsbroker.exe /register e é recomendado que o wtsBroker nunca rode como administrador para evitar problemas de travamento do mesmo o que resultaria em ter que reiniciar a máquina, se ele travar e não estiver como ADM ele vai aceitar um kill do usuário administrador através do comando taskkill -im wtsbroker.exe -f


O wtsbroker como é um controlador, ou seja ele pre-processa os comandos que  são enviados ao SGBD (Sistema gerenciador de banco de dados), ele aceita várias macros que podem ser consultadas no documento de Macros do Broker.

O wtsbroker utiliza os arquivos com extensão wts onde fica modelada as iterações com o banco de dados, o formato e funcionamento desses arquivos pode ser consultado no documento IEditor e arquivos com extensão WTS.

O wtsbroker roda em múltiplos processos, e cada processo roda uma tarefa que veio dos clients ou ainda que veio do Scheduler (ver mais abaixo), se abrirmos o gerenciador de tarefas do windows vamos ver essas tarefas rodando com um número identificador delas, para ver o identificador deve-se habilitar para visualizar a linha de comando no taskmanager.

O Broker principal é o que não tem o -worker na linha de  comando e cada worker é identificado por um número, esse mesmo número aparece  nas tarefas que o servidor está executando, se queremos matar uma tarefa específica basta finalizar o worker com a mesma identificação..

Scheduller

O Scheduler é o agendador de tarefas do wtsbroker, ele consiste em ler o arquivo scheduler.ini e executar as tarefas definidas nele nos tempo ali programados, não é recomendado mexer no scheduler.ini porque  ele vai ser sobreescrito em um caso de atualização de versão, mas existe  um modo de extender esse arquivo criando um arquivo com o nome scheduler!nome.ini onde o ! significa que será feita uma extensão do arquivo scheduler e o nome depois é um nome que devemos criar para  esta extensão, então o sistema vai carregar primeiro o scheduler.ini e os valores que estiverem nas extensões vão sobrepor os valores originais que estão no scheduler.ini

WTSGUARD

 O wtsguard ou guardião é um aplicativo que monitora o funcionamento do wtsbroker impendindo que alguma transação rode infinitamente ou ainda que o wtsbroker pare de responder, e nesses dois casos ele reinicia a instância com problemas

Para o monitoramento dos métodos, é necessário ter no mesmo diretório um arquivo chamado wtsguard.ini, ele é opcional, se não existir ele apenas monitora se  o broker está respondendo as requisições, o arquivo wtsguard.ini tem o seguinte formato:

[Global]
timeout=900000

[DashBoard]
pattern=wtsreports.viewlets.processschedule
timeout=90000

[Vitrine]
pattern=MILLENIUM_VITRINE.VITRINE
timeout=900000000

Onde na chave global definimos o timeout para todos os metodos que não estão definidos explicitamente no arquivos e as outras chaves definem um metodo explicitamente, nesse caso criamos uma chave com um nome qualquer que não exista dentro do wtsguard.ini, em pattern colocamos um pedaço do nome do método e em timeout o tempo em milisegundos que o método pode rodar, após esse tempo o wtsguard mata o processo do broker que está rodando esse método. No exemplo acima, o dashboard tem 90 segundos para rodar, as publicações da vitrine 10 dias - veja que qualquer metodo que pertença ao objeto millenium_vitrine.vitrine seguirão esta regra, e todos os outros métodos tem 15 minutos para rodar.




  • Sem rótulos