Pesquisa por:
NOTEBOOK
Inicie processos no Fluig a partir do Google Forms.

Inicie processos no fluig à partir do google forms.

Criar formulários públicos pode ser um problema no Fluig, já que a plataforma não permite que o formulário e o processo seja publicado sem a autenticação na plataforma, portanto para usá-los é necessário utilizar um login e senha.

Apesar de existirem soluções que podem ser desenvolvidas no Fluig, para exibir o formulário utilizando páginas públicas, tenho um certo receio de expor algum dataset ou ponto de entrada publicamente (veja aqui o porquê), por este motivo irei demonstrar neste artigo um passo a passo de como integrar o Google Forms ao Fluig.

Criar uma solução para entrada de dados como um sistema ou interface também é uma solução, mas dependendo do projeto uma integração utilizando o Google Forms pode ser mais que o suficiente, já que não há preocupações com infraestrutura.

Aliás, esta combinação é perfeita, já que o custo é zero e a solução atende aos requisitos de segurança, pois os dados do formulário estão protegidos pela infraestrutura do Google.

Outro ponto importante a ser destacado é a velocidade do desenvolvimento, dada a facilidade de criar formulários no Google.

Como será o processo.

Neste exemplo será tratado um processo de seleção, contendo três campos: Nome, Telefone e Pretensão salarial.

Após o preenchimento do formulário por parte do usuário, o próprio Google Forms irá buscar estas informações digitadas e irá conectar ao Fluig, utilizando webservices da plataforma, para iniciar o processo desejado.

As integrações Fluig

Há duas formas de integração com a plataforma fluig, neste exemplo irei demonstrar a integração utilizando REST. Assumindo que você já tenha criado o seu processo e o seu formulário, siga os passos abaixo.

Acesse este link e confira a documentação “Cadastrar Aplicativo no Fluig“. Você vai precisar configurar um usuário para autenticação OAuth pelo Fluig, como resultado deverá obter os seguintes dados: CUSTOMER_KEY, CUSTOMER_SECRET, ACCESS_TOKEN e TOKEN_SECRET.

Após realizar o procedimento acima você deverá terá os dados necessários para autenticação no fluig.

Em caso de dúvidas entre em contato.

O formulário do Google Forms.

Neste artigo você deverá ser capaz de construir um formulário do Google Forms. Para isso, clique aqui e crie um formulário semelhante ao criado abaixo.

Após criar o formulário e publicar, vá até as propriedades ( ícone de três pontos, exibido no canto superior direito da tela ) .

Após clicar no ícone vá até a opção Editor de Script.

Acionador / Gatilho – Google Forms – Integrando com o Fluig

Editor de Script do Google Forms.

A primeira coisa a ser feita é clicar em Bibliotecas e adicionar uma biblioteca para autenticação por OAuth1 , já que o Fluig não permite a autenticação por Auth2.

Em bibliotecas clique no botão para incluir.

Google Forms API – Incluir Biblioteca.

Na janela que é aberta insira o código abaixo:

1CXDCY5sqT9ph64fFwSzVtXnbjpSfWdRymafDrtIZ7Z_hwysTY7IIhi7s

Observação: O Google descontínuo o uso do OAuth1 em 2015, conforme pode ser conferido nesta documentação . Para utilizar o OAuth1 a google recomendou utilizar uma biblioteca opensource, que é biblioteca representada pelo script consultado na imagem acima e pode ser consultada neste repositório.

Na janela, vá na aba de codificação, conforme exibido na imagem abaixo, e renomeie o arquivo gerado para startProcess.gs.

Acionador / Gatilho – Google Forms – Integrando com o Fluig

Após criar o arquivo é necessário inserir o código Google Script.

Neste exemplo abaixo o código irá ler o último registro inserido e em seguida realiza a chamada do webservice do fluig responsável por iniciar a solicitação na plataforma.

/**
 * CONFIGURACOES DE INTEGRACAO FLUIG
 */
var FLUIG_BASE_URL = "http://minhaurl.com";
var PROCESS_NAME = 'selecionar_pessoa';


var CONSUMER_KEY = 'x';
var CONSUMER_SECRET = 'x';

var ACCESS_TOKEN = 'x';
var TOKEN_SECRET = 'x';




function startProcess() {

var form = FormApp.getActiveForm();
var formResponses = form.getResponses();
var formResponseslength = formResponses.length;

/**
 * Obter o último registro do formulário.
 */
var nome = formResponses[formResponseslength-1].getItemResponses()[0].getResponse();
var telefone = formResponses[formResponseslength-1].getItemResponses()[1].getResponse();
var salario = formResponses[formResponseslength-1].getItemResponses()[2].getResponse();


var service = getFluigService();
  var url = FLUIG_BASE_URL  + '/process-management/api/v2/processes/' + PROCESS_NAME + '/start';

/**
 * Conteúdo para inserir no formulário do processo.
 */
var data = {
  'targetAssignee': 'academy.aluno',
  'subProcessTargetState': "0",
  'comment': "",
  'formFields': {
     "nome" : nome,
     "telefone" : telefone,
     "salario": salario
  }

};



var options = {
  'method' : 'post',
  'contentType': 'application/json',
  'payload' : JSON.stringify(data)
};

  var response = service.fetch(url, options);
  var result = JSON.parse(response.getContentText());

  Logger.log(JSON.stringify(result, null, 2));



Logger.log(nome);Logger.log(telefone);Logger.log(salario)

MailApp.sendEmail("[email protected]","STATUS INTEGRACAO", "SATUS DA INTEGRACAO");

 
}



function getFluigService() {
  return OAuth1.createService('fluig')
      .setConsumerKey(CONSUMER_KEY)
      .setConsumerSecret(CONSUMER_SECRET)
      .setAccessToken(ACCESS_TOKEN, TOKEN_SECRET);
}

O resultado final deve se parecer com a imagem abaixo.

Acionadores ( Gatilhos ) do Google Forms.

Os acionadores do Google Forms nada mais são que gatilhos, que irá executar alguma ação em determinado momento.

Neste exemplo será demonstrado a execução do script logo após a inserção de uma nova resposta do formulário.

Google Forms – Acionadores

Na tela de acionadores clique em adicionar acionador – botão azul no canto inferior direito da tela.

Ao abrir a tela preencha o Acionador conforme imagem abaixo.

Acionador / Gatilho – Google Forms – Integrando com o Fluig

O resultado esperado é este.

Acionador / Gatilho – Google Forms – Integrando com o Fluig

Resultado

Após o preenchimento dos dados clique em salvar.

Google Forms

Abaixo o processo inicializado automaticamente pelo aplicativo do Google Forms.

Formulário – Fluig

Erros

O próprio Google Script disparou um erro assim que eu forcei uma conexão inexistente, entretanto será necessário realizar mais testes e controles.

Repositório

Acesse aqui o repositório que contém o processo e o formulário deste projeto.

Conclusão

Este é um modelo de integração entre o Google Forms e o Fluig, utilizando a autenticação OAuth1 do Fluig.

Uma sugestão de melhoria é construir alertas por e-mail para avisar de possíveis inconsistências.

Referências

https://stackoverflow.com/questions/50491535/how-to-call-web-service-on-google-app-script

https://developers.google.com/apps-script/reference/forms/form

https://github.com/googleworkspace/apps-script-oauth2

https://github.com/googleworkspace/apps-script-oauth1

https://github.com/googleworkspace/apps-script-oauth1/blob/master/samples/Yelp.gs

O guia completo sobre dataset do fluig.

Clique aqui e faça um treinamento, ou orçamento.

Me siga no instagram.

Deixe seus comentários no final da página.

*Artigo ainda incompleto. =)

Introdução

O dataset é como se fosse uma ‘camada’ de acesso a dados no fluig. Neste artigo vou explicar como assimilar o uso dos datasets e as consultas SQL.

Este recurso abstrai as conexões a serviços ou bases de dados – uma vez que os dados estão disponíveis – sendo necessário que o desenvolvedor apenas saiba realizar a chamada deste dataset.

Um exemplo disso é que você pode chamar os usuários do fluig sem conhecer sua implementação, até mesmo construir e publicar um formulário e a própria plataforma vai criar e gerenciar o dataset para você.

É possível acessar dados do próprio fluig, através de webservices da plataforma, ou datasets que a própria plataforma disponibiliza.

Observação: nem sempre é necessário criar um dataset para acessar webservices.

Como criar um dataset.

Um dataset pode se criado da forma simples, ou complexa. Ambos podem ser feitos diretamente pela plataforma do Fluig, através do menu Painel de controle > Desenvolvimento > Datasets.

Dataset Simples

O dataset simples é criado em uma tela que facilita a criação de datasets.

Após acessar a tela de dataset clique em novo dataset > simples.

Após a abertura da tela será necessário preencher os campos:

Código: é o código do dataset.
Descrição: o nome do dataset
Serviço: Selecione o serviço que deseja se conectar, que podem ser Soap, Rest e JDBC.
Operação: Cada serviço irá solicitar (ou não) uma operação específica. A operação nada mais é que parâmetros que o serviço possa solicitar.

Veja mais detalhes aqui sobre serviços.

Dataset Complexo

A TOTVS diz em sua documentação que a criação de dataset’s completos é feito em javascript, essa afirmação é contraditória. Apesar da sintaxe ser semelhante ao javascript é possível executar códigos java dentro de datasets, como o uso da das classes java String, Base64 do java e outras.

O desenvolvimento do dataset complexo no fluig pode ser feito de duas formas, a primeira dela é por codificação em uma IDE de desenvolvimento (como o eclipse) em seguida exportando para o servidor. A segunda forma é utilizar o editor de datasets dentro da própria plataforma do fluig.

Para criar um dataset avançado é preciso acessar a tela de dataset , clicar em novo dataset > avançado.

Abaixo um exemplo de código de dataset, com os devidos comentários.

function createDataset(fields, constraints, sortFields) {
    var ds = DatasetBuilder.newDataset();
    
    //Colunas
    ds.addColumn("Usuário");
    ds.addColumn("E-Mail");
      
    //Linhas
    ds.addRow(new Array("Willian", "[email protected]"));
 
     
    return ds;
}

Ao criar um novo dataset, por uma IDE ou pelo próprio fluig é gerado uma função createDataset. O código dentro desta função é o que será chamado durante o uso do dataset.

Esta função espera um retorno do tipo dataset, por isso é realizado uma chamada do método newDataset.

Este construtor de dataset (DatasetBuilder)

Como consultar um dataset de tabela pai x filho?

Para consultar um dataset de uma tabela pai x filho é interessante observarmos alguns fatores, que são: Ao criar o formulário e inserir uma tabela pai x filho, o sistema FLUIG irá gerar toda a estrutura necessária para armazenar os dados, entretanto não irá gerar um dataset para aqueles dados.

A documentação oficial indica então consultarmos o dataset principal, aplicando algumas constraints no dataset, para que seja retornado elementos do dataset.

O estranho é que os elementos que aplicamos se refere aos nomes das tabelas, entretanto estes campos ficam meio que ‘ocultos’, não sendo possível vê-los nos elementos no dataset principal do formulário.

Faça este exercício: crei um formulário e acrescente um elemento pai x filho, logo em seguida consulte os valores do dataset deste formulário. Você verá as informações somente do formulário. Logo em seguida, se seguir os passos abaixos e criar um dataset próprio para os elementos desta tabela pai x filho, verá que o mesmo dataset que você utilizou no início deste exercício, apenas enviando a constraint tablename, desta forma serão retornados os elementos da tabela. Ainda fiquei sem entender como a plataforma faz isso, mas o objetivo aparenta ser abstrair essas complexidades facilitando o desenvolvimento e a entrega dos projetos.

O primeiro passo é criar um novo dataset, se seu formulário chama ds_meu_formulario e sua tabela pai x filho chama boletos eu sugiro que este novo dataset tenha um nome parecido com ds_meu_formulario_boletos

O segundo passo é copiar o código abaixo e colar neste novo dataset e atente-se para alterar as linhas 4, 17 , 27.

function createDataset(fields, constraints, sortFields) {
 
 
 var dataset_principal = DatasetFactory.getDataset("ds_meu_formulario", null, constraints, null);
 var resultados = [];
 for (var i = 0; i < dataset_principal.rowsCount; i++) {
 var documentId = datasetPrincipal.getValue(i, "metadata#id");
 var documentVersion = datasetPrincipal.getValue(i, "metadata#version");
  
 /***
  * 
  * Criar as constraints para consultar os datasets para consultar os itens da tabela do formulário pai x filho.
  * 
  * */
 var c1 = DatasetFactory.createConstraint("tablename", "nome_da_tabela_do_html", "nome_da_tabela_do_html", ConstraintType.MUST);
 var c2 = DatasetFactory.createConstraint("metadata#id", documentId, documentId, ConstraintType.MUST);
 var c3 = DatasetFactory.createConstraint("metadata#version", documentVersion, documentVersion, ConstraintType.MUST);
 var constraintsFilhos = new Array(c1, c2, c3);
 

 /**
  * Consultar no dataset do formulário os dados referentes à tabela de itens do configurador
  * 
  * */
 var datasetFilhos = DatasetFactory.getDataset("ds_meu_formulario", null, constraintsFilhos, null);
 return datasetFilhos;

 }
 

 }

O terceiro passo é consultar alterar os valores ds_meu_formulario pelo nome do dataset que você escolheu ao criar o formulário. Também altere o conteúdo de nome_da_tabela_do_html -> aqui você irá informar qual é o nome do elemento table (tabela pai x filho ) que você escolheu ao criar o formulário.

O quarto passo é consultar os dados do formulário.

Dica: uma forma de agilizar os testes de dataset é utilizando o console do navegador para completar as atividades de teste. Se não sabe como fazer veja o tópico abaixo.

A melhor forma para testar dataset na plataforma fluig.

Uma das melhores formas de testar datasets no fluig é através do console do navegador, para isso faça os seguintes passos.

Para este procedimento é importante observarmos que precisaremos forçar o carregamento da biblioteca de acesso aos datasets pelo frontend da plataforma, para isso basta acessar alguma página que contenha algum widget que acessa algum dataset.

Ao abrir o widget, a plataforma está fazendo a implementação dos arquivos necessários para carregar o dataset.

Se você está em dúvidas de qual página seguir, ou não tem nenhum widget siga estes passos abaixo. ( Tanto faz, funcionará na tela de Widgets, ou na tela abaixo).

Primeiro passo é Abrir o navegador, de preferência google chrome ou firefox, e apertar a tecla F12.

Navegue até a página painel de controle > datasets > escolha um dataset qualquer e execute a opção de Consultar dataset.

Sistema fluig – tela DataSets

Ao fazer isso o sistema irá carregar as bibliotecas necessárias para nossos testes.

Na aba console do navegador digite o comando. Ao dar enter o resultado esperado é uma lista com todos os datasets do seu sistema.

Este procedimento indica que deu certo, caso dê alguma inconsistência tente os passos acima novamente.

Console navegador firefox

Para avançarmos neste teste preciso só orientar que o desenvolvimento vai ser um pouco diferenciado nesta tela se comparado aos processos de consulta de dataset dos eventos de processo, pois nos eventos de processos utiliza-se uma biblioteca que provavelmente está mais vinculado ao java, enquanto que no frontend / console do navegador utilizamos javascript puro.

Um exemplo destas diferenças é o método de contagem de um elemento Array, que no frontend / javascript é lenght, enquanto que no fluig será o rowsCount.

Leve em consideração esta informação, pois ela é importante caso dê certo utilizar componentes ou funções no javascript / console, mas pode não dar certo se usar no backend ( eventos de formulários / processos ) .

Agora você pode utilizar o console e buscar um dataset qualquer, já que o resultado esperado é que o dataset seja carregado.

var dataset_principal = DatasetFactory.getDataset("ds_meu_formulario", null, constraints, null);

Consulta intervalos de valores em datasets no Fluig

A consulta de intervalos de valores no SQL pode ser também pesquisada como “Consultar BETWEEN em datasets no Fluig”.

No código abaixo o colleague representa o dataset que lista todos os usuários do Fluig e estamos passando como parâmetro a variável c1, que representa a constraint.

var c1 = DatasetFactory.createConstraint("colleagueName", "a", "d", ConstraintType.SHOULD);
usuarios_fluig = DatasetFactory.getDataset("colleague", null, [c1])

Na variável C1 criamos uma constraint colleagueName com intervalo entre os valores A e D, que são os valores de início e fim desta consulta no dataset. O fluig – internamente – vai executar uma consulta semelhante a esta abaixo:

SELECT * FROM tabela_usuario WHERE nome>='a' and nome<='d'

Conclusão

Esta é uma documentação de apoio aos desenvolvedores, que complementa as informações da documentação oficial da plataforma.

O conteúdo deste artigo será extenso e portanto será revisado frequentemente.

Deixe nos comentários suas dúvidas e navegue no site em busca de outras dicas.