Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Pré-requisitos

...

Índice
outlinetrue
exclude.*ndice
stylenone

Objetivo

Este guia é destinado aos desenvolvedores internos e externos do fluig que desejam manipular os eventos de documentos. O objetivo é apresentar o seu funcionamento e a descrição dos campos utilizados.


Pré-requisitos

Conhecer o conceito e as orientações sobre o Desenvolvimento de Eventos.


Eventos globais JavaScript

Os eventos de documentos são um conjunto de scripts carregados pela API de Documentos, os quais são desenvolvidos utilizando Javascript JavaScript e são chamados durante a execução de ação em Documentos ou em momentos específicos de interação em Documentos.

...

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.

...

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” null, caso o campo não esteja disponível para este documento.

...

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

...

Bloco de código
languagejs
linenumberstrue


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

		}
	}
}





...

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>List<ApproverDto>
WKListSecurityLista com a segurança do documento

List <List<DocumentSecurityConfigDto>

WKListRelatedDocument

Lista com os documentos relacionados ao documento

List< RelatedDocumentDto>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”


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.

...

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.

...

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

List <List<DocumentSecurityConfigDto>

WKListRelatedDocument

Lista com os documentos relacionados ao documento

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

int

...

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

List <DocumentSecurityConfigDto>

WKListRelatedDocument

Lista com os documentos relacionados ao documento

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

int

...

São disponibilizadas algumas propriedades referentes ao documento que foi restaurado, porem 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

...

São disponibilizadas algumas propriedades referentes ao documento que está sendo 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

...


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


Exemplo

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

...

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

...


Exemplo

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

...

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

...