Histórico da Página
...
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.
AddDocumentConvertionExt
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.
ValidateCustomMetadata
Este evento sempre é disparado 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:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function validateCustomMetadata(fields){ } |
...
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:
Bloco de código | ||||
---|---|---|---|---|
| ||||
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:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function validateCustomMetadata (fields){ fields.setValue("campo1","Valor para o Campo 1"); } |
...
Informações |
---|
Veja o exemplo em nosso repositório aqui. |
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
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:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function validateCustomMetadata (fields){ if( fields.getValue("campo1") == "Area 1"){ throw "TRATAMENTO DA EXCEÇÃO"; } } |
BeforeDocumentPublisher
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:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function beforeDocumentPublisher() { // Exemplo de evento que impede o usuário de publicar um documento com descrição // repetida em uma determinada pasta . var state = getValue("WKState"); if (state == "PUBLISH") { var doc = getValue("WKDocument"); // Faz validações apenas se o documento estiver sendo publicado na pasta // 624 if (doc.getParentDocumentId() == 624) { // Reduzir o retorno de registros para reduzir impacto em // performance. var constraintDocument1 = DatasetFactory.createConstraint( 'sqlLimit', '1', '1', ConstraintType.MUST); // Passando código da pasta pai para o Dataset var constraintDocument2 = DatasetFactory.createConstraint( 'parentDocumentId', doc.getParentDocumentId(), doc .getParentDocumentId(), ConstraintType.MUST); // Consultando apenas registros de documentos ativos. var constraintDocument3 = DatasetFactory.createConstraint( 'activeVersion', 'true', 'true', ConstraintType.MUST); // Consultando apenas nos documentos não foram removidos. var constraintDocument4 = DatasetFactory.createConstraint( 'deleted', 'false', 'false', ConstraintType.MUST); // Consultando documentos que tenham a mesma descrição informada na // publicação var constraintDocument5 = DatasetFactory.createConstraint( 'documentDescription', doc.getDocumentDescription(), doc .getDocumentDescription(), ConstraintType.MUST); var datasetDocument = DatasetFactory.getDataset('document', null, new Array(constraintDocument1, constraintDocument2, constraintDocument3, constraintDocument4, constraintDocument5), null); if (datasetDocument.rowsCount > 0) { throw "Já existe um documento com a mesma descrição informada"; } } } } |
...
Por exemplo: Nem todos os documentos publicados tem aprovador, logo a variável WKListApprover só terá informações quando realmente existirem aprovadores na publicação.
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function 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:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function afterDocumentPublisher(){ } |
As propriedades recuperadas através do método getValue() são as mesmas do eventos beforeDocumentPublisher e a forma de manipulação das propriedades pode ser vista no exemplo do evento beforeDocumentPublisher.
BeforeDocumentRemove
Este evento é executado antes do documento ir para a lixeira.
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function beforeDocumentRemove() { //Exemplo implementação var doc = getValue("WKDocument"); var subject = getValue("WKSubject"); var listApprover = getValue("WKListApprover"); var listSeg = getValue("WKListSecurity"); var listRelated = getValue("WKListRelatedDocument"); 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 (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); } |
...
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 | |
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 |
AfterDocumentRemove
Este evento é executado logo após o documento ir para a lixeira.
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function afterDocumentRemove() { //Exemplo implementação var doc = getValue("WKDocument"); var subject = getValue("WKSubject"); var listApprover = getValue("WKListApprover"); var listSeg = getValue("WKListSecurity"); var listRelated = getValue("WKListRelatedDocument"); 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 (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); } |
...
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 |
BeforeDocumentRestore
Este evento é executado antes do documento ser restaurado da lixeira.
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function beforeDocumentRestore() { //Exemplo implementação var doc = getValue("WKDocument"); var subject = getValue("WKSubject"); var listApprover = getValue("WKListApprover"); var listSeg = getValue("WKListSecurity"); var listRelated = getValue("WKListRelatedDocument"); 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()); log.info("Assunto: " + subject); } |
...
Propriedade | Descrção | Tipo |
---|---|---|
WKUser | Código do usuário | String |
WKCompany | Número da empresa | int |
WKDocument | Objeto do Documento | DocumentDto |
WKUserLocale | Idioma do Usuário logado | String |
WKSubject | Assunto do documento | String |
AfterDocumentRestore
Este evento é executado logo após o documento ser restaurado da lixeira.
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function afterDocumentRestore() { //Exemplo implementação var doc = getValue("WKDocument"); var subject = getValue("WKSubject"); var listApprover = getValue("WKListApprover"); var listSeg = getValue("WKListSecurity"); var listRelated = getValue("WKListRelatedDocument"); 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()); log.info("Assunto: " + subject); } |
...
Propriedade | Descrção | Tipo |
---|---|---|
WKUser | Código do usuário | String |
WKCompany | Número da empresa | int |
WKDocument | Objeto do Documento | DocumentDto |
WKUserLocale | Idioma do Usuário logado | String |
WKSubject | Assunto do documento | String |
BeforeDocumentRemovePermanently
Este evento é executado antes do documento ser excluído permanentemente
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function beforeDocumentRemovePermanently() { //Exemplo implementação var doc = getValue("WKDocument"); 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()); } |
...
Propriedade | Descrição | Tipo |
---|---|---|
WKUser | Código do usuário | String |
WKCompany | Número da empresa | int |
WKDocument | Objeto do Documento | DocumentDto |
WKUserLocale | Idioma do Usuário logado | String |
AfterDocumentRemovePermanently
Este evento é executado logo após o documento ser excluído permanentemente.
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function afterDocumentRemovePermanently() { //Exemplo implementação var doc = getValue("WKDocument"); 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()); } |
...
Propriedade | Descrição | Tipo |
---|---|---|
WKUser | Código do usuário | String |
WKCompany | Número da empresa | int |
WKDocument | Objeto do Documento | DocumentDto |
WKUserLocale | Idioma do Usuário logado | String |
BeforeDocumentViewer
Este evento é utilizado quando é preciso fazer validação customizada antes da visualização de algum documento.
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function beforeDocumentViewer (){ } |
...
Propriedade | Descrição | Tipo |
---|---|---|
WKDocument | Objeto do Documento | DocumentDto |
WKUser | Usuário logado | String |
WKCompany | Código da Empresa | int |
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function beforeDocumentViewer(){ var doc = getValue("WKDocument"); var company = getValue("WKCompany"); var ds try { var c1 = DatasetFactory.createConstraint( "allocatedDocumentPK.companyId", company, company, ConstraintType.MUST); var c2 = DatasetFactory.createConstraint( "allocatedDocumentPK.sourceDocument", doc.getDocumentId(), doc.getDocumentId(), ConstraintType.MUST); var c3 = DatasetFactory.createConstraint( "allocatedDocumentPK.sourceVersion", doc.getVersion(), doc.getVersion(), ConstraintType.MUST); var c4 = DatasetFactory.createConstraint("active", "true","true", ConstraintType.MUST); var constraints = new Array(c1, c2, c3, c4); ds = DatasetFactory.getDataset("allocatedDocument", null, constraints, null); }catch (e) { log.error("Erro ao tentar recuperar o documento em check-out: " + e.message); } if(ds!=null && ds.rowsCount>0){ throw "Este documento está em check-out e não pode ser visualizado. Foi gerado o documento " + ds.getValue(0,"allocatedDocumentPK.destinationDocument") + " que está sob responsabilidade do usuário com matrícula "+ ds.getValue(0,"colleagueId"); } } |
Informações |
---|
Veja o exemplo (event-document-expiration-date-validation) no repositorio do fluig clicando aqui. |
BeforeDownloadContent
Este evento é utilizado quando é preciso fazer validação customizada antes do download de algum documento.
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function beforeDownloadContent (documentId){ } |
...
Propriedade | Descrição | Tipo |
---|---|---|
WKDocument | Objeto do Documento | DocumentDto |
WKSubject | Descrição do Assunto do documento | String |
WKUserLocale | Idioma do Usuário logado | String |
WKUser | Usuário logado | String |
WKCompany | Código da Empresa | int |
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function beforeDownloadContent(documentId) { var companyId = getValue("WKCompany"); var c1 = DatasetFactory.createConstraint( "documentPK.documentId", documentId, documentId, ConstraintType.MUST); var c2 = DatasetFactory.createConstraint( "documentPK.companyId", companyId, companyId, ConstraintType.MUST); var constraints = new Array(c1, c2); var ds = DatasetFactory.getDataset("document", null, constraints, null); if (ds != null && ds.rowsCount > 0) { var parent = ds.getValue(0, "parentDocumentId"); if (parent == 43) { throw "Download não permitido!"; } } } |
AfterSaveCard
Este evento é utilizado quando ao criar/salvar os dados de um registro de formulário pela Navegação de Documentos ou por movimentações Workflow se deseja salvar os dados do registro de formulário de uma forma externa. Por exemplo, ao criar um registro de formulário, enviar os dados do mesmo para um Webservice de outro produto.
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function afterSaveCard(companyId, formId, cardId, versionId, cardData){ } |
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
formId | Código do Formulário | int |
cardId | Código do Registro de Formulário | int |
versionId | Versão do Registro de Formulário | int |
cardData | Dados do Registro de Formulário | Hashmap <String, String> |
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function afterSaveCard(companyId, formId, cardId, versionId, cardData){ var custom = ServiceManager.getService("CustomCard"); var serviceHelper = custom.getBean(); var serviceLocator = serviceHelper.instantiate("com.totvs.technology.webdesk.forms.service.custom.CustomCardServiceLocator"); var service = serviceLocator.getCustomCardPort(); var ar = new Array(); var it = cardData.keySet().iterator(); while (it.hasNext()) { var key = it.next(); var field1 = serviceHelper.instantiate("com.totvs.technology.webdesk.forms.service.custom.CardKeyValue"); field1.setKey(key); field1.setValue( cardData.get(key)); log.info('>' + key + ': ' + cardData.get(key)); ar.push(field1); } var resultArr = serviceHelper.instantiate("com.totvs.technology.webdesk.forms.service.custom.CardKeyValueArray"); resultArr.setItem(ar); service.create(companyId, formId, cardId, versionId, resultArr); } |
AfterDeleteCard
Este evento é utilizado como complemento do evento afterSaveCard. É chamado toda vez que um formulário ou um registro de formulário é eliminado da lixeira.
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function afterSaveCard(companyId, formId, cardId, versionId, cardData){ } |
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
cardId | Código do Registro de Formulário | int |
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function afterDeleteCard(companyId,cardId){ var custom = ServiceManager.getService("CustomCard"); var serviceHelper = custom.getBean(); var serviceLocator = serviceHelper.instantiate("com.totvs.technology.webdesk.forms.service.custom.CustomCardServiceLocator"); var service = serviceLocator.getCustomCardPort(); log.info("########## carregou serviço CustomCard"); service.deleteCard(companyId, cardId); } |
onApplyDocumentPrintProperties
Este evento é chamado ao realizar a impressão de documentos que utilizam variáveis de cópia controlada. Onde será possível alterar ou obter o valor das variáveis disponibilizadas para este evento que podem ser consultadas em Impressão de Cópia controlada.
Nota |
---|
É necessário que a opção Atualiza propriedades de cópia controlada? esteja habilitada nas propriedades do documento. |
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function onApplyDocumentPrintProperties(fields) { // Exemplo implementação log.info(fields.get("Document.PrintedDocument.Copies"));//consultando o valor da variável fields.put("Document.PrintedDocument.Copies", "2");//alterando o valor da variável } |
...
Variável | Descrição | Formato |
---|---|---|
Document.LevelN.ApproverM* | --- | |
Document.Author | Autor do documento | Matricula - Nome do autor |
Document.Comments | Comentários do documento | Texto |
Document.ID | Código do documento | Número |
Document.FirstVersionDate | Data da primeira versão | DD/MM/YYYY |
Document.LastUpdateDate | Data da última atualização | DD/MM/YYYY |
Document.CreationDate | Data de criação do documento | DD/MM/YYYY |
Document.ExpiresOn | Data de expiração do documento | DD/MM/YYYY |
Document.ApprovedOn | Data que o documento foi aprovado | DD/MM/YYYY |
Document.VersionDescription | Descrição da Versão/Revisão | Texto |
Document.Description | Descrição do documento | Texto |
Document.Active | Documento ativo | true ou false |
Document.Author.ID | Matricula do autor do documento | número |
Document.Publisher.ID | Matricula do publicador do documento | Número |
Document.Author.Name | Nome do autor do documento | Texto |
Document.Publisher.Name | Nome do publicador do documento | Texto |
Document.Approvers1 | Primeiro aprovador do nível 1 | Nome do aprovador |
Document.Publisher | Publicador do documento | Matricula - Nome do publicador |
Document.Revision | Revisão do documento | Número da Revisão |
Document.ApproversN | Segundo aprovador do nível 1 | Nome do aprovador |
Document.Tag | Tags do documento | Texto |
Document.Version | Versão do documento | Versão,Revisão |
onApplyDocumentProtocolProperties
Este evento é chamado ao realizar a impressão com documento de protocolo. Onde será possível alterar ou obter o valor das variáveis disponibilizadas para este evento que podem ser consultadas em Impressão de Cópia controlada.
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function onApplyDocumentProtocolProperties(fields) { // Exemplo implementação log.info(fields.get("Document.PrintedDocument.Description"));//consultando o valor da variável fields.put("Document.PrintedDocument.Description", "Descrição do documento");//alterando o valor da variável } |
...
Variável | Descrição |
---|---|
Document.PrintDate | Data da impressão |
Document.PrintRequester | Requisitante/Solicitante |
Document.PrintedDocument.AreaResponsible | Responsável pela área |
Document.PrintedDocument.Description | Descrição do documento |
Document.PrintedDocument.Comments | Comentários do documento |
Document.PrintedDocument.VersionDescription | Descrição da Versão/Revisão |
Document.PrintedDocument.Tag | Tags do documento |
Document.DocumentNrDocumento | Número do documento |
Document.PrintedDocument.Version | Versão do documento |
Document.PrintedDocument.Revision | Revisão do documento |
Document.DestinationArea | Área |
Document.PrintedDocument.Publisher | Publicador do documento |
Document.PrintedDocument.VersionDescription1 | Descrição da versão do documento |
Document.PrintedDocument.VersionDescription2 | Continuação da descrição da versão do documento |
Document.PrintedDocument.VersionDescription3 | Continuação da descrição da versão do documento |
onApplyDocumentPublishProperties
Este evento é chamado na publicação ou alteração de documentos. Onde será possível alterar ou obter o valor das variáveis disponibilizadas para este evento que podem ser consultadas em Impressão de Cópia controlada.
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function onApplyDocumentPublishProperties(fields) { // Exemplo implementação log.info(fields.get("Document.Author "));//consultando o valor da variável fields.put("Document.Author", "Autor do Documento");//alterando o valor da variável } |
...