Árvore de páginas

Atenção

Esta página foi revisada para considerar as novas configurações de server do fluig para a atualização 1.6.

Caso possua uma atualização anterior do fluig escolha a aba da versão 1.5.13 e anteriores nesta página.

Índice


Objetivo

Para utilizar os recursos do componente SDK, existem alguns pré-requisitos e exigências a serem seguidos, como:

  • Esta documentação é destinada ao desenvolvedor cliente e parceiro do fluig que deseja consumir interna e externamente os recursos disponíveis na API Pública e no componente SDK.
  • As operações na API Pública estão disponíveis através de chamadas REST, que são consumidas via HTTP.
  • As operações no componente SDK estão disponíveis após configuração do fluig-sdk-api no classpath da aplicação dessa forma, através de um ServiceLocator, é realizada a chamada ao serviço desejado. 


Consumindo um Serviço na API Pública

Para utilizar um serviço da API Pública, deve ser utilizado o protocolo OAuth de autenticação, que através das chaves Consumer Key, Consumer Secret, configurados no OAuth App é gerado através do OAuth Provider com um novo Token Access e um Token Secret.

  • O client deve ser desenvolvido para suportar autenticação OAuth 1.0a.


Consumindo um Serviço do Componente SDK a partir de Eventos de JavaScript


Eventos de Workflow e Eventos de Personalização Social

Este recurso está disponível para eventos javascript de Workflow (que podem ser encontrados aqui) e também para Eventos Sociais (que podem ser encontrados aqui).


Exemplos para Utilização do Componente SDK via Eventos de JavaScript


Exemplo 1

function beforeTaskCreate(colleagueId){
	log.info(fluigAPI.getUserService().getCurrent());
}


Exemplo 2 

function beforeStateEntry(sequenceId) {
    if (sequenceId == 4) {
        var groupService = fluigAPI.getGroupService();
        
        var cardData = hAPI.getCardData(getValue("WKNumProces"));
        var groupId = hAPI.getCardValue("groupId");
        var users = new java.util.ArrayList();
        
        var it = cardData.keySet().iterator();
        while(it.hasNext()) {
            var field = it.next();
            if (field.startsWith("userName__")) {
                var user = cardData.get(field);
                if (!groupService.containsUser(groupId, user)) {
                    users.add(user);
                }
            }
        }
        if (!users.isEmpty()) {
            groupService.addUsers(groupId, users);
        }
    }
}

Observação

Veja também o exemplo de uma aplicação web utilizando o fluig SDK através do artefato web-sdk. Diponível no git.fluig.


Consumindo um Serviço no Componente SDK


Para utilizar o recursos do componente SDK, existem alguns pré-requisitos e exigências a serem seguidos, como:

  • Incluir as configurações do servidor do nexus no Maven para realizar o download de artefatos de dependência.
settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
	<mirrors>
		<mirror>
			<id>nexus</id>
			<mirrorOf>*</mirrorOf>
			<name>Fluig Nexus Repository.</name>
			<url>http://nexus.fluig.com/content/groups/public</url>
		</mirror>
	</mirrors>
</settings>
  • Configurar o componente fluig-sdk-api no classpath.
  • No caso de criação de um novo projeto WEB ou Widget, seguir o seguinte padrão de projeto Maven fluigsdk.sample.
  • O novo projeto Maven deve ter por padrão as seguintes configurações no pom.xml:
    pom.xml
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     
    	<dependencyManagement>
    		<dependencies>
    			<dependency>
    				<groupId>com.fluig</groupId>
    				<artifactId>fluig-sdk-bom</artifactId>
    				<version>1.6.0</version>
    				<type>pom</type>
    				<scope>import</scope>
    			</dependency>
    		</dependencies>
    	</dependencyManagement>
     		<dependencies>		
    		<dependency>
    			<groupId>com.fluig</groupId>
    			<artifactId>fluig-sdk-api</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>com.fluig</groupId>
    			<artifactId>fluig-sdk-common</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>javax</groupId>
    			<artifactId>javaee-api</artifactId>
    			<scope>provided</scope>
    		</dependency>
    	</dependencies>
    	<build>
    		<finalName>fluigsdk.sample</finalName>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-war-plugin</artifactId>
    				<version>2.2</version>
    				<configuration>
    					<filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
    					<failOnMissingWebXml>false</failOnMissingWebXml>
    					<archive>
    						<manifestEntries>
    							<Dependencies>org.slf4j, com.fluig.api, com.fluig.api.common</Dependencies>
    						</manifestEntries>
    					</archive>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>
    </project>
    pom.xml
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     
    	<dependencyManagement>
    		<dependencies>
    			<dependency>
    				<groupId>com.fluig</groupId>
    				<artifactId>fluig-sdk-bom</artifactId>
    				<version>1.5.0</version>
    				<type>pom</type>
    				<scope>import</scope>
    			</dependency>
    		</dependencies>
    	</dependencyManagement>
     		<dependencies>
    		<dependency>
    			<groupId>com.fluig</groupId>
    			<artifactId>foundation-security-authentication-saml</artifactId>
    			<scope>compile</scope>
    		</dependency>
    		<dependency>
    			<groupId>com.fluig</groupId>
    			<artifactId>fluig-sdk-api</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>com.fluig</groupId>
    			<artifactId>fluig-sdk-common</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>javax</groupId>
    			<artifactId>javaee-api</artifactId>
    			<scope>provided</scope>
    		</dependency>
    	</dependencies>
    	<build>
    		<finalName>fluigsdk.sample</finalName>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-war-plugin</artifactId>
    				<version>2.2</version>
    				<configuration>
    					<filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
    					<failOnMissingWebXml>false</failOnMissingWebXml>
    					<archive>
    						<manifestEntries>
    							<Dependencies>org.slf4j, com.fluig.api, com.fluig.api.common</Dependencies>
    						</manifestEntries>
    					</archive>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>
    </project>
    • Se atentar para as configurações padrão de autenticação e security-role localizadas no jboss-web.xml e web.xml conforme abaixo:
      jboss-web.xml
      <?xml version="1.0" encoding="UTF-8"?>
      <jboss-web>
      	<context-root>/sample</context-root>
      	<disable-cross-context>false</disable-cross-context>
      	<security-domain>TOTVSTech</security-domain>
      	<security-role>
      		<role-name>user</role-name>
      		<principal-name>totvstech</principal-name>
      	</security-role>
      	<security-role>
      		<role-name>totvstech</role-name>
      		<principal-name>totvstech</principal-name>
      	</security-role>
      	<security-role>
      		<role-name>sysadmin</role-name>
      		<principal-name>wcmadmin</principal-name>
      	</security-role>
      	<security-role>
      		<role-name>admin</role-name>
      		<principal-name>wcmadmin</principal-name>
      	</security-role>	
      </jboss-web>
      jboss-web.xml
      <?xml version="1.0" encoding="UTF-8"?>
      <jboss-web>
      	<context-root>/sample</context-root>
      	<disable-cross-context>false</disable-cross-context>
      	<security-domain>TOTVSTech</security-domain>
      	<security-role>
      		<role-name>user</role-name>
      		<principal-name>totvstech</principal-name>
      	</security-role>
      	<security-role>
      		<role-name>totvstech</role-name>
      		<principal-name>totvstech</principal-name>
      	</security-role>
      	<security-role>
      		<role-name>sysadmin</role-name>
      		<principal-name>wcmadmin</principal-name>
      	</security-role>
      	<security-role>
      		<role-name>admin</role-name>
      		<principal-name>wcmadmin</principal-name>
      	</security-role>
      	<valve>
      		<class-name>com.totvs.technology.auth.saml.TOTVSAuthenticatorValve</class-name>
      	</valve>
      </jboss-web>
      • No arquivo web.xml:
        web.xml
        <security-constraint>
        		<display-name>REST</display-name>
        		<web-resource-collection>
        			<web-resource-name>REST</web-resource-name>
        			<description>REST</description>
        			<url-pattern>/api/rest/*</url-pattern>
        		</web-resource-collection>
        		<auth-constraint>
        			<description>REST</description>
        			<role-name>user</role-name>
        		</auth-constraint>
        	</security-constraint>
        	<login-config>
        		<auth-method>FORM,FLUIGAUTH</auth-method>
        		<realm-name>TOTVSTech</realm-name>
        		<form-login-config>
        			<form-login-page>/login.jsp</form-login-page>
        			<form-error-page>/loginfail.jsp</form-error-page>
        		</form-login-config>
        	</login-config>
         
        	<security-role>
        		<role-name>totvstech</role-name>
        	</security-role>
        	<security-role>
        		<role-name>user</role-name>
        	</security-role>
        	<security-role>
        		<role-name>sysadmin</role-name>
        	</security-role>
        web.xml
        <security-role>
        		<role-name>totvstech</role-name>
        	</security-role>
        	<security-role>
        		<role-name>user</role-name>
        	</security-role>
        	<security-role>
        		<role-name>sysadmin</role-name>
        	</security-role>
        • Realizar lookup do serviço via ServiceLocator. Seguir padrão da Super Classe fluigAPI.


        Serviços Disponíveis no Componente SDK


        Exemplo para Instanciar Serviço do SDK


        Veja a seguir o exemplo para a chamado ao serviço no SDK:

        private UserService getUserServiceSDK() throws SDKException {
        	return new FluigAPI().getUserService();
        }


        Auto Completar Eventos da fluigAPI


        Este serviço permite visualizar no Studio uma lista com todos os métodos disponíveis no fluigAPI. Digitando "fluigAPI." e em seguida apertando o atalho CTRL + Espaço, a lista de métodos será apresentada.

        Por exemplo, ao usar um método com retorno, fluigAPI.getWorkflowService() o usuário poderá listar os métodos deste retorno, como fluigAPI.getWorkflowService().createObervation().

        Também é possível criar facilmente os objetos que são utilizados nos métodos.

        Para isso, basta digitar, por exemplo, new ProcessObservationVO e acionar CTRL + Espaço que o plugin irá alterar o trecho automaticamente para new com.fluig.sdk.api.workflow.ProcessObservationVO();

        Importante!

        Este serviço está disponível a partir da Atualização 1.5.13 da plataforma. Siga os procedimentos do Guia de atualização fluig Studio para atualizar o plugin.