Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: ajuste geral de pequenos erros.

...

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

...

Já para realizar a edição utiliza-se o fields.setValue, passando como parâmetro, primeiro o nome do campo, em seguida o valor.

...

Alem dos valores dos campos customizados disponibilizamos algumas informações do documento que esta está sendo criado ou editado, porém somente para consulta através do método getValue.

...

As exceções podem ser tratadas utilizando o comando throw. Este comando retornará uma mensagem ao usuário ao tentar salvar o documento.

...

São disponibilizadas algumas propriedades referentes ao documento que esta está sendo criado ou editado, porem porém somente para consulta através do método getValue.

...

Por exemplo: Nem todos os documentos publicados tem aprovador, então logo a variável WKListApprover só terá informações quando realmente existirem aprovadores na publicação.

...

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

...

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.

...

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

PropriedadeDescriçãoTipo
WKDocumentObjeto do DocumentoDocumentDto
WKSubjectDescrição do Assunto do documentoString
WKListApproverLista dos Aprovadores do documentoList<ApproverDto>
WKListSecurityLista com a segurança do documento

List<DocumentSecurityConfigDto>

WKListRelatedDocument

Lista com os documentos relacionados ao documento

List<RelatedDocumentDto>
WKStateEstado da ação: PUBLISH ou MODIFYString
WKUserUsuário logadoString
WKCompanyCódigo da Empresa

int


AfterDocumentRemove

É Este evento é executado logo após o documento ir para a lixeira.

...

São disponibilizadas algumas propriedades referentes ao documento que foi removido, porem porém somente para consulta através do método getValue.

PropriedadeDescriçãoTipo
WKDocumentObjeto do DocumentoDocumentDto
WKSubjectDescrição do Assunto do documentoString
WKListApproverLista dos Aprovadores do documentoList<ApproverDto>
WKListSecurityLista com a segurança do documento

List <DocumentSecurityConfigDto>

WKListRelatedDocument

Lista com os documentos relacionados ao documento

List<RelatedDocumentDto>
WKStateEstado da ação: PUBLISH ou MODIFYString
WKUserUsuário logadoString
WKCompanyCódigo da Empresa

int

BeforeDocumentRestore

É Este evento é executado antes do documento ser restaurado da lixeira.

...

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

PropriedadeDescrçãoTipo
WKUserCódigo do usuárioString
WKCompanyNúmero da empresaint
WKDocumentObjeto do DocumentoDocumentDto
WKUserLocaleIdioma do Usuário logadoString
WKSubjectAssunto do documentoString

AfterDocumentRestore

É Este evento é executado logo após o documento ser retaurado restaurado da lixeira.

Exemplo

Bloco de código
languagejs
linenumberstrue
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);
}

...

São disponibilizadas algumas propriedades referentes ao documento que foi restaurado, porem porém somente para consulta através do método getValue.

...

BeforeDocumentRemovePermanently

É Este evento é executado antes do documento ser excluído permanentemente

...

Bloco de código
languagejs
linenumberstrue
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());
}


São disponibilizadas algumas propriedades referentes ao documento que está sendo excluído permanentemente, porém somente para consulta através do método getValue.

PropriedadeDescriçãoTipo
WKUserCódigo do usuárioString
WKCompanyNúmero da empresaint
WKDocumentObjeto do DocumentoDocumentDto
WKUserLocaleIdioma do Usuário logadoString

AfterDocumentRemovePermanently

É Este evento é executado logo após o documento ser excluído permanentemente.

...

Bloco de código
languagejs
linenumberstrue
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());
}


São disponibilizadas algumas propriedades referentes ao documento que foi excluído pernamentementepermanentemente, porem porém somente para consulta através do método getValue.

PropriedadeDescriçãoTipo
WKUserCódigo do usuárioString
WKCompanyNúmero da empresaint
WKDocumentObjeto do DocumentoDocumentDto
WKUserLocaleIdioma do Usuário logadoString


BeforeDocumentViewer

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

...


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

...

Informações

Veja o exemplo (event-document-expiration-date-validation) no repositorio do fluig clicando aqui.


BeforeDownloadContent

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

...

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

...

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

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


Exemplo

Bloco de código
languagejs
linenumberstrue
function afterSaveCard(companyId, formId, cardId, versionId, cardData){
}

...

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

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

...

Nota

É necessário que a opção " Atualiza propriedades de cópia controlada?" esteja habilitada nas propriedades do documento.

...

Para a aplicação receber a mensagem com as informações do documento, a classe tem que estender o MessageListener e ter a seguinte linha:

Bloco de código
languagejava
@MessageDriven(mappedName = "custom/DocumentListener", activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "topic/wdkDocument")})

...

O objeto de retorno será um MapMessage que conterá os seguintes parâmetros:

  • event (String): Informa  Informa qual o tipo de evento que foi efetuado com o documento, conforme a tabela abaixo:
EventoDescrição
PUBLISH

Um novo documento publicado

MODIFY

Documento é modificado

DELETEDocumento é excluído da base de dados
SENDRECYCLE

Documento é enviado para lixeira

DELETEFOLDER

Uma pasta é excluída da base de dados

EXTERNALCONVERTION

Documento com conversão customizada
CONVERTIONLONGTERMDocumento convertido para longo prazo

MOVE

Um ou mais documento ou pastas foram movidos de uma pasta para outra

RESTORERECYCLE

Restaura documentos e pastas da Lixeira

...