Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

O Fluig tem customização de eventos JMS, permitindo criar procedimentos de auditoria com base nas informações fornecidas pelo produto. O JMS (Java Message Service) é uma API Java™ que provê uma conexão assíncrona entre aplicações por meio de troca de mensagens.

O produto dispara dois tipos um tipo de mensagens mensagem JMS customizáveiscustomizável, o wdkDocument e o wdkAbstract.

wdkDocument será disparado quando houver manipulação nos documentos do Fluig, para a aplicação receber a mensagem com as informações do documento a classe tem que estender o MessageListener e ter a seguinte linha:

...

Bloco de código
languagejava
titleExemplo
import java.util.Enumeration;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageListener;


@MessageDriven(mappedName = "custom/DocumentListener", activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "topic/wdkDocument")
})


public class DocumentListenerMessageBean implements MessageListener {


    @Override
    public void onMessage(Message message) {
        try {
            System.out.println("========Document Listener========");
            System.out.println("Message received: " + message.getJMSMessageID());
            if (message instanceof MapMessage) {
                MapMessage mm = (MapMessage) message;
                @SuppressWarnings("unchecked")
                Enumeration<String> es = mm.getMapNames();
                while (es.hasMoreElements()) {
                    String prop = es.nextElement();
                    System.out.println(prop + ": " + mm.getObject(prop));
                }
            }
            System.out.println("========Fim Document Listener========");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

wdkAbstract será disparado quando houver manipulação em alguns objetos no Fluig, conforme tabela abaixo:

 

Objeto

Descrição

Tabela no BD

Icon

Ícone

ICONE

Topic

Assunto

ASSUNTO

Shortcut

Segurança de Menu

MENU_ICONE

LogAccess

Log de Acesso

LOG_ACCESS

ColleagueReplacement

Substituto

COLAB_SUBSTTO

Application

Aplicativo

APLICATIVO

ProgressLib

Ambiente Progress

AMBIEN_PROGRESS

GlobalCalendar

Feriado

CALEND_GLOBAL

Term

Termo

TERMO

Synonym

Sinônimo

SINONIMO

DocumentType

Tipo do Documento

TIPO_DOCUMENTO

Volume

Volume

VOL_FISIC

AttributionMecanism

Mecanismo de Atribuição

MECAN_ATRIBUIC

EmailTemplate

Template de Email

TEMPLATE_EMAIL

CustomizedDatasetBuilder

Dataset

SERV_DATASET

DataService

Serviços

SERV_DADOS

CustomFields

Campos Customizados

CAMPO_CUSTOM

UserGraphicSetings

DashBoard

CONFIGUR_GRAF_USUAR

Watermark

Marca D’água

MARCA_DAGUA

WebLayout

Layout

WEBLAYOUT

Adapter

Adaptadores

ADAPTER

 

Para a aplicação receber a mensagem com as informações destes objetos a classe tem que estender o MessageListener e ter a seguinte linha:

Bloco de código
languagejava
@MessageDriven(mappedName = "custom/DocumentListener", activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "topic/wdkAbstract")})

 

O objeto de retorno será um MapMessage que conterá os seguintes parâmetros:

  • event (String): Informa qual o tipo de evento que foi efetuado com o objeto, conforme a tabela abaixo:

Evento

Descrição

CREATE

Um novo objeto foi criado.

UPDATE

Um objeto foi modificado

DELETE

Um objeto foi excluído da base de dados.

 

  • userId (String): Usuário que efetuou a ação.
  • entity (String): Entidade do objeto que está sendo manipulado, conforme a tabela de objeto que já foi apresentada acima.
  • mapNewVersion (byte[ ]): Array de bytes de um HashMap<String, Object> com as propriedade do objeto.
  • mapPreviousVersion (byte[ ]): Array de bytes de um HashMap<String, Object> com as propriedade do objeto antes da alteração.

 

Informações
titleNota

Este mapa não terá objetos quando o evento for CREATE e DELETE.

 

Para transformar o Array de bytes recebido na mensagem em um HashMap basta utilizar a função abaixo:

Bloco de código
languagejava
 private Map<String, Object> decoderMap(byte[] array) {
    
        if(array.length>0){
            ByteArrayInputStream bos = new ByteArrayInputStream(array);
            ObjectInputStream p = new ObjectInputStream(bos);
            Object docObject = p.readObject();
            try{
                Map<String, Object> map = (Map<String, Object>) docObject;
                return map;
            }catch(java.lang.ClassCastException e){
                e.printStackTrace();
            }
        }                   
        return null;
    }

...

languagejava
titleExemplo

...