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