Árvore de páginas

Versões comparadas

Chave

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

A partir da versão 1.2, além das notificações padrão do Fluig, é possível criar novos tipos de notificações customizadas, através da API de Notificações do produto. É possível criar aplicativos, widgets, etc que criem e enviem notificações customizadas, além de fazer este processo através de aplicações externas, utilizando a API Pública do Fluig. Este tutorial tem o objetivo de mostrar passo-a-passo como criar um aplicativo que cria uma notificação customizada e envia para os usuários do tenant. Para fazer este mesmo processo através da API Pública do Fluig, consulte a documentação clicando aqui.

Projeto de exemplo

Para facilitar o entendimento e desenvolvimento deste tutorial, foi gerado um projeto de exemplo. Neste projeto, foi implementado um aplicativo que cria uma notificação customizada, simulando um aviso do RH Online: "Seu holerit já está disponível". Este projeto é apenas um exemplo, não foi implementada nenhuma integração real com o sistema RH Online. Para testar o projeto, realizar os seguintes passos:

  1. Baixar o projeto: Clique aqui
  2. Compilar o projeto (é um projeto padrão maven, para compilar, executar "mvn clean install" na raíz do projeto)
  3. Fazer deploy do arquivo "/alert-creator-sample-server/target/alert-creator-sample-server.ear" em um servidor com o Fluig instalado (não fazer este teste em produção!)
Feitos estes passos, o sistema deve gerar um novo tipo de alerta. É possível verificar que o evento foi criado corretamente através da tela de configuraçoes de notificações. Deve aparecer um novo agrupamento chamado "Notificações de RH", com um tipo de notificação, conforme imagem a seguir:

 

Nota

Em um ambiente com muitos usuários, pode haver um pequeno delay entre o deploy do aplicativo e a criação do evento na tela de configurações.

Após a instalação do aplicativo, o sistema enviará de 2 em 2 minutos uma notificação fake informando o usuário que o holerit está disponível no RH Online, conforme a imagem a seguir:

 

Nota

É recomendada a leitura de todo este material, mesmo se o desenvolvedor utilizar como base o projeto de exemplo. Este tutorial apresenta conceitos importantes para trabalhar corretamente com notificações dentro do Fluig.

 

Entendendo os conceitos para criação de notificações customizadas

Módulos de Notificações:

Os módulos de notificação são apenas agrupadores, para que as notificações semelhantes se apresentem agrupadas para o usuário. Os módulos padrão do Fluig são: Colaboração (notificações de apoiar, comentar, etc), Documentos (notificações de indicação de leitura, atualização de versão, etc), Processos (notificações de movimentação de processo, tarefas atrasadas, etc) e Portal (notificações de alteração no layout de páginas, etc).

É possível criar novos módulos de notificações. No projeto exemplo, é criado um novo módulo chamado "Notificações de RH".

Eventos de Notificações:

Antes de criar notificações customizadas, é importante que fique claro o conceito de "Eventos de Notificações". Um evento é uma representação de alguma ação que pode gerar notificações no Fluig. O evento contém todas as configurações das notificações. Por exemplo, o evento de notificação "LIKE" possui o formato padrão de todas as notificações do tipo "Fulano curtiu o post 'Olha que post bacana...". Através do evento o usuário pode configurar o recebimento de notificações. Por exemplo: eu posso configurar o recebimento das notificações do tipo "SHARE" por e-mail e SMS, as notificações do tipo "LIKE" apenas pela Central de Notificações do Fluig, e não receber nenhuma notificação do tipo "FOLLOW_REQUEST_ACCEPTED". Para configurar este recebimento, o usuário deve acessar a tela de configurações de notificações:

Para criar notificações customizadas, é necessário criar novos eventos de notificações. No projeto exemplo, é criado um novo evento chamado "Holerit disponível no RH online".

Atributos de Eventos de Notificações:

Como dito anteriormente, um evento contém as configurações das notificações. Estas configurações são:

  • Requerido: Indica se o usuário pode deixar de receber as notificações relacionadas ao evento. Se o evento for requerido, o usuário deverá obrigatoriamente receber as notificações referentes a ele. Um exemplo de notificação obrigatória é a solicitação de participação em uma comunidade. Obrigatóriamente o moderador da comunidade deve receber todos os pedidos de participação.
  • Agrupado: Indica se as notificações daquele evento são agrupadas por objeto. Caso a notificação seja agrupada, o sistema irá exibir assim: "Fulano, Beltrano, Ciclano e mais 5 pessoas apoiaram o post 'Post do Fulano de Tal...'". Caso a notificação não seja agrupada, o sistema gerará uma notificação nova para cada vez que uma ação for gerada sobre um objeto. OBS: Notificações agrupadas não podem ter ações associadas.
  • Pode ser removido: Indica se a notificação pode ser removida pelo usuário. Caso não possa, o sistema não deixará o usuário remover a notificação, até que seja executada alguma das ações disponibilizadas.
  • Remove após executar uma ação: Se configurada desta forma, após realizar alguma ação, o sistema excluirá automaticamente a notificação. Caso contrário, o sistema exibirá a notificação com uma mensagem informando a ação já executada. Por exemplo: "Fulano que seguir você. (Você já aceitou esta requisição)". O sistema então permitirá que o usuário remova aquela notificação.
  • Apenas para administradores: Indica se aquele tipo de notificação é exclusivo para administradores do tenant.

 

Notificações:

As notificações devem ser criadas obrigatóriamente com um evento associado. Desta forma a Central de Notificações poderá fazer o gerenciamento de criação, envio e exibição da notificação. As notificações criadas contém alguns objetos associados, que são:

  • Usuários que enviaram a notificação: Uma notificação pode ter nenhum, um ou vários usuário que a enviaram. Na criação da notificação pode ser informado nenhum ou um usuário que está enviando. Caso a notificação seja agrupada, a Central de Notificações fará o agrupamento automaticamente.
  • Objeto associado: Uma notificação pode ter ou não um objeto associado. O objeto pode ser um post, um documento, ou qualquer objeto existente dentro ou fora do sistema. Na criação da notificação pode ser informado ou não um objeto associado.
  • Lugar onde foi gerada: Uma notificação pode conter ou não a informação de onde ela foi gerada. Um lugar pode ser uma comunidade, um processo, ou qualquer lugar existente dentro ou fora do sistema. Na criação da notificação pode ser informado ou não um lugar associado.
  • Ações: São as ações disponibilizadas por uma notificação. Confira a seguir uma documentação detalhada.
  • Metadados: São dados do tipo chave-valor que podem ser associados à notificação. Eles podem ser utilizados por aplicativos customizados de envio de notificações.
Ações de Notificações:

Uma notificação pode disponibilizar uma ou mais ações. Estas ações são informadas no momento da criação da notificação. As ações são individuais por notificação, não sendo associadas ao evento relacionado a ela. As ações possuem os seguintes atributos:

  • Tipo de integração: Indica o tipo de integração que será utilizado para executar aquela ação. Atualmente o Fluig suporta três tipos de integração:
    1. JMS: Ao executar aquela ação o sistema irá disparar uma mensagem JMS com os dados da ação. A mensagem JMS disparada é do tipo "EXECUTE_ALERT_ACTION_EVENT". Cabe ao desenvolvedor implementar uma rotina que se conecte ao tópico "TOTVSTechIntegrationListenerTopic", ouça estas mensagens e execute efetivamente as ações.
    2. HTTP: Ao executar aquela ação, o sistema fará uma chamada HTTP a uma URL cadastrada no momento da criação da notificação. Os métodos HTTP suportados atualmente são GET e POST. Cabe ao desenvolvedor disponibilizar um serviço que responda naquela URL e execute efetivamente a ação.
    3. NONE: Ao executar aquela ação o sistema a marcará como executada, mas não realizará nenhuma ação.
  • Tipo: Existe atualmente dois tipos de ação.
    1. MAIN: É a ação principal. O sistema exibirá na Central de Notificações esta ação como ação de destaque.
    2. DEFAULT: É uma ação padrão. O sistema exibirá como ação comum, sem destaque.

Utilizando a API de Notificações para criar eventos customizados

Existem duas formas de utilização da API de Notificações do Fluig: através do módulo "foundation-alert-api", interno ao Fluig e através da API Pública. Este tutorial mostra um exemplo utilizando-se o módulo "foundation-alert-api". Para mais informações sobre a API Pública, clique aqui.

Para criação de um aplicativo interno ao Fluig que utilize a API de Notificações, é necessário criar um projeto Java (padrão maven) e adicionar o seguinte trecho de código no arquivo "pom.xml":

Bloco de código
languagehtml/xml
<dependency>
    <groupId>com.fluig</groupId>
    <artifactId>foundation-alert-api</artifactId> 
    <version>1.2.0-SNAPSHOT</version>
    <scope>compile</scope>
</dependency>
Cadastrando módulos de Notificações:

Para criação de um novo módulo de notificações, é necessário realizar uma chamada ao método "registerModule", da interface "com.totvs.technology.foundation.alert.service.AlertModuleService". Um exemplo de chamada deste método segue abaixo:

Bloco de código
languagejava
@Singleton(mappedName = "MyModuleRegister", name = "MyModuleRegister")
public class ModuleRegister {

	@EJB(lookup = AlertModuleService.JNDI_REMOTE_NAME)
	private AlertModuleService alertModuleService;


	public void registerModule() {
		
		/*
		 * Cria um novo módulo de notificações. Os módulos padrão do Fluig são:
		 * 1. DOCUMENT
		 * 2. PROCESSES
		 * 3. PORTAL
		 * 4. COLABORATION
		 * 
		 * Caso o novo evento de notificações se encaixe em um destes módulos, 
		 * não é necessário criar um novo.
		 */
		final AlertModuleVO myModule = alertModuleService.registerModule(
				"RH_MODULE", "Notificações do RH", myTenantId);
				
	}
}

Os parâmetros para execução do método são:

  1. moduleKey: Chave única de identificação do módulo
  2. description: É a descrição do módulo. Pode ser um texto plano ou uma chave para tradução. Para que a tradução funcione, a chave deve estar previamente cadastrada no serviço I18n, no bundle "foundation_alert".
  3. tenantId: Id do tenant para qual o módulo está sendo criado.
Cadastrando eventos de Notificações:

Para criação de um novo evento de notificações, é necessário realizar uma chamada ao método "createEvent", da interface "com.totvs.technology.foundation.alert.service.AlertEventService". Um exemplo de chamada deste método segue abaixo:

Bloco de código
languagejava
@Singleton(mappedName = "MyEventRegister", name = "MyEventRegister")
public class EventRegister {
	
	@EJB(lookup = AlertEventService.JNDI_REMOTE_NAME)
	private AlertEventService alertEventService;
	

	public void registerEvent() {
				
		alertEventService.createEvent(
				"MY_EVENT",
				Boolean.FALSE,
				"Meu evento customizado",
				"criou",
				"criaram",
				"/myapp/myimg.jpg",
				myModule.getId(),
				Boolean.TRUE,
				Boolean.TRUE,
				Boolean.FALSE,
				Boolean.FALSE,
				tenantId);
		
	}
}

Os parâmetros para execução do método são:

  1. eventKey - String única que representa o evento no Fluig.
  2. required - Indica se o evento é requerido. Caso seja, o usuário não conseguirá configurar para não receber notificações do evento.
  3. descriptionKey - Descrição do evento. Pode ser um texto plano ou uma chave para obter descrição traduzida no I18n. Caso queira utilizar a tradução, a chave deve estar previamente cadastrada no I18n, no bundle "foundation_alert".
  4. singleDescriptionKey - Descrição da ação feita por um usuário. Pode ser um texto plano ou uma chave para obter descrição traduzida no I18n. Caso queira utilizar a tradução, a chave deve estar previamente cadastrada no I18n, no bundle "foundation_alert".
  5. groupDescriptionKey - Descrição da ação feita por por vários usuários. Pode ser um texto plano ou uma chave para obter a descrição traduzida no I18n. Caso queira utilizar a tradução, a chave deve estar previamente cadastrada no I18n, no bundle "foundation_alert".
  6. eventIcon - Ícone que representa o evento (opcional). Este ícone será exibido pelo sistema em notificações que não tenham um usuário que a enviou. Caso tenha um usuário "enviador", o sistema exibirá a foto deste usuário. Caso haja mais de um usuário "enviador", o sistema mostrará a foto do último usuário que enviou a notificação.
  7. moduleId - Módulo ao qual pertence este evento
  8. grouped - Indica se a notificação pode ser agrupada por ação e objeto.
  9. canRemove - Indica se a notificação pode ser removida.
  10. removeAfterExecAction - Indica se a notificação é removida após ser executada uma ação.
  11. onlyAdmin - Indica se o evento é válido somente para usuários administradores.
  12. tenantId - Tenant para o qual o evento está sendo cadastrado.
Enviando Notificações:

Para enviar uma notificação é necessário realizar uma chamada ao método "sendAlert", da interface "com.totvs.technology.foundation.alert.service.AlertService". Um exemplo de chamada deste método segue abaixo:

Bloco de código
languagejava
@Stateless(name = "AlertCreator", mappedName = "AlertCreator")
public class AlertCreator {
	
	@EJB(lookup = AlertService.JNDI_REMOTE_NAME)
	private AlertService alertService;
	
	public void sendHoleritAlert() {
		
		alertService.sendAlert("MY_EVENT", loginUserThatSendsTheNotification, loginUserThatIsGoingToReceiveTheNotification, objectAttached, placeWhereTheEventOccurs, actions, metadata);
				
	}
}
Os parâmetros para execução do método são:
  1. eventKey - Chave do evento cadastrado para envio de notificações
  2. loginSender - login do usuário que envia a notificação. (opcional)
  3. loginReceiver - login do usuário que irá receber a notificação
  4. object - objeto associado à notificação (opcional) - implementação padrão para a interface "AlertObject" é a classe "com.totvs.technology.foundation.alert.GenericAlertObject", da API de Notificações do Fluig.
  5. place - lugar onde a notificação foi gerada (opcional) - objeto e lugar são tratados com a mesma estrutura de dados - implementação padrão para a interface "AlertObject" é a classe "com.totvs.technology.foundation.alert.GenericAlertObject", da API de Notificações do Fluig.
  6. actions - ações disponibilizadas pela notificação (opcional) -  implementação padrão para a interface "AlertAction" é a classe "com.totvs.technology.foundation.alert.GenericAlertAction", da API de Notificações do Fluig.
  7. metadata - metadados da notificação (opcional)