Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Ao clicar em um dos itens da tela de zoom será chamada a função JavaScript escolha que ira enviar o valor para o campo cod_fornec no formulário do fluig.

...


LGPD

...

O fluig possui integração com dois tipos de serviços de dados, são eles: Dataset e Serviços Externos. Ambos podem ser usados em todos os eventos disponíveis para customização de definição de formulário.

Informações
titleImportante

Ao construir formulários utilizando a antiga técnica (formulário avançado) onde se faz o uso de datasets, é necessário atenção quanto aos dados incluídos no mesmo, pois ao marcar o formulário como Documento público o dataset respeitará a condição do formulário se tornando público também.

Com isso, orientamos o uso da nova técnica de construção de formulário, muito mais prática e dinâmica facilitando o uso e a construção dos formulários. Confira nossa documentação sobre a nova técnica de construção de formulário.

...

LGPD - Lei Geral de Proteção de Dados (LGPD, Lei nº 13.709) foi implementado a fim de garantir transparência no uso dos dados das pessoas físicas em quaisquer meios. No que diz respeito aos formulários codificados publicados na plataforma, serão fornecidos os mecanismos para que os desenvolvedores de formulário via código, possam identificar quais campos de um formulário irão possuir dados pessoais ou sensíveis de usuários, preservando seu desenvolvimento e deixando-os compatíveis com a Lei Geral de Proteção de Dados.
Deverão ser criadas propriedades a serem adicionadas a campos "imput" do html, a fim de que o desenvolvedor coloque as informações necessárias para identificar os campos e preencha a tabela universal. Técnica essa, semelhante a do pai filho, onde é adicionada uma propriedade chamada tablename, que informa o nome da categoria de filhos que pretende adicionar ao formulário. A propriedade tablename não afeta a visualização do html.

Novas propriedades:

  • fdprivate = (valor igual true) - propriedade que determina se aquele campo do form irá conter informação pessoal . 
  • fdsensible = (valor igual true) - propriedade que determina se aquele campo do form irá conter informação sensível . 
  • fdclass = Numérico de acordo com os registros definidos pela fundação.
  • fdtype = Numérico de acordo com os registros definidos pela fundação.
  • fdcause = Justificativa do desenvolvedor em solicitar este campo
  • fdanom = O campo pode ser anonimizado ? (True/False).           

Ao informar no campo que a propriedade fdprivate é true, todas as demais propriedades são obrigadas a serem preenchidas com os tipos de informação válidos para cada uma delas.

Ao fazer o html, o usuário deve utilizar as seguintes tags para os campos LGPD:

Campo normal:
<input type="text" name="client-name" >

Campo LGPD:
<input type="text" name="client-name" data-protection="Nome do cliente" data-protection-anonymizable ** data-protection-sensitive data-protection-name data-protection-class-consent="Necessário para futuras ofertas">


Tags:
Dado que será monitorado:

data-protection

Dado monitorado com descrição:
data-protection="description"

Dado que permite ser anonimizado:
data-protection-anonymizable ou data-protection-anonymizable="true"

Dado sensível:
data-protection-sensitive ou data-protection-sensitive="true"

Tipo de dado
data-protection-name
data-protection-mail
data-protection-cpf
data-protection-id (rg)
data-protection-driver-license (cnh)
data-protection-voter-id (título eleitoral)
data-protection-work-card (carteira de trabalho)
data-protection-passport
data-protection-other

Classificação:
data-protection-class-contract (execução de contrato)
data-protection-class-legal-obligation (obrigação legal)
data-protection-class-consent (consentimento)
data-protection-class-public-policies (execução de políticas públicas)
data-protection-class-scientific-analysis (estudos por órgão de pesquisa)
data-protection-class-dedicated-law (exercício regular de direito)
data-protection-class-life-protection (proteção da vida)
data-protection-class-health-guardianship (tutela de saúde)
data-protection-legitimate-interests (interesse legítimo)
data-protection-credit-protection (Proteção de crédito)

Classificação com justificativa:
data-protection-class-contract="".



Serviços de Dados


O fluig possui integração com dois tipos de serviços de dados, são eles: Dataset e Serviços Externos. Ambos podem ser usados em todos os eventos disponíveis para customização de definição de formulário.

Informações
titleImportante

Ao construir formulários utilizando a antiga técnica (formulário avançado) onde se faz o uso de datasets, é necessário atenção quanto aos dados incluídos no mesmo, pois ao marcar o formulário como Documento público o dataset respeitará a condição do formulário se tornando público também.

Com isso, orientamos o uso da nova técnica de construção de formulário, muito mais prática e dinâmica facilitando o uso e a construção dos formulários. Confira nossa documentação sobre a nova técnica de construção de formulário.


Dataset

É um serviço de dados que fornece acesso às informações, independente da origem dos dados. O fluig fornece Datasets internos que permitem acesso as entidades, como Usuários, Grupos de Usuários, entre outros.

Informações
titleNota

Os exemplos abaixo utilizam a função getDatasetValues, disponível somente para os Datasets de entidade e definição de formulário(quando informado o número da definição de formulário). Para a utilização de Datasets customizados consulte o Guia de Referência Customização de Datasets.


Na função getDatasetValues, NÃO são retornados os valores de todos os campos por questões de segurança. Para obter todos os dados é utilizado o DatasetFactory, exemplificado em Desenvolvimento de Datasets.

Por exemplo, para acessar o Dataset de usuários do fluig no evento displayFields de uma definição de formulário:

Bloco de código
languagehtml/xml
function displayFields(form,customHTML) {
     // Obtendo o usuario via dataset
     filter = new java.util.HashMap();
     filter.put("colleaguePK.colleagueId","adm");
     usuario = getDatasetValues('colleague',filter);
     form.setValue('RNC_colab_abertura',usuario.get(0).get("colleaguePK.colleagueId"));
}

Também é possível fazer uma chamada aos Datasets dentro da definição de formulário através de funções JavaScript.


O acesso aos Datasets também pode ser realizado diretamente no formulário da definição de formulário. Por exemplo, para acessar o Dataset de usuário e inserir os valores nos campos do HTML:

Bloco de código
languagehtml/xml
 <html>
    <head>
        <title>
            Teste XMLRPC
        </title>
        <script language="javascript">      
            function init(){                            
                var filter = new Object();
                filter["colleaguePK.colleagueId"] = "adm";  
                var colleagues = DatasetFactory.getDatasetValues("colleague", filter);
                if(colleagues.length > 0){        
					document.getElementById("colleagueName").value = colleagues[0].colleagueName;
                	document.getElementById("colleagueId").value = colleagues[0].colleagueId;
               	 	document.getElementById("login").value = colleagues[0].login;
               	 	document.getElementById("extensionNr").value = colleagues[0].extensionNr;                
					document.getElementById("groupId").value = colleagues[0].groupId;
					document.getElementById("mail").value = colleagues[0].mail;
                }else{
                    alert("Nenhum Usuário Encontrado");
				}
            }
        

É um serviço de dados que fornece acesso às informações, independente da origem dos dados. O fluig fornece Datasets internos que permitem acesso as entidades, como Usuários, Grupos de Usuários, entre outros.

Informações
titleNota

Os exemplos abaixo utilizam a função getDatasetValues, disponível somente para os Datasets de entidade e definição de formulário(quando informado o número da definição de formulário). Para a utilização de Datasets customizados consulte o Guia de Referência Customização de Datasets.

Na função getDatasetValues, NÃO são retornados os valores de todos os campos por questões de segurança. Para obter todos os dados é utilizado o DatasetFactory, exemplificado em Desenvolvimento de Datasets.

Por exemplo, para acessar o Dataset de usuários do fluig no evento displayFields de uma definição de formulário:

Bloco de código
languagehtml/xml
function displayFields(form,customHTML) {
     // Obtendo o usuario via dataset
     filter = new java.util.HashMap();
     filter.put("colleaguePK.colleagueId","adm");
     usuario = getDatasetValues('colleague',filter);
     form.setValue('RNC_colab_abertura',usuario.get(0).get("colleaguePK.colleagueId"));
}

Também é possível fazer uma chamada aos Datasets dentro da definição de formulário através de funções JavaScript.

O acesso aos Datasets também pode ser realizado diretamente no formulário da definição de formulário. Por exemplo, para acessar o Dataset de usuário e inserir os valores nos campos do HTML:

Bloco de código
languagehtml/xml
 <html>
    <head>
        <title>
            Teste XMLRPC
        </title>
        <script language="javascript">      
            function init(){                            
                var filter = new Object();
                filter["colleaguePK.colleagueId"] = "adm";  
                var colleagues = DatasetFactory.getDatasetValues("colleague", filter);
                if(colleagues.length > 0){        
					document.getElementById("colleagueName").value = colleagues[0].colleagueName;
                	document.getElementById("colleagueId").value = colleagues[0].colleagueId;
               	 	document.getElementById("login").value = colleagues[0].login;
               	 	document.getElementById("extensionNr").value = colleagues[0].extensionNr;                
					document.getElementById("groupId").value = colleagues[0].groupId;
					document.getElementById("mail").value = colleagues[0].mail;
                }else{
                    alert("Nenhum Usuário Encontrado");
				}
            }
        </script>
    </head>
    <script type="text/javascript" src="/webdesk/vcXMLRPC.js"></script>
    <body onload="init()">
    <form id="form1">
        <b> Nome do Usuário: </b>
        <input type="text" name="colleagueName" id="colleagueName" />
	    <br><br>    
		<b> Matricula do Usuário: </b>
        <input type="text" name="colleagueId" id="colleagueId" />
		<br><br>
		<b>Login do Usuário:</b>
        <input type="text" name="login" id="login" />
        <br><br>            
		<b> Ramal do Usuário: </b>
        <input type="text" name="extensionNr" id="extensionNr" />
        <br><br>
        <b> Grupo do Usuário: </b>
        <input type="text" name="groupId" id="groupId" />
        <br><br>
        <b> E-mail do Usuário: </b>
        <input type="text" name="mail" id="mail" />
        <br><br>
    </form>
    </body>
</html>

...

Bloco de código
languagexml
titleFormulário Pai x Filho
linenumberstrue
collapsetrue
<html>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="/portal/resources/style-guide/css/fluig-style-guide.min.css">
<link rel="stylesheet" type="text/css" href="/portal/resources/style-guide/css/fluig-style-guide-filter.min.css">
<script src="/portal/resources/js/jquery/jquery.js"></script>
<script src="/portal/resources/js/jquery/jquery-ui.min.js"></script>
<script src="/portal/resources/js/mustache/mustache-min.js"></script>
<script src="/portal/resources/style-guide/js/fluig-style-guide.min.js"></script>
<script  src="/portal/resources/style-guide/js/fluig-style-guide-filter.min.js"></script>
<title>Formulario pai e filho</title>
<body>
<span class="NumSecao">
<strong>&nbsp;Cadastro</strong></span>
<HR>
<br>
<form>
<table>
  <tr> 
    <td align="right" width="100" class="Labels"><b>Data:</b></td>
    <td class="Normal"><strong><input type="text" size="30" name="data"></strong></td>
  </tr>
  <tr> 
    <td align="right" width="100" class="Labels"><b>Solicitação:</b></td>
    <td class="Normal"><strong><input type="text" size="30" name="num_solic"></strong></td>
  </tr>
  <tr> 
    <td align="right" width="100" class="Labels"><b>Atividade:</b></td>
    <td class="Normal"><input type="text" size="30" name="num_ativ"></td>
  </tr>
  <tr> 
    <td align="right" width="100" class="Labels"><b>Processo:</b></td>
    <td class="Normal"><input type="text" size="30" name="cod_proc"></td>
  </tr>
  <tr> 
    <td align="right" width="100" class="Labels"><b>Versão:</b></td>
    <td class="Normal"><p><input type="text" size="30" name="ver_proc"></p></td>
  </tr>
  <tr> 
    <td align="right" width="100" class="Labels"><b>Usuário:</b></td>
    <td class="Normal"><p><input type="text" size="30" name="usuario"></p></td>
  </tr>
  <tr> 
    <td align="right" width="100" class="Labels"><b>Empresa:</b></td>
    <td class="Normal"><p><input type="text" size="30" name="empresa"></p></td>
  </tr>
  <tr>
    <td align="right" width="100" class="Labels"><b>Observações:</b></td>
    <td class="Normal"><p><input type="text" size="30" name="obs"></p></td>
  </tr>
   <td class="label">
        Autoriza?
        <input type="radio"
           name="aut"
           id="aut"
           value="branco"
           style="display:none">
        Sim:                                       
            <input name="aut"
               type="radio"
               value="aut_yes" checked>                           
        Não:
            <input name="aut"
               type="radio"
               value="aut_noyes">
 checked>   </td> 
</table>
<table>
  <tr>
    <td><b>Responsáveis:</b></td><br></br>
        <table border="1" tablename="teste" addbuttonlabel="Adicionar Responsável">
  
          <thead>Não:
                <tr><input name="aut"
                    <td>type="radio"
               value="aut_no">
         <b>Responsável:</b>
                    </td>
                    <td>td> 
</table>
<table>
  <tr>
    <td><b>Responsáveis:</b></td><br></br>
        <table border="1" tablename="teste" addbuttonlabel="Adicionar Responsável">
              Check<thead>
                    </td><tr>
                    <td>
                        Observação<b>Responsável:</b>
                    </td>
                    </tr><td>
              </thead>
            <tbody>Check
                <tr>
    </td>
                <td>
    <td>
                    <select name="colaboradores" dataset="colleague" datasetkey="colleagueName" datasetvalue="colleagueName"></select> Observação
                    </td>
                    <td></tr>
             </thead>
           <input type="checkbox" name="validado" value="a">
    <tbody>
                </td><tr>
                    <td>
                        <select <input typename="colaboradores" dataset="textcolleague" namedatasetkey="mat_er_ialcolleagueName" iddatasetvalue="mat_er_ial">colleagueName"></select>
                    </td>
                </tr>
            </tbody>
    <td>
    </table>
  </tr>
</table>
</form>
</body>
</html>

Clique aqui e baixe um exemplo de formulário Pai e Filho usando o fluig Style Guide.

Pai Filho Radio Button

Para utilizar campos radio button, além da definição padrão do componente html, é necessário que seja utilizado o atributo ‘value’ para os dados serem salvos corretamente.

Bloco de código
languagehtml/xml
<table border="1" tablename="teste" addbuttonlabel="Adicionar Filho"  nodeletebutton="true">
	<thead>
		<tr>
			<td><b>Nome</b></td>
			<td><b>Idade</b></td>
			<td><b><font face =	"arial" size=5 color ="blue">Sim:</b></td>
		 	<td><b><font face = "arial" size=5 color ="blue">Não:</b></td>
	 	</tr>
	</thead>
	<tr>
		<td><input                    <input type="checkbox" name="validado" value="a">
                    </td>
                    <td>
                        <input type="text" name="mat_er_ial" id="nomefilho"></td>
		<td><input type="text" name="idadefilho"></td>
 		<td><input type="radio" name="nameradiofilho" id = "idsimfilho" value="ant_yes"></td>
	 	<td><input type="radio" name="nameradiofilho" id = "idnaofilho" value="ant_no"></td>
	</tr>
</table>

Tradução de formulários

Para traduzir formulários é necessário utilizar a função i18n.translate(“literal_da_tradução”) nos pontos do arquivo HTML que devem ser traduzidos, conforme exemplo a seguir:

Bloco de código
languagehtml/xml
<label>i18n.translate("nm_cliente")</label>
<input name=”nm_cliente”>
<br>
<label>i18n.translate("contato_cliente")</label>
<input name=”contato_cliente”>
Informações
As literais e seus respectivos valores são informados em arquivos de propriedades com a extensão .properties para cada um dos idiomas desejados. Os idiomas suportados para a tradução são os mesmos suportados pelo fluig:

Português (pt_BR);

Inglês (en_US);

Espanhol (es).

Os arquivos contendo as literais têm a seguinte nomenclatura:

Português: nome_do_formulario_pt_BR.properties;

Inglês: nome_do_formulario_en_US.properties;

Espanhol: nome_do_formulario_es.properties.

Os arquivos de propriedades são criados de acordo com os passos apresentados a seguir:

...

effectDuration0.5
historyfalse
idsamples
effectTypefade

...

defaulttrue
id1
labelPasso1
  • Para gerar os arquivos de propriedades, na visão Explorador de Pacotes, deve-se acessar o arquivo HTML do formulário a ser traduzido, clique com o botão direito e acessar a opção Externalizar Strings.

Image Removed

Figura 1 - Menu Contextual Externalizar Strings.

mat_er_ial">
                    </td>
                </tr>
            </tbody>
        </table>
  </tr>
</table>
</form>
</body>
</html>

Clique aqui e baixe um exemplo de formulário Pai e Filho usando o fluig Style Guide.


Pai Filho Radio Button

Para utilizar campos radio button, além da definição padrão do componente html, é necessário que seja utilizado o atributo ‘value’ para os dados serem salvos corretamente.

Bloco de código
languagehtml/xml
<table border="1" tablename="teste" addbuttonlabel="Adicionar Filho"  nodeletebutton="true">
	<thead>
		<tr>
			<td><b>Nome</b></td>
			<td><b>Idade</b></td>
			<td><b><font face =	"arial" size=5 color ="blue">Sim:</b></td>
		 	<td><b><font face = "arial" size=5 color ="blue">Não:</b></td>
	 	</tr>
	</thead>
	<tr>
		<td><input type="text" name="nomefilho"></td>
		<td><input type="text" name="idadefilho"></td>
 		<td><input type="radio" name="nameradiofilho" id = "idsimfilho" value="ant_yes"></td>
	 	<td><input type="radio" name="nameradiofilho" id = "idnaofilho" value="ant_no"></td>
	</tr>
</table>



Tradução de formulários


Para traduzir formulários é necessário utilizar a função i18n.translate(“literal_da_tradução”) nos pontos do arquivo HTML que devem ser traduzidos, conforme exemplo a seguir:

Bloco de código
languagehtml/xml
<label>i18n.translate("nm_cliente")</label>
<input name=”nm_cliente”>
<br>
<label>i18n.translate("contato_cliente")</label>
<input name=”contato_cliente”>
Informações
As literais e seus respectivos valores são informados em arquivos de propriedades com a extensão .properties para cada um dos idiomas desejados. Os idiomas suportados para a tradução são os mesmos suportados pelo fluig:

Português (pt_BR);

Inglês (en_US);

Espanhol (es).


Os arquivos contendo as literais têm a seguinte nomenclatura:

Português: nome_do_formulario_pt_BR.properties;

Inglês: nome_do_formulario_en_US.properties;

Espanhol: nome_do_formulario_es.properties.


Os arquivos de propriedades são criados de acordo com os passos apresentados a seguir:

Deck of Cards
effectDuration0.5
historyfalse
idsamples
effectTypefade
Card
defaulttrue
id1
labelPasso1


  • Para gerar os arquivos de propriedades, na visão Explorador de Pacotes, deve-se acessar o arquivo HTML do formulário a ser traduzido, clique com o botão direito e acessar a opção Externalizar Strings.

Image Added

Figura 1 - Menu Contextual Externalizar Strings.


Card
id2
labelPasso 2


  • Os arquivos contendo as literais são criados na pasta do formulário.

Image Added

Figura 2 - Arquivos Properties na Pasta do Formulário.


Card
id3
labelPasso 3


  • Informe os valores correspondentes às literais para o idioma de cada arquivo.

Image Added

Figura 3 - Edição de um Arquivo Properties.


Ao exportar um formulário para o fluig, os arquivos de propriedades contendo as literais são publicados como anexos dele.
O formulário é apresentado no idioma que está configurado para o usuário corrente

...

id2
labelPasso 2
  • Os arquivos contendo as literais são criados na pasta do formulário.

Image Removed

Figura 2 - Arquivos Properties na Pasta do Formulário.

...

id3
labelPasso 3
  • Informe os valores correspondentes às literais para o idioma de cada arquivo.

Image Removed

Figura 3 - Edição de um Arquivo Properties.

Ao exportar um formulário para o fluig, os arquivos de propriedades contendo as literais são publicados como anexos dele.
O formulário é apresentado no idioma que está configurado para o usuário corrente.

LGPD

O LGPD - Lei Geral de Proteção de Dados (LGPD, Lei nº 13.709) foi implementado a fim de garantir transparência no uso dos dados das pessoas físicas em quaisquer meios. No que diz respeito aos formulários codificados publicados na plataforma, serão fornecidos os mecanismos para que os desenvolvedores de formulário via código, possam identificar quais campos de um formulário irão possuir dados pessoais ou sensíveis de usuários, preservando seu desenvolvimento e deixando-os compatíveis com a Lei Geral de Proteção de Dados.
Deverão ser criadas propriedades a serem adicionadas a campos "imput" do html, a fim de que o desenvolvedor coloque as informações necessárias para identificar os campos e preencha a tabela universal. Técnica essa, semelhante a do pai filho, onde é adicionada uma propriedade chamada tablename, que informa o nome da categoria de filhos que pretende adicionar ao formulário. A propriedade tablename não afeta a visualização do html.

Novas propriedades:

  • fdprivate = (valor igual true) - propriedade que determina se aquele campo do form irá conter informação pessoal . 
  • fdsensible = (valor igual true) - propriedade que determina se aquele campo do form irá conter informação sensível . 
  • fdclass = Numérico de acordo com os registros definidos pela fundação.
  • fdtype = Numérico de acordo com os registros definidos pela fundação.
  • fdcause = Justificativa do desenvolvedor em solicitar este campo
  • fdanom = O campo pode ser anonimizado ? (True/False).           

Ao informar no campo que a propriedade fdprivate é true, todas as demais propriedades são obrigadas a serem preenchidas com os tipos de informação válidos para cada uma delas.

Ao fazer o html, o usuário deve utilizar as seguintes tags para os campos LGPD:

Campo normal:
<input type="text" name="client-name" >

Campo LGPD:
<input type="text" name="client-name" data-protection="Nome do cliente" data-protection-anonymizable ** data-protection-sensitive data-protection-name data-protection-class-consent="Necessário para futuras ofertas">

Tags:
Dado que será monitorado:

data-protection

Dado monitorado com descrição:
data-protection="description"

Dado que permite ser anonimizado:
data-protection-anonymizable ou data-protection-anonymizable="true"

Dado sensível:
data-protection-sensitive ou data-protection-sensitive="true"

Tipo de dado
data-protection-name
data-protection-mail
data-protection-cpf
data-protection-id (rg)
data-protection-driver-license (cnh)
data-protection-voter-id (título eleitoral)
data-protection-work-card (carteira de trabalho)
data-protection-passport
data-protection-other

Classificação:
data-protection-class-contract (execução de contrato)
data-protection-class-legal-obligation (obrigação legal)
data-protection-class-consent (consentimento)
data-protection-class-public-policies (execução de políticas públicas)
data-protection-class-scientific-analysis (estudos por órgão de pesquisa)
data-protection-class-dedicated-law (exercício regular de direito)
data-protection-class-life-protection (proteção da vida)
data-protection-class-health-guardianship (tutela de saúde)
data-protection-legitimate-interests (interesse legítimo)
data-protection-credit-protection (Proteção de crédito)

Classificação com justificativa:
data-protection-class-contract="".


Traduzindo Eventos de formulários 

...