EventViewer é o processo padrão de notificações do Protheus que permite aos usuários se inscreverem em notificações específicas do ERP.
Tem como objetivo possibilitar a emissão de mensagens do ERP de seus processos que ocorrem em segundo plano ou até mesmo que ocorrem em seções de outros usuários e que um determinado usuário tenha interesse.
Diferente do comportamento comumente visto nas mídias sociais, nas notificações Protheus os usuários precisam determinar quais eles desejam receber, sendo possível apenas para usuários do grupo de Administradores realizar a inscrição de outros usuários.
Para realizar inscrição em um evento o usuário deverá acessar o menu “Miscelânea” e selecionar a rotina “Inscr. Event Viewer”, enquanto os usuários com acesso ao Configurador podem realizar por meio do menu “Ambiente/Cadastros” também por meio da opção “Inscr. Event Viewer”.
Os eventos apresentados ficam armazenados na Tabela Genérica (SX5) sobre o código E3, podendo o cliente cadastrar e implementar seus próprios eventos, porém os mesmos podem ser sobrescritos caso coincidir com novos Eventos Padrões. |
As notificações do Event Viewer podem ser acessadas por meio do ícone localizado no canto superior direito da tela principal do Protheus e a partir da lib 20240408 o ícone passa a sinalizar a existência de novas notificações, sendo:
Não possui mensagens pendentes
Existência de mensagens não lidas
A partir da lib 20240408 o comportamento das notificações do Event Viewer após sua leitura sofreu uma importante mudança, passando a não mais ser apagado e sendo mantido na base de dados com status de "Evento lido", garantindo um melhor histórico.
Em libs anteriores a notificação é apagada da base de dados após a visualização do usuário.
A inclusão de notificações do Event Viewer é um recurso aberto para implementação tanto pelo Produto Padrão quanto por Clientes em suas Customizações, para isso foi disponibilizada a função EventInsert com o objetivo de registrar um Evento e consequentemente notificar todos os usuários inscritos.
Para isso, primeiramente precisamos proceder com o cadastro do evento na tabela genérica E3 (SX5), para isso deveremos acessar o Configurador no menu “Ambiente/Cadastro” e escolher a rotina “Tabelas” (CFGX016).
Importante
Para cadastro de eventos customizados recomenda – se considerar um número muito superior ao atual para o campo Chave (ex.: se a última chave da tabela E3 é 084, cadastrar customizado a partir de 300), garantindo assim uma distância maior até que novas notificações padrões sobrescrevam as customizadas.
Finalizado o cadastro, o novo evento passa a ser disponibilizado para inscrição para os usuários que selecionarem o Canal “002 – Ambientes” e a categoria “001 – Módulos” conforme abaixo:
Porém apenas com o cadastro nenhum evento será emitido para os usuários inscritos pois ainda se faz necessária a implementação do "gatilho" em uma rotina, gatilho esse que podemos programar pelo uso da função EventInsert que vamos detalhar melhor abaixo:
Parâmetro | Tipo | Descrição | Obrigatório | Deafult |
---|---|---|---|---|
cChannel | Character | Canal do evento | X | |
cCateg | Character | Categoria do evento | X | |
cEventID | Character | Código do evento | X | |
nLevel | Numeric | Nível do evento, sendo:
| X | |
cCargo | Character | Identificador auxiliar do evento | Em branco | |
cTitle | Character | Título da mensagem do evento | Em branco | |
cMessage | Character | Mensagem do evento | Em branco | |
lPublic | Logical | Indica se é pública, e qualquer inscrito receberá a mensagem (.T.) ou se somente o usuário que disparou o evento. | .F. |
Importante
Não é possível emitir um Evento direcionado para um determinado usuário do sistema, sempre é emitido um evento e apenas os usuários inscritos são notificados.
#Include "FWEVENTVIEWCONSTS.CH" Function TstEvent(cMensagem,cTitulo) Local cEventID := "061" Default cMensagem := "" Default cTitulo := "Bloqueio de Processos" EventInsert(FW_EV_CHANEL_ENVIRONMENT /*"002" */,; FW_EV_CATEGORY_MODULES /*"001" */,; cEventID /*cEventID*/,; FW_EV_LEVEL_INFO /*1 */,; "" /*cCargo */,; cTitulo /*cTitle */,; cMensagem /*cMessage*/,; .T. /*lPublic */) Return Nil
Confira a nova funcionalidade de Eventos de Progresso em segundo plano em EventViewer - Eventos de Progresso
Confira os novos Eventos de Progresso dos componentes tNewProcess e Processa
Uso do Mingle para receber notificações do Event Viewer
Confira os novos metodos para emissão de erros controlados das classes tNewProcess (ControlledErrorEV) e Processa (ErrorProcessa)