Histórico da Página
Índice
Índice | ||||||
---|---|---|---|---|---|---|
|
Desenvolvimento de Eventos
A customização O desenvolvimento de eventos é realizada realizado pela criação de scripts na linguagem “JavaScript”. O código de implementação de cada script é armazenado em banco de dados e dispensa o uso de quaisquer outros arquivos, como por exemplo, “custom.p”.
Os eventos de customização para o desenvolvimentos sobre a plataforma Fluig são criados feitos pelo administrador, a partir do Fluig Studio. No projeto Fluig, clique com o botão direito sobre a pasta events e em seguida Novo -> Evento Global Fluig conforme a figura abaixo.
...
Nota | ||
---|---|---|
| ||
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.
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
function displayCentralTasks (links){ log.info("Usuário: “ + getValue("WKUser")); } |
DisplayCustomMetadata
Este evento é disparado sempre antes de ser exibidos os campos customizados de um documento, tanto na publicação como edição. Através dele é possível sugerir valores iniciais para campos customizados dos metadados de um documento. O evento recebe como parâmetro uma referência aos campos customizados.
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
function displayCustomMetadata(fields){ log.info("Usuário: “ + getValue("WKUser")); } |
ValidateCustomMetadata
Este evento é disparado sempre antes de salvar os valores dos campos customizados de um documento, tanto na publicação como edição. Através dele é possível alterar ou validar os valores dos campos customizados dos metadados de um documento. O evento recebe como parâmetro uma referência aos campos customizados.
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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.
BeforeDocumentViewer
Utilizado quando é preciso fazer validação customizada antes da visualização de algum documento.
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
share | objeto de socializaçãoCustomização de Eventos | SocialShareEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
share | objeto de socializaçãoCustomização de Eventos | SocialShareEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
comment | objeto de comentárioCustomização de Eventos | SocialCommentEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
comment | objeto de comentárioCustomização de Eventos | SocialCommentEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
post | Objeto que representa a publicação | Customização de EventosSocialPostEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
post | objeto de postCustomização de Eventos | SocialPostEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
post | objeto de postCustomização de Eventos | SocialPostEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
post | objeto de postCustomização de Eventos | SocialPostEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
denounce | objeto de postCustomização de Eventos | SocialDenounceEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
denounce | objeto de postCustomização de Eventos | SocialDenounceEventVO |
Exemplo Prático
Registrar em log as denúncias efetuadas para auditoria.
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
like | Objeto com dados do sociable curtido | Customização de EventosSocialLikeEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
like | Objeto com dados do sociable curtido | Customização de EventosSocialLikeEventVO |
Exemplo Prático
Registrar em log para auditoria todas as publicações curtidas.
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
unlike | Objeto com dados do sociable descurtido | Customização de EventosSocialLikeEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
unlike | Objeto com dados do sociable descurtido | Customização de EventosSocialLikeEventVO |
Exemplo Prático
Registrar em log para auditoria todas as publicações que deixaram de ser apoiadas.
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
comment | Objeto que contém as informações do comentário | Customização de EventosSocialCommentEventVO |
Exemplo Prático: Evitar que usuários removam seus comentários em uma publicação de campanha interna da empresa.
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
comment | Objeto que contém as informações do comentário | Customização de EventosSocialCommentEventVO |
Exemplo Prático
Registrar em log para auditoria todos os comentários com a hashtag "protesto".
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
relation | Objeto que contém as informações de participação | Customização de EventosSocialCommunityRelationEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
function beforeCommunityParticipation(companyId, 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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
relation | Objeto que contém as informações de participação | Customização de EventosSocialCommunityRelationEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
function afterCommunityParticipation(companyId, 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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
relation | Objeto que contém as informações de participação | Customização de EventosSocialCommunityRelationEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
function beforeCommunityLeave(companyId, 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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
relation | Objeto que contém as informações de participação | Customização de EventosSocialCommunityRelationEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
follow | Objeto que contém as informações de seguir | Customização de EventosSocialFollowEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
follow | Objeto que contém as informações de seguir | Customização de EventosSocialFollowEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
function afterSocialFollow(companyId, follow){ log.info("afterSocialFollow Social Alias: " + follow.getSocial().getAlias() + " Followed Alias: " + follow.getFollowed().getAlias()); } |
beforeSocialUnfollow
O evento é disparado antes da efetivação de deixar de seguir uma pessoa.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
follow | Objeto que contém as informações de seguir | Customização de EventosSocialFollowEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
function beforeSocialUnfollow(companyId, follow){ log.info("beforeSocialUnfollow Social Alias: " + follow.getSocial().getAlias() + " Followed Alias: " + follow.getFollowed().getAlias()); } |
afterSocialUnfollow
O evento é disparado após a efetivação de deixar de seguir uma pessoa.
...
Propriedade | Descrição | Tipo |
---|---|---|
companyId | Código da Empresa | int |
follow | Objeto que contém as informações de seguir | Customização de EventosSocialFollowEventVO |
Bloco de código | ||||
---|---|---|---|---|
| ||||
function afterSocialUnfollow(companyId, follow){ log.info("afterSocialUnfollow Social Alias: " + follow.getSocial().getAlias() + " Followed Alias: " + 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.
...
Nota | ||
---|---|---|
| ||
|
Objetos utilizados nos eventos
Existem alguns objetos disponibilizados pelo produto que são utilizados nos eventos, nas próximas sessões eles serão explicados seus métodos e seus retornos.
DocumentDto
Este objeto representa o documento e suas propriedades, na tabela abaixo consta mais informações sobre ele:
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
var doc = getValue("WKDocument"); log.info("Número do documento: "+ doc.getDocumentId() + " - Versão: "+ doc.getVersion()); |
ApproverDto
Este objeto representa os aprovadores e suas propriedades, na tabela abaixo consta mais informações sobre ele:
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
var listApprover = getValue("WKListApprover"); 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 aprovadores de documentos"; } } } |
DocumentSecurityConfigDto
Este objeto representa a segurança de um documento e suas propriedades, na tabela abaixo consta mais informações sobre ele:
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
var listSeg = getValue("WKListSecurity"); 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"; } } } |
RelatedDocumentDto
Este objeto representa os documentos relacionados e suas propriedades, na tabela abaixo consta mais informações sobre ele:
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
var listRelated = getValue("WKListRelatedDocument"); 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()); } } |
WatchDTO
Este objeto representa as notificações de acompanhamento de comentários e suas propriedades, na tabela abaixo consta mais informações sobre ele:
...
Função | Descrição da Função | Tipo do Retorno |
getEntityId() | Retorna o código do Conteúdo. | String |
getUserId() | Retorna o código do usuário. | String |
getUserAlias() | Retorna o alias do usuário. | String |
getSociableId() | Retorna ocódigo sociable. | String |
getCreationDate() | Retorna a data de criação. | String |
getLastUpdateDate() | Retorna a data da última atualizaçã. | String |
getNumberComments() | Retorna o número de comentários. | String |
getNumberLikes() | Retorna o número de apoios. | String |
getNumberShares() | Retorna o número de compartilhamentos. | String |
getNumberWatchers() | Retorna o número de acompanhamentos. | String |
getNumberDenouncements() | Retorna o número de denúncias. | String |
getSocialWatchType() | Retorna o tipo (social) | String |
getPostAuthor() | Retorna o autor do conteúdo. | String |
getTags() | Retorna as tags. | String |
getText() | Retorna o texto. | String |
getDescription() | Retorna a descrição. | String |
getObjectClass() | Retorna a classe do objeto. | String |
getObjectId() | Retorna o objectId. | String |
getThumbURL() | Retorna a url do thumb | String |
SocialPostEventVO Âncora SocialPostEventVO SocialPostEventVO
SocialPostEventVO | |
SocialPostEventVO |
SocialPostEventVO | ||
Propriedade / Método | Descrição | Tipo / Retorno |
---|---|---|
getText() | texto do post | String |
getUser() | alias do usuário que está postando | String |
getVisibility() | visibilidade do post | String |
getPostId() | identificador do post | String |
getCreationDate() | data de criação do post | String |
getLastUpdateDate() | data de ultima atualização do post | String |
getSociable() | objeto sociable relacionado a esse post. Ex: Imagem, Vídeo, Artigo, etc... | Customização de EventosSociableEventVO |
getSocial() | objeto social onde o post foi feito. Pode ser timeline de um usuario ou um comunidade | Customização de EventosSocialEventVO |
*getAttributes() | Atributos do Analytics em formato de Lista de Strings. Limite de 3 itens | List<String> |
*getFacts() | Fatos dos atributos do Analytics em formato de Lista de Strings. Limite de 3 itens | List<String> |
customData | Mapa em formato JSON onde pode-se persistir dados extras da publicação | Map JSON |
*Somente enviado no evento beforSocialPost e afterSocialPost, esses valores não são persistidos no Fluig
SociableEventVO Âncora SociableEventVO SociableEventVO
SociableEventVO | |
SociableEventVO |
SociableEventVO | ||
Propriedade / Método | Descrição | Tipo / Retorno |
---|---|---|
getId() | identificador do objeto | String |
getCreationDate() | data de criação do objeto | String |
getLastUpdateDate() | ultima atualização do objeto | String |
getNumberLikes() | quantidade de curtidas | String |
getNumberShares() | quantidade de compartilhamentos | String |
getNumberComments() | quantidade de comentários | String |
getNumberDenouncements() | quantidade de denúncias | String |
getNumberWatchers() | quantidade de acompanhamentos | String |
getTags() | nomes marcadores | String |
getUrl() | endereço do objeto | String |
getSociableType() | tipo do objeto social | String |
getRemoved() | informa se o objeto foi removido | String |
*getPostAuthor() | retorna o alias do autor da publicação que foi comentada | String |
*getText() | retorna o texto da publicação que foi comentada | String |
**getDescription() | Nome do objeto comentado | String |
**getThumbURL() | url de ícone do objeto comentado. | String |
getSocial() | local aonde o comentário foi efetuado | SocialEvent |
...
**retornado para os comentários de documentos e etc.
SocialEventVO Âncora SocialEventVO SocialEventVO
SocialEventVO | |
SocialEventVO |
SocialEventVO | ||
Propriedade / Método | Descrição | Tipo / Retorno |
---|---|---|
getId() | identificador do objeto | String |
getCreationDate() | data de criação do objeto | String |
getLastUpdateDate() | ultima atualização do objeto | String |
getAlias() | apelido do objeto social | String |
getName() | nome do objeto social | String |
getDescription() | descrição do objeto social | String |
getType() | tipo do objeto social | String |
getState() | status do objeto social | String |
getHidden() | informa se o objeto é oculto | String |
getPrivateContent() | informa se o conteúdo é privado | String |
getApprovalRequired() | informa se aprovação é requerida | String |
getCustomPage() | informação de página customizada | String |
SocialShareEventVO Âncora SocialShareEventVO SocialShareEventVO
SocialShareEventVO | |
SocialShareEventVO |
SocialShareEventVO | ||
Propriedade / Método | Descrição | Tipo / Retorno |
---|---|---|
getSociable() | objeto sendo compartilhado | Customização de EventosSociableEventVO |
getSocialPlace() | objeto que recebe o compartilhamento | Customização de EventosSocialEventVO |
getUser() | alias do usuario que compartilha | String |
getText() | texto informado no compartilhamento | String |
getType() | tipo do objeto | String |
SocialCommentEventVO Âncora SocialCommentEventVO SocialCommentEventVO
SocialCommentEventVO | |
SocialCommentEventVO |
SocialCommentEventVO | ||
Propriedade / Método | Descrição | Tipo / Retorno |
---|---|---|
getSociable() | objeto sendo compartilhado | Customização de EventosSociableEventVO |
getUser() | alias do usuário que comenta | String |
getText() | texto informado no comentário | String |
getCommentId() | id do comentário | String |
SocialDenounceEventVO Âncora SocialDenounceEventVO SocialDenounceEventVO
SocialDenounceEventVO | |
SocialDenounceEventVO |
SocialDenounceEventVO | ||
Propriedade / Método | Descrição | Tipo / Retorno |
---|---|---|
getSociable() | objeto sendo compartilhado | Customização de EventosSociableEventVO |
getUser() | alias do usuário que comenta | String |
getText() | texto informado no comentário | String |
getType() | Tipo de denúncia | String |
SocialLikeEventVO Âncora SocialLikeEventVO SocialLikeEventVO
SocialLikeEventVO | |
SocialLikeEventVO |
SocialLikeEventVO | ||
Propriedade / Método | Descrição | Tipo / Retorno |
---|---|---|
getSociable() | objeto sendo compartilhado | Customização de EventosSociableEventVO |
getUser() | alias do usuário que comenta | String |
SocialCommunityRelationEventVO Âncora SocialCommunityRelationEventVO SocialCommunityRelationEventVO
SocialCommunityRelationEventVO | |
SocialCommunityRelationEventVO |
SocialCommunityRelationEventVO | ||
Propriedade / Método | Descrição | Tipo / Retorno |
---|---|---|
getSocial() | Social relacionado à comunidade | Customização de EventosSocialEventVO |
getCommunity() | Social que representa a Comunidade | Customização de EventosSocialEventVO |
SocialFollowEventVO Âncora SocialFollowEventVO SocialFollowEventVO
SocialFollowEventVO | |
SocialFollowEventVO |
SocialFollowEventVO | ||
Propriedade / Método | Descrição | Tipo / Retorno |
---|---|---|
getSocial() | Social que seguirá | Customização de EventosSocialEventVO |
getFollowed() | Social que está sendo seguido | Customização de EventosSocialEventVO |
Consumo da API Pública em Eventos
A partir dos eventos é possível executar ações no Fluig.
As ações disponíveis são as mesmas da API Pública (chamadas REST) e são disparadas através de um objeto consumer.
Utilizando um objeto consumer
Para obter uma instância de consumer é necessário solicitar ao objeto de ambiente oauthUtil executando o método getNewAPIConsumer ou getNewAPIConsumerAsCurrentUser.
...
Essas informações de parâmetros são fornecidas pelo Fluig em Painel de Controle, na aba WCM, item Oauth Provider.
O método get
Esse método realiza uma chamada GET na API Publica, passando como argumento uma URI válida da API (ver documentação da API).
Ex: consumer.get("/public/social/community/comunidade1");
O método post
Esse método realiza uma chamada POST na API Publica, passando como argumento uma URI válida da API (ver documentação da API) e os dados enviados em formato JSON.
Ex: consumer.post("/public/social/post/create/with/upload", "{\"text\":\"Post criado via evento\",\"visibility\":\"PUBLIC\"}");
Exemplo com usuário de aplicação
Nesse exemplo, a mensagem "Post criado via evento" é postada no mural
Bloco de código | ||
---|---|---|
| ||
function beforeSocialPost(companyId, vo) { if (vo.getSocial().getType() == "USER" && vo.getUser() != "admin") { var consumer = oauthUtil.getNewAPIConsumer("my_app_key", "my_app_secret", "605da7f2-d087-4f4b-903e-486df9563956", "2b192950-fe0c-4211-a4bf-5962c18432d85c077dfb-aa51-45a0-ab43-822a680070ab"); var userData = JSON.parse(consumer.get("/public/social/user/" + vo.getUser())); if (userData.numberFollowers == 0) { throw "Voce deve ser seguido por alguem para poder postar em sua timeline."; } } } |
Exemplo com usuário logado
Bloco de código | ||
---|---|---|
| ||
function afterDocumentPublisher(){ var doc = getValue("WKDocument"); var user = getValue("WKUser"); var msgPost = "Novo documento: "+ doc.getDocumentId() + " - Versão: "+ doc.getVersion(); log.info(msgPost); var jsonContent = "{\"text\":\"" + msgPost + "\",\"visibility\":\"PUBLIC\"}"; log.info(jsonContent); var consumer = oauthUtil.getNewAPIConsumerAsCurrentUser("myapp", "myappsecret", "32718929-568b-4a64-9f67-bbeadf4c1fc3", "eff7b746-384b-43ba-be3a-aed14da822a4b8352de0-62be-456e-a0d8-ab5c00a745bc"); consumer.post("/public/social/post/create", jsonContent); } |
Atualização do Analytics
Definição
É possível enviar dados ao analytics a partir dos eventos de customização.
...
Esses valores são transmitidos no objeto SocialPostEventVO
Exemplo de uso
Bloco de código | ||||
---|---|---|---|---|
| ||||
analyticsUtil.updatePostData(String postId, String[] attributes, String[] facts); |
Bloco de código | ||||
---|---|---|---|---|
| ||||
function afterSocialPost(companyId, post){ analyticsUtil.updatePostData(post.getPostId(), post.getAttributes(), post.getFacts()); } |
Customização de Eventos JMS
O Fluig tem customização de eventos JMS, permitindo criar procedimentos de auditoria com base nas informações fornecidas pelo produto. O JMS (Java Message Service) é uma API Java™ que provê uma conexão assíncrona entre aplicações por meio de troca de mensagens.
...