Árvore de páginas

Versões comparadas

Chave

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

...

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

Bloco de código
languagejs
linenumberstrue
function validateCustomMetadata(fields){
}

...

  • Pela herança da pasta pai.
  • No cadastro de Campos Customizados, marcando a opção Mostrar opção Mostrar em todos documentos ou documentos ou da forma padrão.
  • Através do WebService CustomFieldsService.
  • Na edição dos metadados do documento, pelo usuário.

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
    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

WKDocumentTypeIdID 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
    if( fields.getValue("campo1") == "Area 1"){
        throw 
        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

 

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

Nota

Os objetos Dto’s serão objetos Dto’s serão explicados no capítulo “Objetos utilizados nos eventos”

 

 

O produto retorna null quando 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ó variável WKListApprover só terá informações quando realmente existirem aprovadores na publicação.

Exemplo

 

function beforeDocumentPublisher(){

                

                

                var

                var doc = getValue("WKDocument");

                var

                var subject = getValue("WKSubject");

                var

                var listApprover = getValue("WKListApprover");

                var

                var listSeg = getValue("WKListSecurity");

                var

                var listRelated = getValue("WKListRelatedDocument");

                var

                var state = getValue("WKState");

                var

                var user = getValue("WKUser");

                var

                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

                if(listApprover!=null){

                    for

                    for(j =

 0

 0; j < listApprover.size(); j++) {          

                        if 

                        if (listApprover.get(j).getColleagueId().equals("adm")){

                            throw 

                            throw "O usuário adm não pode ser aprovador de documentos";

                        }

                    }

                }

 

 

                if

                if(listSeg !=

 null

 null){

                    for

                    for(j =

 0

 0; j < listSeg.size(); j++) {    

                        if 

                        if (listSeg.get(j).getAttributionValue().equals("cvd")){

                            throw 

                            throw "O usuário cvd não pode estar na segurança de documentos";

                        }

                    }

                }

 

 

                if

                if( listRelated !=

 null

 null){

                    log.info("Os seguintes documentos estão relacionados a este documentos: ");

                        for

                        for(j =

 0

 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(){
}


As propriedades recuperadas através do método getValue() são as mesmas do eventos beforeDocumentPublisher e eventos beforeDocumentPublisher e a forma de manipulação das propriedades pode ser vista no exemplo do evento beforeDocumentPublisherevento beforeDocumentPublisher.

 

BeforeDocumentViewer

Utilizado quando é preciso fazer validação customizada antes da visualização de algum documento.

Exemplo

 

function beforeDocumentViewer (){
}

 

São disponibilizadas algumas propriedades referentes ao documento que esta sendo visualizado, porem somente para consulta através do método getValue.

Propriedade

Descrição

Tipo

WKDocument

Objeto do Documento

DocumentDto

WKUser

Usuário logado.

String

WKCompany

Código da Empresa

int

Nota

Os objetos Dto’s serão objetos Dto’s serão explicados no capítulo “Objetos utilizados nos eventos”.

 

Exemplo

 

function beforeDocumentViewer(){
 
 
                var
                var doc = getValue("WKDocument");
                var
                var company = getValue("WKCompany");
                var
                var ds
                
                try 
                
                try {
                               var
                               var c1 = DatasetFactory.createConstraint(                                                                                                                                                                                                                                                    "allocatedDocumentPK.companyId", company, company, ConstraintType.MUST);
                               var
                               var c2 = DatasetFactory.createConstraint( "allocatedDocumentPK.sourceDocument", doc.getDocumentId(), doc.getDocumentId(), ConstraintType.MUST);
                               var
                               var c3 = DatasetFactory.createConstraint( "allocatedDocumentPK.sourceVersion", doc.getVersion(), doc.getVersion(), ConstraintType.MUST);
                               var var
                               var c4 = DatasetFactory.createConstraint("active""true","true", ConstraintType.MUST);
                                
                                var constraints =
 new Arrayds
 new Array(c1, c2, c3, c4);
                               
                               ds = DatasetFactory.getDataset("allocatedDocument",
 null
 null, constraints,
 null
 null);
 
 
                }
catch 
catch (e) {
                               log
                               log.error("Erro ao tentar recuperar o documento em CheckOut: " + e.message);
                }
 
 
                if
                if(ds!=
null 
null && ds.
rowsCount>0
rowsCount>0){      
                               throw  
                               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");
                }
}

 

BeforeDownloadContent

Utilizado quando é preciso fazer validação customizada antes do download de algum documento.


Exemplo

 

function beforeDownloadContent (documentId){
}

 

 

São disponibilizadas algumas propriedades referentes ao documento que esta sendo visualizado, 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

WKUserLocale

Idioma do Usuário logado

String

WKUser

Usuário logado

String

WKCompany

Código da Empresa

int

Nota

Os objetos Dto’s serão objetos Dto’s serão explicados no capítulo “Objetos utilizados nos eventos”.

 

Exemplo

 

function beforeDownloadContent(documentId) {
    var
    var companyId = getValue("WKCompany");
    var
    var c1 = DatasetFactory.createConstraint( "documentPK.documentId", documentId, documentId, ConstraintType.MUST);
    var var
    var c2 = DatasetFactory.createConstraint( "documentPK.companyId", companyId, companyId, ConstraintType.MUST);
    
    var constraints =
 new Arrayvar
 new Array(c1, c2);
    
    var ds = DatasetFactory.getDataset("document",
 null
 null, constraints,
 null
 null);
    if 
    if (ds !=
 null 
 null && ds.rowsCount
0var
> 0) {
        
        var parent = ds.getValue(0"parentDocumentId");
        if 
        if (parent ==
 43
 43) {
            throw 
            throw "Download não permitido!";
        }
    }
}

 

AfterSaveCard

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 em uma forma externa. Por exemplo, ao criar o registro de formulário, enviar os dados do mesmo para um Webservice de outro produto.


Exemplo

 

function afterSaveCard(companyId, formId, cardId, versionId, cardData){
}

 

 

Sendo os parâmetros:

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

versionIdVersão do Registro de Formulárioint
cardDataDados do Registro de FormulárioHashmap <String, String>


Exemplo

 

function afterSaveCard(companyId, formId, cardId, versionId, cardData){ 
    var
    var custom = ServiceManager.getService("CustomCard"); 
    var
    var serviceHelper = custom.getBean(); 
    var
    var serviceLocator = serviceHelper.instantiate("com.totvs.technology.webdesk.forms.service.custom.CustomCardServiceLocator"); 
    var var
    var service = serviceLocator.getCustomCardPort();
 
    
    var ar =
 new Array
 new Array(); 
    var
    var it = cardData.keySet().iterator(); 
    while var
    while (it.hasNext()) { 
        
        var key = it.next(); 
        var
        var field1 = serviceHelper.instantiate("com.totvs.technology.webdesk.forms.service.custom.CardKeyValue"); 
         
         
        field1field1
        field1.setKey(key); 
            ar
            field1.setValue( cardData.get(key)); 
        log.info('>' + key + ': ' + cardData.get(key)); 
 
        
        ar.push(field1); 
    
 
    var
    var resultArr = serviceHelper.instantiate("com.totvs.technology.webdesk.forms.service.custom.CardKeyValueArray"); 
    resultArr
    resultArr.setItem(ar); 
    service
    service.create(companyId, formId, cardId, versionId, resultArr); 
}

 

AfterDeleteCard

Utilizado como complemento do evento afterSaveCard. É chamado toda vez que um formulário ou um registro de formulário é eliminado da lixeira.


Exemplo

 

function afterSaveCard(companyId, formId, cardId, versionId, cardData){
}

 

 

Sendo os parâmetros:

Propriedade

Descrição

Tipo

companyId

Código da Empresa

int

cardId

Código do Registro de Formulário

int


Exemplo

 

function afterDeleteCard(companyId,cardId){ 
    var
    var custom = ServiceManager.getService("CustomCard"); 
    var
    var serviceHelper = custom.getBean();
 
    var
    var serviceLocator = serviceHelper.instantiate("com.totvs.technology.webdesk.forms.service.custom.CustomCardServiceLocator"); 
 
    var
    var service = serviceLocator.getCustomCardPort(); 
 
    log.info("########## carregou serviço CustomCard"); 
    service
    service.deleteCard(companyId, cardId); 
}