Árvore de páginas

Versões comparadas

Chave

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

...

Bloco de código
languagejs
linenumberstrue
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.

  • Pela herança da pasta pai.
  • No cadastro de Campos Customizados, marcando a opção Mostrar em todos 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"));
}

 

...

Exemplo

 

function validateCustomMetadata (fields){
    fields.setValue("campo1","Valor para o Campo 1");
}

 

...

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

...

 

function validateCustomMetadata (fields){
    log.info("Usuário: " + getValue("WKUser "));
}

 

...

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

Nota

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

 

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

}

 

...

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

...

 

...

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 explicados no capítulo “Objetos utilizados nos eventos”.

 

Exemplo

 

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 CheckOut: " + 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");
                }
}

 

...

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

...

 

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 explicados no capítulo “Objetos utilizados nos eventos”.

 

Exemplo

 

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!";
        }
    }
}

 

...

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.

...

 

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>

...

 

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); 
}

 

...

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

...

 

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

...

 

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); 
}