Árvore de páginas

Versões comparadas

Chave

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

...

Nota
titleAtenção

Grande parte dos eventos possuem WKUser para identificar o usuário. Esse ao utilizar a função de substituto, onde um usuário pode substituir outro, irá sempre retornar o usuário que está no momento utilizando o sistema.

Exemplo: Ana colocou Bruno como seu substituto, Bruno acessa o sistema e faz uma ação em nome da Ana, sistema irá retornar o código do usuário Bruno nos eventos que usam WKUser.

 

Eventos

...

do tipo "Before"

De uma forma geral, os eventos do tipo before são executados antes que a ação que disparou o evento seja efetivada, desta forma é possível filtrar os dados que são passados ou até mesmo evitar que a ação executada seja concluída.

Para bloquear a ação basta lançar uma Exception passando uma mensagem de texto que será exibida em formado de toast para o usuário:

 

Exemplo:

Bloco de código
languagejs
titleEstrutura do Evento
 throw "Você não pode efetuar esta ação após as 18 horas."

 

Eventos do tipo "After"

Já os eventos do tipo after são executados após a efetivação da ação e não possuem nenhuma influência sobre esta. Ou seja, qualquer dado alterado no parâmetro recebido dentro do evento não será refletido sobre o conteúdo persistido da ação.

Outra característica interessante desse tipo de evento é que eles não devem lançar exceção, caso isso ocorra a exceção ignorada pelo sistema.

 

Eventos Disponíveis

A seguir serão detalhados os eventos disponíveis no Fluig.

AddDocumentConvertionExt

Este evento permite customizar a conversão de documento realizada pelo Fluig. Mais informações sobre ele podem ser encontradas no guia Conversores de Documentos.

 

DisplayCentralTasks

Este evento é disparado sempre antes de ser exibida a central de tarefas. Através dele é possível inserir, alterar ou remover os links da central de tarefas. O evento recebe como parâmetro um LinkedHashMap com os links disponíveis na central de tarefas.

Exemplo adicionando um link customizado ao final dos itens da central de tarefas:

Bloco de código
languagejava
function displayCentralTasks (links){

...

A seguir serão detalhados os eventos disponíveis no Fluig.

AddDocumentConvertionExt

Este evento permite customizar a conversão de documento realizada pelo Fluig. Mais informações sobre ele podem ser encontradas no guia Conversores de Documentos.

 

DisplayCentralTasks

Este evento é disparado sempre antes de ser exibida a central de tarefas. Através dele é possível inserir, alterar ou remover os links da central de tarefas. O evento recebe como parâmetro um LinkedHashMap com os links disponíveis na central de tarefas.

Exemplo adicionando um link customizado ao final dos itens da central de tarefas:

Bloco de código
languagejava
function displayCentralTasks (links){
links.put("Fluig","http://www.fluig.com");
}

 

Exemplos alterando a ordem de exibição dos links padrões e adicionando três novos, um no início e dois ao final:

Bloco de código
languagejava
function displayCentralTasks (links){
	var _links = new java.util.LinkedHashMap();
	_links.put("Fluig","http://www.fluig.com");
}

 

Exemplos alterando a ordem de exibição dos links padrões e adicionando três novos, um no início e dois ao final:

Bloco de código
languagejava
function displayCentralTasks (links){
	var _links = new java.util.LinkedHashMap();
	_links.put("Fluig","http://www.fluig.com");                                                         
    var it = links.keySet().iterator();
    while (it.hasNext()) {           
       var key = it.next();
       _links.put(key, links.get(key));
	}             
	_links.put("Fluig - DEV" ,"http://dev.fluig.com");
	_links.put("Google","http://www.google.com.br/search?sourceid=chrome&ie=UTF-8&q=" + getValue("WKUser"));

	links.clear();
	links.putAll(_links);
}

...

Bloco de código
languagejava
titleExemplo
function validateCustomMetadata (fields){
	if( fields.getValue("campo1") == “Area 1”){
   		throw "TRATAMENTO DA EXCEÇÃO";
	}
}

...

 

BeforeDocumentPublisher

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.

...

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

 

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

 

 documento " + ds.getValue(0,"allocatedDocumentPK.destinationDocument") + " que está sob responsabilidade do usuário com matrícula "+ ds.getValue(0,"colleagueId");
                }
}

 

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
languagejava
titleExemplo
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>
Bloco de código
languagejava
titleExemplo
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.

 

Bloco de código
languagejava
titleExemplo
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

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

 

BeforeWatchContent

Utilizado quando ao acompanhar algum conteúdo se deseja recuperar informações do registro e usar antes da ação de "acompanhar". Por exemplo, ao acompanhar um documento, é possível recuperar suas informações e usá-las em um dataset.

 

Bloco de código
languagejava
titleExemplo
function beforeWatchContent(companyId, watchDTO){
}

 

Sendo os parâmetros:

Propriedade

Descrição

Tipo

companyId

Código da Empresa

int

watchDTO

Dados do registro

WatchDTO

Bloco de código
languagejava
titleExemplo
function beforeWatchContent(companyId, watchDTO){
	if(watchDTO.getSocialWatchType() == "DOCUMENT"){
		var objClass = "com.totvs.technology.social.document.6";
		var objClass = watchDTO.getObjectClass();
		var patt = new RegExp( /\d+/) ; 
		var documentId = patt.exec(objClass) ;
		var documentVersion = watchDTO.getObjectId();
		var doc = getValue("WKDocument"); 
		var company = companyId; 
		var ds ;
		try { 
			var c1 = DatasetFactory.createConstraint( "allocatedDocumentPK.companyId", company, company, ConstraintType.MUST); 
			var c2 = DatasetFactory.createConstraint("allocatedDocumentPK.sourceDocument",documentId,documentId, ConstraintType.MUST); 
			var c3 = DatasetFactory.createConstraint("allocatedDocumentPK.sourceVersion", documentVersion,documentVersion, 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  "Sua solicitação de notificação foi negada, pois o documento está em checkout." ; 
		}
	}
}

 

AfterWatchContent

Utilizado quando ao acompanhar algum conteúdo se deseja recuperar informações do registro e usar após a ação de "acompanhar". Por exemplo, ao acompanhar um post, é possível recuperar suas informações e usá-las para informar o usuário sobre o autor do post.

 

Bloco de código
languagejava
titleExemplo
function afterWatchContent(companyId, watchDTO){	
}

 

Sendo os parâmetros:

Propriedade

Descrição

Tipo

companyId

Código da Empresa

int

watchDTO

Dados do registro

WatchDTO

Bloco de código
languagejava
titleExemplo
function afterWatchContent(companyId, watchDTO){
	if(watchDTO.getSocialWatchType() == "POST"){
		throw "O usuário "+watchDTO.getUserAlias()+" vai ser notificado sobre o post " + watchDTO.getText() + " do autor " + watchDTO.getPostAuthor() ;
	}
}

 

BeforeUnwatchContent

Utilizado quando ao deixar de acompanhar algum conteúdo se deseja recuperar informações do registro e usar antes da ação de "deixar de acompanhar". Por exemplo, ao tentar deixar de acompanhar uma comunidade, é possível decidir se o usuário pode deixar de acompanhá-la.

 

Bloco de código
languagejava
titleExemplo
function beforeUnwatchContent(companyId, watchDTO){
}

 

Sendo os parâmetros:

Propriedade

Descrição

Tipo

companyId

Código da Empresa

int

watchDTO

Dados do registro

WatchDTO

Bloco de código
languagejava
titleExemplo
function beforeUnwatchContent(companyId, watchDTO){
	if(watchDTO.getSocialWatchType() == "COMMUNITY"){
		
		throw "Você não pode deixar de ser notificado sobre a comunidade " + watchDTO.getDescription() ;
	}
}

 

AfterUnwatchContent

Utilizado quando ao deixar de acompanhar algum conteúdo se deseja recuperar informações do registro e usar após a ação de "deixar de acompanhar". Por exemplo, ao deixar de acompanhar um post, é possível recuperar suas informações e informar o usuário que aquele post possui muitos seguidores.

 

Bloco de código
languagejava
titleExemplo
function afterUnwatchContent(companyId, watchDTO){
}

 

Sendo os parâmetros:

Propriedade

Descrição

Tipo

companyId

Código da Empresa

int

watchDTO

Dados do registro

WatchDTO

Bloco de código
languagejava
titleExemplo
function afterUnwatchContent(companyId, watchDTO){
	if(watchDTO.getSocialWatchType() == "POST" && watchDTO.getNumberWatchers() < 3 ){
		log.erro("O post   \"" + watchDTO.getText() + "\" do autor " + watchDTO.getPostAuthor() + " deixou de ser polemico" )
	}
}

 

beforeSocialShare

Este evento é disparado sempre antes da efetivação do compartilhamento de um objeto social.

OBS: Pode-se alterar a mensagem de compartilhamento passando uma String para o método setText( <valor> ) do objeto "share".

Bloco de código
languagejs
titleEstrutura do Evento
function beforeSocialShare(companyId, share){
 
}

 

Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
shareobjeto de socializaçãoCustomização de Eventos

 

 

Bloco de código
languagejs
titleExemplo de Implementação
function beforeSocialShare(companyId, share){
  
  var lastUpd = share.getSociable().getLastUpdateDate().getTime();
  log.info("lastUpd: " + lastUpd);
  var daysAgo = new Date();
  daysAgo.setDate(daysAgo.getDate()-3);
  log.info("daysAgo: " + daysAgo);

  if (lastUpd < oneMonthAgo) {
    throw "You could not share old socials (more than 3 days old)";
  }
}

 

afterSocialShare

Esse evento é disparado sempre após a efetivação de um compartilhamento.

 

Bloco de código
languagejs
titleEstrutura do Evento
function afterSocialShare(companyId, share){
 
}

 

Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
shareobjeto de socializaçãoCustomização de Eventos



Bloco de código
languagejs
titleExemplo de Implementação
function afterSocialShare(companyId, share){
  log.info(share.getUser() + " has shared the sociable " + share.getSociable().getId() + " with text " + share.getText());
}

 

beforeSocialComment

Esse evento é disparado sempre antes da efetivação de um comentário.

OBS: Pode-se alterar o conteúdo do comentário passando uma String para o método setText( <valor> ) do objeto "comment".

Bloco de código
languagejs
titleEstrutura do Evento
function beforeSocialComment(companyId, comment){
 
}


Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
commentobjeto de comentárioCustomização de Eventos

 

 

Bloco de código
languagejs
titleExemplo de Implementação
function beforeSocialComment(companyId, comment){
  if (comment.getSociable().getNumberLikes() < 1) {
    throw "You can not comment a post that was not liked.";
  }
}

 

afterSocialComment

Esse evento é disparado sempre após a efetivação de um comentário.

Bloco de código
languagejs
titleEstrutura do Evento
function afterSocialComment(companyId, comment){
 
}

 

Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
commentobjeto de comentárioCustomização de Eventos

 

 

Bloco de código
languagejs
titleExemplo de Implementação
function afterSocialComment(companyId, comment){
 log.info(comment.getUser() + " has done the comment " + comment.getText());
}

 

beforeSocialPost

Esse evento é disparado sempre antes da efetivação de um post.

OBS: Pode-se alterar o conteúdo da publicação passando uma String para o método setText( <valor> ) do objeto "post".
Bloco de código
languagejs
titleEstrutura do Evento
function beforeSocialPost(companyId, post){
 
}

 

Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
postObjeto que representa a publicaçãoCustomização de Eventos

 

 

Bloco de código
languagejs
titleExemplo de Implementação
function beforeSocialPost(companyId, vo){

   	if(vo.getText().indexOf(" fluid ") > -1) {
		vo.setText(vo.getText().replace( " fluid ", " fluig "));
	}
}

 

afterSocialPost

Esse evento é disparado sempre após a efetivação de um comentário.

Bloco de código
languagejs
titleEstrutura do Evento
function beforeSocialPost(companyId, post){
 
}


Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
postobjeto de postCustomização de Eventos

 

 

Bloco de código
languagejs
titleExemplo de Implementação
function afterSocialPost(companyId, post){
	if (post.getText().toLowerCase().indexOf("#minhacampanha") > -1) {
		log.info(post.getUser() + " has published a content."); 
	}
}

 

beforeSocialPostRemove

Esse evento é disparado sempre antes da efetivação de uma remoção de um post.

 

Bloco de código
languagejs
titleExemplo de Implementação
function beforeSocialPostRemove(companyId, post){
 
}

 

Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
postobjeto de postCustomização de Eventos
Bloco de código
languagejs
titleExemplo de Implementação
function beforeSocialPostRemove(companyId, post){
  if (post.getText().toLowerCase().indexOf("#important") > -1) {
    throw "You cannot remove a post marked as important.";
  }
}

 

afterSocialPostRemove

Esse evento é disparado sempre após a efetivação de uma remoção de um post.

Bloco de código
languagejs
titleEstrutura do Evento
function beforeSocialPostRemove(companyId, post){
 
}

 

Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
postobjeto de postCustomização de Eventos
Bloco de código
languagejs
titleExemplo de Implementação
function afterSocialPostRemove(companyId, post){
  log.info(post.getUser() + " has removed the post " + post.getSociable().getId());
}

 

beforeSocialDenounce

O evento é disparado quando um Sociable é denunciado porém antes que a ação seja efetivada.


Exemplo de uso:

  • Em uma comunidade em que as publicações não podem ser denunciadas pode-se utilizar este evento para bloquear a ação de denúncia.
  • Pode-se limitar a quantidade de denúncias que um usuário pode efetuar por dia para evitar que alguma pessoa mal intencionada denuncie todas as publicações.

Bloco de código
languagejs
titleEstrutura do Evento
function beforeSocialDenounce(companyId, denounce){
 
}

 

Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
denounce
objeto de postCustomização de Eventos
Bloco de código
languagejs
titleExemplo de Implementação
function beforeSocialDenounce(companyId, denounce){
  if (denounce.getSociable().getText().toLowerCase().indexOf("#cipa") > -1) {
     throw "You cannot denounce posts about CIPA.";
  }
}

 

afterSocialDenounce

O evento é disparado após a efetivação de uma ação de denúncia de um sociable.

 

Bloco de código
languagejs
titleEstrutura do Evento
function afterSocialDenounce(companyId, denounce){
 
}

 

Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
denounce
objeto de postCustomização de Eventos


Exemplo Prático 

Registrar em log as denúncias efetuadas para auditoria.

Bloco de código
languagejs
titleExemplo de Implementação
function afterSocialDenounce(companyId, denounce){
  log.info(denounce.getUser() + " has denounced the sociable " + denounce.getSociable().getId() + " with comment " + denounce.getText());
}

 

beforeSocialLike

O evento é disparado antes de ser efetivada uma ação de "curtir" de um sociable.

 

Bloco de código
languagejs
titleEstrutura do Evento
function beforeSocialLike(companyId, like){
 
}


Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
like
Objeto com dados do sociable curtidoCustomização de Eventos
Bloco de código
languagejs
titleExemplo de Implementação
function beforeSocialLike(companyId, like){
	if (like.getSociable().getText().toLowerCase().indexOf("#greve") > -1) {
	     throw "You can not like a post that has this type of comment.";
	}
}

 

afterSocialLike

O evento é disparado após a efetivação de uma ação de "curtir" de um sociable.

 

Bloco de código
languagejs
titleEstrutura do Evento
function afterSocialLike(companyId, like){
 
}

 

Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
like
Objeto com dados do sociable curtidoCustomização de Eventos


Exemplo Prático

Registrar em log para auditoria todas as publicações curtidas.

Bloco de código
languagejs
titleExemplo de Implementação
function afterSocialLike(companyId, like){
  log.info(like.getUser() + " has liked the " + like.getSociable().getUrl());
}

 

beforeSocialUnlike

O evento é disparado antes de ser efetivada uma ação de "descurtir" de um sociable.

Bloco de código
languagejs
titleEstrutura do Evento
function beforeSocialUnlike(companyId, unlike){
 
}

 

Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
unlike
Objeto com dados do sociable descurtidoCustomização de Eventos
Bloco de código
languagejs
titleExemplo de Implementação
function beforeSocialUnlike(companyId, unlike){
    throw "You can not unlike a post.";
}

 

afterSocialUnlike

O evento é disparado após a efetivação de uma ação de "descurtir" de um sociable.

 

Bloco de código
languagejs
titleEstrutura do Evento
function afterSocialUnlike(companyId, unlike){
 
}


Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
unlike
Objeto com dados do sociable descurtidoCustomização de Eventos


Exemplo Prático

Registrar em log para auditoria todas as publicações que deixaram de ser apoiadas.

Bloco de código
languagejs
titleExemplo de Implementação
function afterSocialUnlike(companyId, unlike){
  log.info(unlike.getUser() + " has unliked the " + unlike.getSociable().getUrl());
}

 

beforeSocialCommentRemove

O evento é disparado antes da efetivação da remoção de um comentário de um sociable.

Bloco de código
languagejs
titleEstrutura do Evento
function beforeSocialCommentRemove(companyId, comment){
 
}


Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
comment
Objeto que contém as informações do comentárioCustomização de Eventos


Exemplo Prático: Evitar que usuários removam seus comentários em uma publicação de campanha interna da empresa.

Bloco de código
languagejs
titleExemplo de Implementação
function beforeSocialCommentRemove(companyId, comment){
  if (comment.getSociable().getText().toLowerCase().indexOf("#bolao") > -1) {
    throw "You cannot change your guess.";
  }
}

 

afterSocialCommentRemove

O evento é disparado após a efetivação da ação de remover o comentário de um sociable.

Bloco de código
languagejs
titleEstrutura do Evento
function afterSocialCommentRemove(companyId, comment){
 
}


Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
comment
Objeto que contém as informações do comentárioCustomização de Eventos


Exemplo Prático

Registrar em log para auditoria todos os comentários com a hashtag "protesto". 

Bloco de código
languagejs
titleExemplo de Implementação
function afterSocialCommentRemove(companyId, comment){
  if (comment.getText().toLowerCase().indexOf("#protesto") > -1) {
    log.info(comment.getUser() + " has removed the comment " + comment.getText() + " of the sociable " + comment.getSociable().getId());
  }
}

 

beforeCommunityParticipation

O evento é disparado antes da efetivação da participação em uma comunidade.

Bloco de código
languagejs
function beforeCommunityParticipation(companyId, relation){

}


Parâmetros da funçãoSendo os parâmetros:

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint

formId

Código do Formulário

int

cardId

Código do Registro de Formulário

int

versionIdVersão do Registro de Formulárioint
relation
Objeto que contém as informações de participaçãoCustomização de EventoscardDataDados do Registro de FormulárioHashmap <String, String>
Bloco de código
languagejavajs
titleExemplo de Implementação
function afterSaveCardbeforeCommunityParticipation(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.

 

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

 

relation){
    if (relation.getCommunity().getAlias() == "economia") {
        throw "Comunidade temporariamente indisponível!";
    }
    log.info("beforeCommunityParticipation Social Alias: " + relation.getSocial().getAlias() + " Community Alias: " + relation.getCommunity().getAlias());
}

 

afterCommunityParticipation

O evento é disparado após a efetivação da participação em uma comunidade.

Bloco de código
languagejs
function afterCommunityParticipation(companyId, relation){

}

 

Parâmetros da funçãoSendo os parâmetros:

int
PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint

cardId

Código do Registro de Formulário

relation
Objeto que contém as informações de participaçãoCustomização de Eventos
Bloco de código
languagejavajs
titleExemplo de Implementação
function afterDeleteCardafterCommunityParticipation(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); 
}

 

BeforeWatchContent

Utilizado quando ao acompanhar algum conteúdo se deseja recuperar informações do registro e usar antes da ação de "acompanhar". Por exemplo, ao acompanhar um documento, é possível recuperar suas informações e usá-las em um dataset.

 

Bloco de código
languagejava
titleExemplo
function beforeWatchContent(companyId, watchDTO){
}

 

 relation){
    log.info("afterCommunityParticipation Social Alias: " + relation.getSocial().getAlias() + " Community Alias: " + relation.getCommunity().getAlias());
}

 

beforeCommunityLeave

O evento é disparado antes da efetivação da exclusão de participação em uma comunidade.

Bloco de código
languagejs
function beforeCommunityLeave(companyId, relation){

}

 

Parâmetros da funçãoSendo os parâmetros:

WatchDTO
PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint

watchDTO

Dados do registro

relation
Objeto que contém as informações de participaçãoCustomização de Eventos
Bloco de código
languagejavajs
titleExemplo de Implementação
function beforeWatchContentbeforeCommunityLeave(companyId, watchDTO){
	if(watchDTO.getSocialWatchType() == "DOCUMENT"){
		var objClass = "com.totvs.technology.social.document.6";
		var objClass = watchDTO.getObjectClass();
		var patt = new RegExp( /\d+/) ; 
		var documentId = patt.exec(objClass) ;
		var documentVersion = watchDTO.getObjectId();
		var doc = getValue("WKDocument"); 
		var company = companyId; 
		var ds ;
		try { 
			var c1 = DatasetFactory.createConstraint( "allocatedDocumentPK.companyId", company, company, ConstraintType.MUST); 
			var c2 = DatasetFactory.createConstraint("allocatedDocumentPK.sourceDocument",documentId,documentId, ConstraintType.MUST); 
			var c3 = DatasetFactory.createConstraint("allocatedDocumentPK.sourceVersion", documentVersion,documentVersion, 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  "Sua solicitação de notificação foi negada, pois o documento está em checkout." ; 
		}
	}
}

 

AfterWatchContent

Utilizado quando ao acompanhar algum conteúdo se deseja recuperar informações do registro e usar após a ação de "acompanhar". Por exemplo, ao acompanhar um post, é possível recuperar suas informações e usá-las para informar o usuário sobre o autor do post.

 

Bloco de código
languagejava
titleExemplo
function afterWatchContent(companyId, watchDTO){	
}

 

relation){
    if (relation.getCommunity().getAlias() == "eventos") {
        throw "Não é permitido deixar essa comunidade";
    }
    log.info("beforeCommunityLeave Social Alias: " + relation.getSocial().getAlias() + " Community Alias: " + relation.getCommunity().getAlias());
}

 

afterCommunityLeave

O evento é disparado após a efetivação da exclusão de participação em uma comunidade.

Bloco de código
languagejs
function afterCommunityLeave(companyId, relation){

}

 

Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
relation
Objeto que contém as informações de participaçãoCustomização de Eventos
Bloco de código
languagejs
titleExemplo de Implementação
function afterCommunityLeave(companyId, relation){
    log.info("afterCommunityLeave Social Alias: " + relation.getSocial().getAlias() + " Community Alias: " + relation.getCommunity().getAlias());
}

 

beforeSocialFollow

O evento é disparado antes da efetivação de seguir uma pessoa.

Bloco de código
languagejs
function beforeSocialFollow(companyId, follow){

}

 

Parâmetros da função

PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint
follow
Objeto que contém as informações de seguirCustomização de Eventos
Bloco de código
languagejs
titleExemplo de Implementação
function beforeSocialFollow(companyId, follow){
    log.info("beforeSocialFollow Social Alias: " + follow.getSocial().getAlias() + " Followed Alias: " + follow.getFollowed().getAlias());
}

 

afterSocialFollow

O evento é disparado após a efetivação de seguir uma pessoa.

Bloco de código
languagejs
function afterSocialFollow(companyId, follow){

}

 

Parâmetros da funçãoSendo os parâmetros:

WatchDTO
PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint

watchDTO

Dados do registro

follow
Objeto que contém as informações de seguirCustomização de Eventos
Bloco de código
languagejavajs
titleExemplo de Implementação
function afterWatchContentafterSocialFollow(companyId, watchDTOfollow){
	if(watchDTO.getSocialWatchType() == "POST"){
		throw "O usuário "+watchDTOlog.getUserAliasinfo()+"afterSocialFollow vai ser notificado sobre o post Social Alias: " + watchDTO.getTextfollow.getSocial().getAlias() + " doFollowed autorAlias: " + watchDTO.getPostAuthor() ;
	} follow.getFollowed().getAlias());
}

 

BeforeUnwatchContent

Utilizado quando ao deixar de acompanhar algum conteúdo se deseja recuperar informações do registro e usar antes da ação de "deixar de acompanhar". Por exemplo, ao tentar deixar de acompanhar uma comunidade, é possível decidir se o usuário pode deixar de acompanhá-la.

beforeSocialUnfollow

O evento é disparado antes da efetivação de deixar de seguir uma pessoa. 

Bloco de código
languagejavatitleExemplojs
function beforeUnwatchContentbeforeSocialUnfollow(companyId, watchDTOfollow){

}

 


Sendo os parâmetros:Parâmetros da função

WatchDTO
PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint

watchDTO

Dados do registro

follow
Objeto que contém as informações de seguirCustomização de Eventos
Bloco de código
languagejavajs
titleExemplo de Implementação
function beforeUnwatchContentbeforeSocialUnfollow(companyId, watchDTO){
	if(watchDTO.getSocialWatchType() == "COMMUNITY"){
		
		throw "Você não pode deixar de ser notificado sobre a comunidade follow){
    log.info("beforeSocialUnfollow Social Alias: " + follow.getSocial().getAlias() + " Followed Alias: " + watchDTO.getDescriptionfollow.getFollowed().getAlias() );
	}
}

 

AfterUnwatchContent

Utilizado quando ao deixar de acompanhar algum conteúdo se deseja recuperar informações do registro e usar após a ação de "deixar de acompanhar". Por exemplo, ao deixar de acompanhar um post, é possível recuperar suas informações e informar o usuário que aquele post possui muitos seguidores.

 

Bloco de código
languagejava
titleExemplo
function afterUnwatchContent(companyId, watchDTO){
}

 

afterSocialUnfollow

O evento é disparado após a efetivação de deixar de seguir uma pessoa.

Bloco de código
languagejs
function afterSocialUnfollow(companyId, follow){

}


Parâmetros da funçãoSendo os parâmetros:

WatchDTO
PropriedadeDescriçãoTipo
companyIdCódigo da Empresaint

watchDTO

Dados do registro

follow
Objeto que contém as informações de seguirCustomização de Eventos
Bloco de código
languagejavajs
titleExemplo de Implementação
function afterUnwatchContentafterSocialUnfollow(companyId, watchDTOfollow){
	if(watchDTO.getSocialWatchType() == "POST" && watchDTO.getNumberWatchers() < 3 ){
		log.erroinfo("OafterSocialUnfollow postSocial Alias:  \"" + watchDTO.getTextfollow.getSocial().getAlias() + "\" doFollowed autorAlias: " + watchDTO.getPostAuthor() + " deixou de ser polemico" )
	}
}

...

follow.getFollowed().getAlias());
}


OnNotify

Para interferir no envio de um e-mail padrão do Fluig, deve ser utilizado o evento global onNotify, que é disparado no momento em que qualquer um dos e-mails  do Fluig é enviado. Nesse evento, podem ser feitas alterações como, por exemplo, adicionar outros destinatários ao e-mail, modificar os valores dos parâmetros utilizados no template de e-mail, etc.

...