Armazenamento de Eventos.

1) Introdução

Embora o Elipse E3 já possua diversos eventos que podem ser armazenados automaticamente, também é possível que o integrador/programador gere seus próprios eventos, permitindo assim uma completa rastreabilidade do sistema. Desta forma, este aplicativo tem o objetivo de registrar todo o tipo de intervenção ocorrida entre o operador/sistema e o processo/sistema, adicionando ao projeto ferramentas de armazenamento de dados.


2) Implementação

Por padrão, o E3 permite o registro de diversos eventos, entre eles nomes de usuários, logouts, troca de servidores, etc. Esta configuração é feita diretamente no Domínio, sendo acessada através do E3Server no menu Domínio–Opções, aba Registro de Eventos.

Caso seja necessário armazenar eventos em situações diferentes das disponíveis, é possível utilizar o método TrackEvent() (para maiores informações, consulte o manual de Referência de Scripts), que tem como função armazenar dados na mesma tabela utilizada pelo Registro de Eventos.

A estrutura do método é a seguinte:

TrackEvent(EventMessage, Comment, TimeStamp)


Onde: EventMessage recebe o tipo de evento que será armazenado, Comment é um comentário geral a respeito do evento, e TimeStamp é o horário em que o evento ocorreu.

Um exemplo simples da utilização deste método seria:

Application.TrackEvent "Envio de comando no Motor X", "Usuário Anônimo", "4/6/2007 14:00:00"

3) Aplicação

Anexada a este artigo está uma aplicação exemplo que ilustra como utilizar o método TrackEvent() para inserir os eventos no banco de dados, além de também mostrar os registros já armazenados.

Basicamente, esta aplicação controla um conjunto de motores, onde o usuário tem permissão de ligar/desligar o motor, e também de configurar uma rotação de trabalho para ele. Seu objetivo é armazenar em disco qualquer comando enviado pelo operador, e também registrar quando este comando foi efetivamente realizado.

Inicialmente deve-se habilitar o Registro de Eventos diretamente no E3Server, escolhendo, caso desejado, quais os eventos pré-definidos serão armazenados. Para esta aplicação, foram escolhidos somente os eventos referentes ao login dos usuários.

A seguir, foi adicionado o método TrackEvent() em todos os comandos que o operador pode executar e diretamente na propriedade que está sofrendo alteração. Como a aplicação é baseada em bibliotecas, é suficiente inserir estes comandos diretamente na definição dos objetos XControl e XObject.

O XObject chamado XOMotor possui diversas propriedades, entre elas STATUS e VELOCIDADE, e a cada uma destas foi adicionado um script no evento OnPropertyChanged armazenando a alteração de valor.

O mesmo foi feito no XControl chamado XCMotor, onde o método foi adicionado a cada um dos botões de comandos disponíveis ao operador, e configurado para armazenar a informação de que o usuário logado enviou um comando de alteração de valor.


4) Interação dos objetos da aplicação

A seguir, é demonstrado como os objetos da aplicação interagem entre si. Tomamos como exemplo a alteração de velocidade do Motor XZ11:

Para configurar o novo valor de velocidade até que ela seja efetivamente alterada pelo sistema, siga estes procedimentos:

1) O operador altera o valor configurado para a velocidade e clica o botão Set.
a. Neste momento, é utilizado o método Application.TrackEvent para o banco de dados,  informando que o usuário logado no sistema enviou um comando de alteração de velocidade
b. O objeto XOMotor1 é acessado, e o novo valor de velocidade é enviado para a propriedade SetaVelocidade()

2) O objeto XOMotor1, por meio de seus eventos e propriedades, dispara o script para realização efetiva deste comando.
a. Assim que o comando é realizado com sucesso, uma segunda propriedade do objeto Motor1 é atualizada: a propriedade Velocidade, que recebeu o valor atual de campo.
b. Nesta aplicação, foi gerada uma programação no objeto (para fins didáticos) que tem a função de receber a nova programação de velocidade, contar um determinado tempo, e então repassar esta nova velocidade.
c. Quando o objeto receber esta atualização de valor, um novo dado será enviado para o banco de dados, informando que a velocidade do motor em questão foi alterada.

3) Neste momento, o objeto de tela – XCMotor – recebe seu novo valor de velocidade e atualiza a tela.

5) Considerações finais

A uitilização do método TrackEvent() facilita bastante a criação de rastreabilidade no sistema. Este método permite definir uma mensagem e um comentário a ser armazenado no banco somente com uma linha de comando.

Esta facilidade é ainda mais aparente quando a aplicação é baseada em bibliotecas, sendo possível utilizar estes comandos diretamente na definição de cada objeto.

Anexos:

RegEvents.zip

 

Este artigo foi útil? Was this post helpful?
Yes1
No0

Deixe seu Comentário

Seu endereço de e-mail não será publicado. Campos marcados com asterisco são obrigatórios *