Files

181 lines
6.4 KiB
Markdown
Raw Normal View History

2026-05-06 13:35:47 -03:00
---
title: Eventos de Componentes
source: https://tdn.totvs.com/display/fluig/Eventos+de+Componentes
path: \Plataforma Documentação técnica\Recurso de Páginas e Widgets (WCM)\Construção de Widgets e Layouts\Widgets\Eventos de Componentes.md
---
No desenvolvimento de um *widget* para o Fluig Plataforma é possível programar certas ações a serem executadas em tempo de instalação, ativação ou desativação.
Importante
Esses eventos estão disponíveis desde que se utilize a [Central de Componentes](http://tdn.totvs.com/display/HF/Central+de+componentes) disponível no agrupador **Aplicativos** do **Painel de controle** ou a [Exportação e Importação de Páginas](http://tdn.totvs.com/pages/viewpage.action?pageId=234455771) disponível no agrupador **Personalização** do **Painel de controle**
Para que isso seja possível, é necessário criar uma classe em seu projeto Fluig que [implemente](https://docs.oracle.com/javase/tutorial/java/IandI/usinginterface.html) a classe "com.fluig.sdk.api.component.activation.ActivationListener". É necessário também inserir uma [annotation](https://docs.oracle.com/javase/tutorial/java/annotations/) de mapeamento, que depois deverá ser referenciada no arquivo [application.info](http://tdn.totvs.com/display/fluig/Arquivo+application.info).
Veja abaixo um exemplo dessa classe:
**ActivationClass.java**
```
package com.fluig;
import javax.ejb.Singleton;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import com.fluig.sdk.api.component.activation.ActivationEvent;
import com.fluig.sdk.api.component.activation.ActivationListener;
@Singleton(mappedName = "activator/codigo_widget", name = "activator/codigo_widget")
public class ActivationClass implements ActivationListener {
/**
* @return nome do arquivo que será gerado e feito o deploy na central de componentes
* @throws Exception
*/
@Override
public String getArtifactFileName() throws Exception {
return "nome-do-arquivo-gerado.war";
}
/**
* Evento chamado no momento da instalação (deploy) do artefato dentro da Central de Componentes.
* @param event
* @throws Exception
*/
@Override
public void install(ActivationEvent event) throws Exception {
}
/**
* Evento chamado no momento da ativação do artefato dentro da Central de Componentes.
* @param event
* @throws Exception
*/
@Override
public void enable(ActivationEvent event) throws Exception {
}
/**
* Evento chamado no momento da desativação do artefato dentro da Central de Componentes.
* @param event
* @throws Exception
*/
@Override
public void disable(ActivationEvent event) throws Exception {
}
}
```
Em seguida, no arquivo [application.info](http://tdn.totvs.com/display/fluig/Arquivo+application.info) deve ser criada a propriedade "activation.class", cujo valor deve ser o mesmo da propriedade *"name"* da [annotation](https://docs.oracle.com/javase/tutorial/java/annotations/) da classe de ativação.
Para o exemplo dado acima a propriedade ficaria assim:
**application.info**
```
activation.class=activator/codigo_widget
```
Além disso, para que seu artefato seja corretamente gerado, é necessário adicionar algumas dependências ao seu projeto. Caso o seu projeto seja do tipo maven.
Utilize o código abaixo:
**pom.xml**
```
<dependencies>
<dependency>
<groupId>com.fluig</groupId>
<artifactId>foundation-security-authentication-saml</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fluig</groupId>
<artifactId>wcm-sdk-service</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fluig</groupId>
<artifactId>wcm-common</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fluig</groupId>
<artifactId>fluig-sdk-common</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fluig</groupId>
<artifactId>fluig-sdk-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fluig</groupId>
<artifactId>wcm-core</artifactId>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.fluig</groupId>
<artifactId>ecm-ejb-api</artifactId>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<archive>
<manifestEntries>
<Dependencies>org.slf4j, com.fluig.api, com.fluig.api.common</Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
<configuration>
<nosuffix>false</nosuffix>
<force>true</force>
<linebreakpos>-1</linebreakpos>
<disableOptimizations>false</disableOptimizations>
<gzip>false</gzip>
<jswarn>false</jswarn>
<nomunge>true</nomunge>
<preserveAllSemiColons>false</preserveAllSemiColons>
</configuration>
</plugin>
</plugins>
</build>
```
Exemplo Completo
Para uma visão mais completa dessa técnica, é possível visualizar um dos *widgets* disponibilizados pela equipe do TOTVS Fluig Plataforma em nosso repositório de [samples](https://git.fluig.com/projects/SAMPLES/repos/widgets/browse), como por exemplo o *widget* de [convênios.](http://git.fluig.com/projects/SAMPLES/repos/kit-intranet/browse/wcm/widget/kit_convenios)