Árvore de páginas


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 disponível no agrupador Aplicativos do Painel de controle ou a Exportação e Importação de Páginas 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 a classe "com.fluig.sdk.api.component.activation.ActivationListener". É necessário também inserir uma annotation de mapeamento, que depois deverá ser referenciada no 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 deve ser criada a propriedade "activation.class", cujo valor deve ser o mesmo da propriedade "name" da annotation 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, como por exemplo o widget de convênios.