...
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.
Além disso, implementamos também um exemplo de como tornar o campo 'Descrição/Versão/Revisão' de preenchimento obrigatório, apresentado no momento do check in do documento. O exemplo é apresentado como: Exemplo 1 - Tornar campo descrição/versão/revisão obrigatório.
Exemplo:
Bloco de código |
---|
language | js |
---|
linenumbers | true |
---|
|
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 está sendo criado ou editado, porém somente para consulta através do método getValue.
Propriedade | Descrição | Tipo |
---|
WKDocument | Objeto do Documento | DocumentDto |
WKDocumentEdit | Objeto do Documento | DocumentDto¹ ¹Apenas para atualizar o campo keyWord do documento. |
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 |
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, logo a variável WKListApprover só terá informações quando realmente existirem aprovadores na publicação.
Exemplos de implementação:
Deck of Cards |
---|
history | false |
---|
id | Exemplos beforeDcoumentPublisher |
---|
|
Card |
---|
label | 1- Validar informações do documento |
---|
| É possível usar vários objetos e fazer validações e é muito comum validar permissões específicas ao negócio do cliente e não permitir a inclusão do documento. No exemplo abaixo, o trecho de código está mostrando todos os possíveis atributos, declara os possíveis objetos, exibe no log algumas informações desses objetos, depois verifica os aprovadores, validando que não pode conter um usuário administrador como aprovador e exibe todos documentos relacionados. Bloco de código |
---|
language | js |
---|
linenumbers | true |
---|
| 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");
|
|
|
Bloco de código |
---|
language | js |
---|
title | Exemplo 1 - Tornar campo descrição/versão/revisão obrigatório |
---|
linenumbers | true |
---|
|
function beforeDocumentPublisher() {
var doc = getValue("WKDocument");
// Verifica se a descrição da versão não está preenchida
if (doc.getVersionDescription() == "") {
###Documentodoc.getDocumentId() + " - Versão: " + doc.getVersion() + " não está com a Descrição da Versão preenchida!");
user);
log.info("Empresa: " + company);
|
| //Informasomenteonumerododocumentodeorigem,paraocasodecheckincomnovaversao/revisao
var constraintDocument1 = DatasetFactory.createConstraint('allocatedDocumentPK.sourceDocument',log.info("Número do documento: "+ doc.getDocumentId() |
| , getDocumentId, ConstraintType.MUST //Instanciandoodataset
vardatasetDocument=DatasetFactory.getDataset('allocatedDocument',null,newArray(constraintDocument1),null);
// Verifica se o documento esta em checkout/checkin e exibe a mensagem
ifdatasetDocument.rowsCount>) {
; j < listApprover.size(); j++) {
|
| throw"ParaefetuarocheckinénecessárioinformaraDescriçãoda Versão!";
if (listApprover.get(j).getColleagueId().equals("adm")){
throw "O usuário adm não |
| }
}
} |
São disponibilizadas algumas propriedades referentes ao documento que está sendo criado ou editado, porém somente para consulta através do método getValue.
...
List<DocumentSecurityConfigDto>
...
Lista com os documentos relacionados ao documento
...
int
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, logo a variável WKListApprover só terá informações quando realmente existirem aprovadores na publicação.
Exemplo:
Bloco de código |
---|
language | js |
---|
linenumbers | true |
---|
|
function beforeDocumentPublisher(){
documentos";
}
}
}
if(listSeg != null){
for(j = 0; j < listSeg.size(); j++) {
if (listSeg.get(j).getAttributionValue().equals("cvd")){
|
| vardoc=getValue("WKDocument");
"O usuário cvd não pode estar na segurança de documentos";
|
| varsubject= getValue("WKSubject");
varlistApprover= getValue("WKListApprover");varlistSeg = getValue("WKListSecurity");vargetValue("WKListRelatedDocument");
varstate=getValueWKState");
Os seguintes documentos estão relacionados a este |
| varuser=getValue("WKUser");
varcompany=getValue("WKCompany"
log.info("UsuárioLogado:"+user);
Empresa companylistRelated.get(j).getRelatedDocumentId());
|
|
log.info("Númerododocumento:"+doc.getDocumentId()+"-Versão:"+ doc.getVersion());
log.info("Assunto: " + subject);
|
| if(listApprover!=null){
log.info("Estado: " + state);
} |
|
Card |
---|
label | 2- Impedir publicação com descrição repetida |
---|
| Exemplo de evento que impede o usuário de publicar um documento com descrição repetida em uma determinada pasta. Bloco de código |
---|
language | js |
---|
linenumbers | true |
---|
| function beforeDocumentPublisher() {
// Exemplo de evento |
| 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";
}
}
}
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";
}
}
}
}
|
|
Card |
---|
label | 3- Tornar campo descrição/versão/revisão obrigatório |
---|
| Exemplo de como tornar o campo 'Descrição/Versão/Revisão' de preenchimento obrigatório, apresentado no momento do check-in do documento. Bloco de código |
---|
language | js |
---|
linenumbers | true |
---|
| function beforeDocumentPublisher() {
var doc = getValue("WKDocument");
// Verifica se a descrição da versão não está preenchida
if (doc.getVersionDescription() == "") {
log.info("### Documento: " + doc.getDocumentId() + " - Versão: " + doc.getVersion() + " não está com a Descrição da Versão preenchida!");
// Informa somente o numero do documento de origem, para o caso de checkin com nova versao/revisao
var constraintDocument1 = |
| if( listRelated != null){
DatasetFactory.createConstraint('allocatedDocumentPK.sourceDocument', doc.getDocumentId(), doc .getDocumentId(), ConstraintType.MUST);
// Instanciando o dataset
var datasetDocument = |
| loginfo("Os seguintes documentos estão relacionados a este documentos: ");getDataset('allocatedDocument', null, new Array(constraintDocument1), null);
// Verifica se o documento esta em checkout/checkin e exibe |
| for(j = 0; j < listRelated.size(); j++) {a mensagem
if (datasetDocument.rowsCount > 0) {
throw "Para efetuar o checkin é necessário informar a Descrição da Versão!";
|
| log.info("Nr. documento: "+ listRelated.get(j).getRelatedDocumentId());
} Card |
---|
label | 4- Parametrizar keyword do documento |
---|
| Exemplo de uso do parâmetro WKDocumentEdit no evento, para que seja possível atualizar o campo keyWord do documento. Bloco de código |
---|
language | js |
---|
linenumbers | true |
---|
| function beforeDocumentPublisher() {
var doc |
| }
= getValue("WKDocument");
|
| Assuntosubjectdoc.getKeyWord());
var docEdit = getValue("WKDocumentEdit");
|
| docEdit.setKeyWord("Novo");
log.info(" |
| Estadostate |
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.
...