Entidade MENSAGENS

MSGCORE.MENSAGENS

Descrição

Entidade que contém mensagens destinadas a usuários do sistema. Cada mensagem é destinada a uma ou mais pessoas e um controle adicional é realizado para gerenciar a leitura de cada um.

Os destinatários podem ser definidos de várias formas:

Atributos

AtributoDomínioRegrasDescrição
IDID(18)Rqd PK Id:
Chave de identificação interna
TITULOTEXT(200)Rqd Título:
Título ou assunto da mensagem.
TIPO_MENSAGEMOPCAO(1)Rqd Tipo de mensagem:
Diferentes tipos de mensagem são apresentados de diferentes formas no sistema.

Valores permitidos:
  • N - Normal - Mensagens normais são apenas apresentadas para os usuários, sem nenhuma necessidade de interação.
  • A - Alerta - Mensagens de alerta são apresentadas de forma invasiva em um diálogo onde o usuário precisa interagir, fechando o diálogo, para continuar a usar o sistema. Este tipo de mensagem somente pode ser utilizada para assuntos realmente importantes.
  • D - Dica de uso - Mensagens de dica de uso são apresentadas em um canal específico para dicas de uso (diferente do canal utilizado para as mensagens normais e alertas). Geralmente, as dicas de uso são vinculadas a determinadas interfaces e são apresentadas logo que o usuário acessa a mesma pela primeira vez.
  • I - Discussão - Discussão sobre um registro

Valor padrão = N
FORMATOOPCAO(1)Rqd Formato:
Indica o formato utilizado para editar a mensagem.

Valores permitidos:
  • H - HTML - A mensagem é formatada em HTML.
  • T - Texto - A mensagem é editada como texto puro.
  • W - Wiki - A mensagem é editada com formatação Wiki.

Valor padrão = W
MENSAGEMTEXT_LONGMensagem:
Mensagem propriamente dita. O conteúdo da mensagem é formatado de acordo com formato definido para ela.
EMITENTE_IDID(18)FK Emitente:
Pessoa (autor) que emitiu a mensagem.

Valor padrão = [PERSON_ID]
Referência para PESSOAS
EDITORIAL_IDID(18)FK Editorial:
Editorial onde a mensagem será publicada. Este é apenas o editorial principal. A mensagem pode ser incluída em outros editoriais.

Referência para EDITORIAIS
DESTINATARIO_IDID(18)FK Destinatário:
Pessoa para qual a mensagem é destinada, caso esteja vazia é para todas as pessoas.
Este atributo ficará obsoleto no futuro. Utilizar o editorial específico do usuário.

Referência para PESSOAS
RESPOSTA_MENSAGEM_IDID(18)FK Resposta da mensagem:
Quando informado, indica que a mensagem é uma resposta a outra mensagem.

Referência para MENSAGENS
DATA_ENVIODATE_TIMEData de envio:
Data e hora em que a mensagem foi enviada.
DATA_ALTERACAODATE_TIMEData de alteração:
Data e hora da última alteração do registro. Quando o registro é alterado, ele passa a ser reenviado para seus destinatários e provoca uma nova leitura do mesmo.
DATA_INICIODATE_TIMEData de início:
Data de início ou publicação da mensagem. Uma data futura permite a inclusão de uma mensagem que será distribuída com antecedência mas que estará disponível para leitura apenas a partir da data (e hora) informada neste campo.
Caso não informada, a mensagem estará disponível imediatamente.
DATA_TERMINODATE_TIMEData de término:
Data de término da validade e apresentação da mensagem. Quando informada, a mensagem não será mais apresentada a partir deste data e hora.
VERSAO_INICIOUPPER(20)Versão de início:
Quando informado, indica que esta mensagem somente deve ser apresentada quando a versão do sistema for igual o superior à informada. Este atributo é utilizado apenas para mensagens emitidas pelas releases de atualização do sistema.
VERSAO_TERMINOUPPER(20)Versão término:
Quando informado, indica que esta mensagem deve ser apresentada apenas quando a versão atual do sistema for igual ou inferior à informada. Este atributo é útil para informar correções ou melhorias disponíveis no sistema.
SITUACAOOPCAO(1)Rqd Situação:
Indica a situação da mensagem.

Valores permitidos:
  • E - Enviada - A mensagem já foi enviada (data de envio informada)
  • P - Pendente - A mensagem ainda não foi enviada.

Valor padrão = E
UUIDUPPER(40)UK UUID:
Identificação universal única da mensagem gerada automaticamente. Esta identificação permite que uma mensagem já transmitida para um outro servidor seja editada.
VERSAO_IDID(18)Versão:
Número de versão da mensagem. Este campo é atualizado na inclusão do registro, na sua alteração e quando é replicada. Cada instância da base terá seu próprio valor de versão.
POSICAO_FILABIG_INTEGER(18)Rqd AK Posição na fila:
Indica a posição da mensagem na fila. Na inclusão, nas alterações que envolvam algum dos atributos de interesse dos destinatários ou na alteração dos destinatários, este atributo é automaticamente zerado, marcando-o para ir para o fim da fila.

Paralelamente, uma thread centralizada sequencia todas as mensagens da posição zero para o final da fila. Este processo ocorre em thread separada para evitar problemas relacionados às transações realizadas no banco de dados.

A leitura de mensagens por outros servidores, utilizam a posição da fila como indexador chave (ler apenas mensagens cuja posição na fila seja superior à ultima posição já lida).

Valor padrão = 0
OPERACAO_IDID(18)FK Operação:
Define que operação/interface foi utilizada para acessar o registro. Normalmente é a VIEW.

Referência para OPERACOES_SISTEMAS
ENTIDADE_IDID(18)FK Entidade:
Entidade do registro.

Referência para ENTIDADES_SISTEMAS
REGISTRO_IDID(18)AK Registro:
ID do registro que originou essa mensagem.
CATEGORIA_DESTINATARIO_IDID(18)FK Categoria de destinatários:
OBSOLETO - ESTA RELAÇÃO É GERENCIADA PELA SUBSCRIÇÃO.

Define um grupo/categoria ao qual deve ser destinada a mensagem.

Referência para CATEGORIAS
MENSAGEM_LIDAFLAG(1)Mensagem lida:
OBSOLETO - O CONTROLE DE LEITURA É REALIZADO POR USUÁRIO

Define que a mensagem já foi lida pelo usuário destino.
Quando não informado o destinatário, a mensagem sempre será considerada como "NÃO" lida.

Valor padrão = N
TIPO_MENSAGEM_IDID(18)FK Tipo de mensagem:
OBSOLETO

Tipo ou classificação da mensagem.

Referência para TIPOS_MENSAGENS

Regras

Calcular situação

(Antes de inserir, Antes de alterar)
Calcula a situação da mensagem.
Caso data de envio estiver informada, situação é "Enviada", caso contrário, situação é "Pendente".

Atualizar mensagens na memória

(Depois de alterar)
Sempre que alterar a situação, deve atualizar as mensagens em memória do usuários.

Calcular UUID

(Antes de inserir)
Gera um código aleatório único para identificar a mensagem.

Preencher data de alteração

(Antes de alterar, Antes de inserir)
Toda a vez que o registro for alterado, o atributo Data de alteração á automaticamente atualizado.

Agendar para colocar na fila

(Antes de alterar)
Caso algum dos seguintes atributos seja alterado, marca a mensagem para que ela seja movida para o final da fila:

Atualizar confirmações de leitura

Monta a lista de usuários que deverão confirmar leitura de acordo com o que está registrado na lista de destinatários.

Atualizar mensagens em memória(usuario)

Atualiza o place-holder de informações do usuário com as mensagens que devem ser lidas. Este método é chamado quando o usuário se loga no sistema e carrega a lista com os assuntos das mensagens considerando os seguintes critérios:

Destinatários(destinatarios)

Permite definir vários destinatários.

Enviar

Envia a mensagem para os destinatários informados.

Ler destinatários

Monta campo com todos os destinatários da mensagem.

Notify(evento, objeto)

Procedimento chamado nos eventos de login/logou do sistema e que controla a passagem das mensagens para a memória.

Organizar fila

A organização da fila é composta pela sequenciação das mensagens de forma centralizada, necessária quando existe a distribuição de mensagens para outros servidores de fora da rede de replicação. Caso a sequenciação fosse feita de forma descentralizada existiria a possibilidade de um servidor ler as mensagens a partir de uma posição da fila e perder mensagens já postadas em transações de processos que ainda estão sendo executados (que não foram "comitados").

As mensagens marcadas com "0" na posição da fila, são ordenadas por data/hora de alteração e tem a sua posição alimentada através de novas sequencias.

Atenção
Esta rotina deve ser executada em transação explícita e nos ambientes replicados, sua execução deve ser centralizada a um único servidor conforme definido na preferencia MSGCORE.MENSAGENS.SERVIDOR_ORGANIZADOR_FILA.

Para o usuário da sessão

Inclui o usuário da sessão como destinatário.

Para usuários de função(nome_funcao, estabelecimento)

Atenção
Ainda não implementado
Prepara para enviar a mensagem para todos os usuários de uma determinada função.

Salvar destinatários(destinatarios)

Persiste os destinatários informados no parâmetro.