Os eventos de documentos são um conjunto de scripts carregados pela API de Documentos, os quais são desenvolvidos utilizando Javascript e são chamados durante a execução de ação em Documentos ou em momentos específicos de interação em Documentos.
Este evento permite personalizar a conversão de documento realizada pelo fluig. Mais informações sobre ele podem ser encontradas no guia Conversores de Documentos.
Este evento é disparado sempre antes de salvar os valores dos campos customizados de um documento, tanto na publicação como edição. Através dele é possível alterar ou validar os valores dos campos customizados dos metadados de um documento. O evento recebe como parâmetro uma referência aos campos customizados.
Exemplo
function validateCustomMetadata(fields){ } |
No contexto deste evento a variável fields pode ser usada para consultar ou modificar os valores dos campos customizados de um documento. Não permitindo adicionar novos campos.
Para inserir novos campos em um documento existe varias maneiras disponíveis.
Para consultar o valor de um campo customizado neste evento, utiliza-se o fields.getValue passando como parâmetro o código do campo desejado. Retornando “null”, caso o campo não esteja disponível para este documento.
Exemplo
function validateCustomMetadata (fields){ log.info("Valor do Campo 1: " + fields.getValue("campo1")); } |
Já para realizar a edição utiliza-se o fields.setValue, passando como parâmetro, primeiro o nome do campo, em seguida o valor.
Exemplo
function validateCustomMetadata (fields){ fields.setValue("campo1","Valor para o Campo 1"); } |
Alem dos valores dos campos customizados disponibilizamos algumas informações do documento que esta sendo criado ou editado, porém somente para consulta através do método getValue.
WKUser | Código do usuário |
WKCompany | Número da empresa |
WKNumParentDocument | Número da pasta pai |
WKDocumentType | Tipo do documento |
WKDocumentTypeId | ID do tipo de documento |
WKPrivateDocument | Se o documento esta sendo publicado na pasta particular (true/false) |
WKNumAcess | Número de acessos |
WKComments | Comentários do documento |
WKAuthor | Código do autor do documento |
WKCreateDate | Data de criação do documento |
WKDescription | Descrição do documento |
WKNumDocument | Número do documento |
WKNumVersion | Número da versão do documento |
WKExpirationDate | Data de expiração do documento |
WKExpires | Documento expira? (true/false) |
WKFileSize | Tamanho do documento em bytes |
WKKeyWord | Palavras chaves do documento |
WKVolume | Volume do documento |
WKSubject | Assunto relacionado ao documento |
Exemplo
function validateCustomMetadata (fields){ log.info("Usuário: " + getValue("WKUser ")); } |
As exceções podem ser tratadas utilizando o comando throw. Este comando retornará uma mensagem ao usuário ao tentar salvar o documento.
Exemplo
function validateCustomMetadata (fields){ if( fields.getValue("campo1") == "Area 1"){ throw "TRATAMENTO DA EXCEÇÃO"; } } |
Utilizado quando é preciso fazer validação customizada nas propriedades da tela de publicação/edição de documentos antes de salva-lo no banco de dados. Dentre todas as propriedades da tela de publicação/edição de documentos não serão tratados os campos customizados, pois já existe um evento que trata esta situação.
Exemplo
function beforeDocumentPublisher(){ } |
São disponibilizadas algumas propriedades referentes ao documento que esta sendo criado ou editado, porem somente para consulta através do método getValue.
Propriedade | Descrição | Tipo |
---|---|---|
WKDocument | Objeto do Documento | DocumentDto |
WKSubject | Descrição do Assunto do documento | String |
WKListApprover | Lista dos Aprovadores do documento | List<ApproverDto> |
WKListSecurity | Lista com a segurança do documento | List <DocumentSecurityConfigDto> |
WKListRelatedDocument | Lista com os documentos relacionados ao documento | List< RelatedDocumentDto> |
WKState | Estado da ação: PUBLISH ou MODIFY | String |
WKUser | Usuário logado | String |
WKCompany | Código da Empresa | int |
Os objetos Dto’s serão explicados no capítulo “Objetos utilizados nos eventos” |
O produto retorna null quando for necessário pegar umas das propriedades do documento que não exista.
Por exemplo: Nem todos os documentos publicados tem aprovador, então a variável WKListApprover só terá informações quando realmente existirem aprovadores na publicação.
Exemplo
unction beforeDocumentPublisher(){ var doc = getValue("WKDocument"); var subject = getValue("WKSubject"); var listApprover = getValue("WKListApprover"); var listSeg = getValue("WKListSecurity"); var listRelated = getValue("WKListRelatedDocument"); var state = getValue("WKState"); var user = getValue("WKUser"); var company = getValue("WKCompany"); log.info("Usuário Logado: " + user); log.info("Empresa: " + company); log.info("Número do documento: "+ doc.getDocumentId() + " - Versão: "+ doc.getVersion()); if(listApprover!=null){ for(j = 0; j < listApprover.size(); j++) { if (listApprover.get(j).getColleagueId().equals("adm")){ throw "O usuário adm não pode ser aprovador de documentos"; } } } if(listSeg != null){ for(j = 0; j < listSeg.size(); j++) { if (listSeg.get(j).getAttributionValue().equals("cvd")){ throw "O usuário cvd não pode estar na segurança de documentos"; } } } if( listRelated != null){ log.info("Os seguintes documentos estão relacionados a este documentos: "); for(j = 0; j < listRelated.size(); j++) { log.info("Nr. documento: "+ listRelated.get(j).getRelatedDocumentId()); } } log.info("Assunto: " + subject); log.info("Estado: " + state); } |
AfterDocumentPublisher
Utilizado quando é preciso fazer alguma manipulação customizada nas propriedades da tela de publicação/edição de documentos depois que ele foi salvo no banco de dados. Dentre todas as propriedades da tela de publicação/edição de documentos não serão tratados os campos customizados.
Exemplo
function afterDocumentPublisher(){ } |