Templates de Documentos

Utilizado para que módulos dos sistemas possam criar documentos utilizando templates cadastrados previamente no SIGAdmin. No texto do documento é possível cadastrar variáveis que serão substituídas por algum texto na hora da criação do documento. Essas variáveis devem ser digitadas entre ##, por exemplo: ##ASSUNTO##, ##MOTIVO##, etc.

Implementação

Foram criadas as classes br.ufrn.arq.templates.TipoDocumentoTemplate e br.ufrn.arq.templates.TemplateDocumento, que contém informações sobre o tipo de documento e o dados sobre o documento a ser criado, como o seu tipo, o título/assunto e o texto. Os objetos dessa classe são cadastrados no SIGAdmin para posterior uso. Além disso, foi criada a classe br.ufrn.arq.dao.TemplateEmailDao, que possui um método chamado findByCodigo(String codigo), que permite a busca de um template de documento através do seu código.

Tendo um objeto do tipo TemplateDocumento, é possível substituir suas variáveis por texto através do método public void substituirVariaveis(Map<String, String> params), que recebe como parâmetro um mapa de variáveis, onde a chave é o nome da variável e o valor é o texto que irá substituir a variável. O método percorre o mapa de parâmetros substituindo as variáveis existentes no template pelos valores correspondentes no mapa. Após a substituição das variáveis, pode-se utilizar o título/assunto e o texto do objeto TemplateDocumento para os fins que forem necessários.

Além disso, foi adicionado à classe br.ufrn.arq.email.Mail, um método estático chamado enviaComTemplate, que recebe como parâmetros o nome do destinatário, o e-mail do destinatário, o código do template associado ao e-mail e um mapa com valores para substituir as variáveis existentes no template. , o método sendMessage da classe br.ufrn.arq.email.Mail é chamado, enfileirando a mensagem para posterior envio do e-mail. Os templates de documentos utilizados para envio de e-mail devem ter o tipo de documento “E-Mail”.

Cadastro

O cadastro de templates de documentos é realizado no SIGAdmin, através do link Configurações do Sistema → Templates de Documentos. No cadastro são exigidos o código do template, o tipo de documento, o título/assunto do documento e o texto. Assim como acontece com as mensagens de aviso e os parâmetros, o código dos templates deve ser uma String formada pelo código do sistema, underline, o código do subsistema, underline e um sequencial por subsistema.

Utilização

O template de documentos deve ter sido cadastrado no SIGAdmin e uma constante com o valor do código do template deve ter sido criada no sistema que irá utilizar o template. As classes que contém as constantes para cada sistema são as seguintes:

Sistema Classe
Comum br.ufrn.arq.mensagens.TemplatesDocumentos
SIGAA br.ufrn.sigaa.mensagens.TemplatesDocumentos
SIGRH br.ufrn.sigrh.mensagens.TemplatesDocumentos
SIPAC br.ufrn.sipac.mensagens.TemplatesDocumentos

Para criar um documento a partir de um template, deve-se buscar um template através do método findByCodigo(String codigo) de TemplateDocumentoDao, criar um mapa com várias entradas, uma para cada variávei presente no template e, em seguida, chamar o método substituirVariaveis. Para pegar o título/assunto e o texto do documento, deve-se usar os métodos getTitulo() e getTexto().

Para enviar e-mails com templates, deve-se criar um mapa com várias entradas, uma para cada variávei presente no template. A chave da entrada do mapa deve ser o nome da variávei (com ou sem o ##) e o valor da entrada deve ser o texto que irá substituir a variável na mensagem. Em seguida, deve-se chamar o método Mail.enviaComTemplate, passando como parâmetros o nome do destinatário, o e-mail do destinatário, o código do template a ser utilizado e o mapa de variáveis (ou null, caso não seja necessário).

Exemplo 1

Map<String, String> params = new HashMap<String, String>();
params.put("MOTIVO", "Teste dos templates de e-mail");
params.put("ANO", "2009");
 
TemplateDocumento template = getDAO(TemplateDocumentoDao.class).findByCodigo(TemplatesDocumentos.TEMPLATE_EXEMPLO);
template.substituirVariaveis(params);
 
template.getTitulo(); // Título/assunto do documento
template.getTexto(); // Texto do documento

Exemplo 2

Map<String, String> params = new HashMap<String, String>();
params.put("MOTIVO", "Teste dos templates de e-mail");
params.put("ANO", "2009");
 
Mail.enviaComTemplate("David Pereira", "david@info.ufrn.br", TemplatesDocumentos.TEMPLATE_EXEMPLO, params);