Á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){
    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.

...

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

WKUserCódigo do usuário
WKCompanyNúmero da empresa
WKNumParentDocumentNúmero da pasta pai

WKDocumentType

 Tipo do documento
WKDocumentTypeId 

ID do tipo de documento

WKPrivateDocumentSe o documento esta sendo publicado na pasta particular (true/false)
WKNumAcess

Número de acessos

WKCommentsComentários do documento
WKAuthorCódigo do autor do documento
WKCreateDateData de criação do documento
WKDescriptionDescrição do documento
WKNumDocumentNúmero do documento
WKNumVersionNúmero da versão do documento
WKExpirationDateData de expiração do documento
WKExpiresDocumento expira? (true/false)
WKFileSizeTamanho do documento em bytes
WKKeyWord

Palavras chaves do documento

WKVolumeVolume do documento
WKSubjectAssunto relacionado ao documento


Exemplo

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

...

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

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

Nota

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

...

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

...

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

É executado antes do documento ir para a lixeira. 

AfterDocumentRemove

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

BeforeDocumentRestore

É executado antes do documento ser restaurado da lixeira.

AfterDocumentRestore

É executado logo após o documento ser retaurado da lixeira.

BeforeDocumentRemovePermanently

É executado antes do documento ser excluído permanentemente

AfterDocumentRemovePermanently

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



BeforeDocumentViewer

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

...


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

PropriedadeDescriçãoTipo
WKDocumentObjeto do DocumentoDocumentDto
WKUserUsuário logadoString
WKCompanyCódigo da Empresaint
Nota

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

...

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

PropriedadeDescriçãoTipo
WKDocumentObjeto do DocumentoDocumentDto
WKSubjectDescrição do Assunto do documentoString
WKUserLocale

Idioma do Usuário logado

String
WKUserUsuário logadoString
WKCompanyCódigo da Empresaint
Nota

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

...

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

...

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

...


Sendo os parâmetros:

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
formId

Código do Formulário

int
cardIdCódigo do Registro de Formulárioint
versionId

Versão do Registro de Formulário

int
cardData Dados do Registro de FormulárioHashmap <String, String>

...


Exemplo 


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 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
languagejs
linenumberstrue
function afterSaveCard(companyId, formId, cardId, versionId, cardData){
}

...


Sendo os parâmetros: 

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
cardIdCódigo do Registro de Formulárioint

...


Exemplo 


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

...

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.  


Exemplo

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

...


São disponibilizados os seguintes parâmetros de consulta:

ParâmetroDescrição
WKUser

Usuário logado

WKUserLocale

Local do usuário

WKCompany 

Id do tenant atual

WKNumAcess Número de acessos ao documento
WKComments

Comentários do documento

WKAuthorAutor do documento
WKCreateDate 

Data de criação do documento

WKDescription

Descrição do documento

WKNumDocument

Número do documento

WKNumParentDocument

Número do documento pai

WKNumVersion

Numero da versão 

WKDocumentTypeTipo do documento
WKExpirationDate

Data de expiração do documento

WKExpires

Se documento expira ou não

WKFileSizeTamanho do documento
WKKeyWord 

Palavras chave do documento

WKDocumentTypeId Id do tipo do documento
WKPrivateDocument 

Indica se é documento privado

WKSubject 

Assunto do documento

WKVolumeId do volume do documento


Propriedades que são atualizadas quando o documento é 
visualizado:

Variável
Descrição
Formato
Document.LevelN.ApproverM*---
 

Document.AuthorAutor do documentoMatricula - Nome do autor
Document.CommentsComentários do documentoTexto
Document.IDCódigo do documentoNúmero
Document.FirstVersionDateData da primeira versão DD/MM/YYYY
Document.LastUpdateDateData da última atualização DD/MM/YYYY
Document.CreationDateData de criação do documento DD/MM/YYYY
Document.ExpiresOnData de expiração do documento DD/MM/YYYY
Document.ApprovedOnData que o documento foi aprovadoDD/MM/YYYY
Document.VersionDescriptionDescrição da Versão/RevisãoTexto
Document.DescriptionDescrição do documento Texto
Document.ActiveDocumento ativotrue ou false
Document.Author.IDMatricula do autor do documentonúmero
Document.Publisher.IDMatricula do publicador do documentoNúmero
Document.Author.Name Nome do autor do documentoTexto
Document.Publisher.Name Nome do publicador do documentoTexto
Document.Approvers1Primeiro aprovador do nível 1Nome do aprovador

Document.Publisher

Publicador do documentoMatricula - Nome do publicador
Document.RevisionRevisão do documentoNúmero da Revisão
Document.ApproversNSegundo aprovador do nível 1Nome do aprovador
Document.TagTags do documentoTexto
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
languagejs
linenumberstrue
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
}


São disponibilizados os seguintes parâmetros de consulta:

ParâmetroDescrição
WKUser

Usuário logado

WKUserLocale

Local do usuário

WKCompany 

Id do tenant atual

WKNumAcess Número de acessos ao documento
WKComments

Comentários do documento

WKAuthorAutor do documento
WKCreateDate 

Data de criação do documento

WKDescription

Descrição do documento

WKNumDocument

Número do documento

WKNumParentDocument

Número do documento pai

WKNumVersion

Numero da versão 

WKDocumentTypeTipo do documento
WKExpirationDate

Data de expiração do documento

WKExpires

Se documento expira ou não

WKFileSizeTamanho do documento
WKKeyWord 

Palavras chave do documento

WKDocumentTypeId Id do tipo do documento
WKPrivateDocument 

Indica se é documento privado

WKSubject 

Assunto do documento

WKVolumeId do volume do documento

...


Propriedades que são atualizadas quando o documento protocolo é impresso:

Variável
Descrição
Document.PrintDateData da impressão 
Document.PrintRequesterRequisitante/Solicitante 
Document.PrintedDocument.AreaResponsibleResponsá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.TagTags do documento
Document.DocumentNrDocumento Número do documento
Document.PrintedDocument.Version Versão do documento 
Document.PrintedDocument.RevisionRevisão do documento
Document.DestinationAreaÁrea 
Document.PrintedDocument.PublisherPublicador do documento
Document.PrintedDocument.VersionDescription1Descrição da versão do documento
Document.PrintedDocument.VersionDescription2 

Continuação da descrição da versão do documento

Document.PrintedDocument.VersionDescription3Continuação da descrição da versão do documento

onApplyDocumentPublishProperties

...

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

...


São disponibilizados os seguintes parâmetros de consulta:

ParâmetroDescrição
WKUser

Usuário logado

WKUserLocale

Local do usuário

WKCompany 

Id do tenant atual

WKNumAcess Número de acessos ao documento
WKComments

Comentários do documento

WKAuthorAutor do documento
WKCreateDate 

Data de criação do documento

WKDescription

Descrição do documento

WKNumDocument

Número do documento

WKNumParentDocument

Número do documento pai

WKNumVersion

Numero da versão 

WKDocumentTypeTipo do documento
WKExpirationDate

Data de expiração do documento

WKExpires

Se documento expira ou não

WKFileSizeTamanho do documento
WKKeyWord 

Palavras chave do documento

WKDocumentTypeId Id do tipo do documento
WKPrivateDocument 

Indica se é documento privado

WKSubject 

Assunto do documento

WKVolumeId do volume do documento

...


Propriedades que são atualizadas quando o documento é visualizado:

Variável
Descrição
Formato
Document.LevelN.ApproverM*---
 

Document.AuthorAutor do documentoMatricula - Nome do autor
Document.CommentsComentários do documentoTexto
Document.IDCódigo do documentoNúmero
Document.FirstVersionDateData da primeira versão DD/MM/YYYY
Document.LastUpdateDateData da última atualização DD/MM/YYYY
Document.CreationDateData de criação do documento DD/MM/YYYY
Document.ExpiresOnData de expiração do documento DD/MM/YYYY
Document.ApprovedOnData que o documento foi aprovadoDD/MM/YYYY
Document.VersionDescriptionDescrição da Versão/RevisãoTexto
Document.DescriptionDescrição do documento Texto
Document.ActiveDocumento ativotrue ou false
Document.Author.IDMatricula do autor do documentonúmero
Document.Publisher.IDMatricula do publicador do documentoNúmero
Document.Author.Name Nome do autor do documentoTexto
Document.Publisher.Name Nome do publicador do documentoTexto
Document.Approvers1Primeiro aprovador do nível 1Nome do aprovador

Document.Publisher

Publicador do documentoMatricula - Nome do publicador
Document.RevisionRevisão do documentoNúmero da Revisão
Document.ApproversNSegundo aprovador do nível 1Nome do aprovador
Document.TagTags do documentoTexto
Document.Version

Versão do documento

Versão,Revisão

...


Desenvolvimento de Eventos JMS

...

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 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
  • companyId (Integer): Código da empresa em que o documento foi manipulado.
  • colleagueId (String): Usuário que efetuou a ação.
  • documentId (Integer): Código do documento que sofreu a ação.
  • version (Integer): Número da versão do documento.
  • lhasCreatedDocument (Boolean): Informa se criou o documento.
  • IhasIncreasedVersion (Boolean): Informa se foi incrementada a versão.
  • changedApproval (Boolean): Informa se o aprovador foi modificado.
  • documento (byte[ ]): Array de bytes com o documento e suas propriedades.

...