Árvore de páginas

Versões comparadas

Chave

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

...

Para elaborar la máscara es posible utilizar:

CódigoDescrição
0Somente Solamente Números.
9Somente Solamente números mais más opcional.
#Somente Solamente números mais recursivomás recursivos.
ANúmeros ou o letras.
SSomente Solamente letras entre A-Z e y a-z.
Bloco de código
languagejavascript
titleOutros exemplos de utilização de máscaras
                     
                     Data: "00/00/0000"
                  Horário: "00:00:00"
              Data e Hora: "00/00/0000 00:00:00"
                      CEP: "00000-000"
                 Telefone: "0000-0000"
            Telefone(ddd): "(00) 0000-0000"
Telefone(ddd + 9ºdígitos): "(00) 90000-0000"
           Placa de carro: "SSS 0000"
                      CPF: "000.000.000-00"
                     CNPJ: "00.000.000/0000-00"
                       IP: "099.099.099.099"
              porcentagem: "#00.000,00%"
				    Valor: "#00.000.000.000.000,00"
Nota
Caso a importação da biblioteca jQuery esteja desabilitada através da variável fluigjQuery, a funcionalidade de máscaras também estará desabilitada
En caso la importación de la biblioteca jQuery esté deshabilitada a través de la variable fluigjQuery, la funcionalidad de máscaras también estará deshabilitada.

 

ComboBox

Geralmente é necessário popular um ComboBox de um formulário com um Generalmente es necesario popular un ComboBox de un formulario con un determinado grupo de valores.

No Fluig isto é possível através da utilização En el Fluig esto es posible a través de la utilización de Datasets. Os  Los Datasets são serviços de dados padrão disponibilizados pelo son servicios de datos patrón disponibles por el Fluig, como por exemploejemplo, o serviço de “Volumes” do produtoel servicio de “Volúmenes” del producto.

Para habilitar o el Dataset no en el ComboBox basta usar a seguinte construçãoutilizar la siguiente construcción:

Bloco de código
languagejavascript
<select name="RNC_volume" id="RNC_volume" dataset="nome-dataset" datasetkey="chave" datasetvalue="valor" addBlankLine=”false”></select>

OndeDonde:

  • dataset é o nome do es el nombre del Dataset.
  • datasetkey é a chave do es la clave del registro.
  • datasetvalue é o es el valor de um un determinado campo do espacio del registro.
  • addBlankLine é o es lo que define se a primeira linha do si el primer renglón del combo será um un valor em brancoen blanco.

ExemploEjemplo:

Bloco de código
languagejavascript
<select name="RNC_volume" id="RNC_volume" dataset="destinationVolume" datasetkey="volumeID" datasetvalue="volumeDescription"></select>

No exemplo acima estamos listando em um ComboBox todas os Volumes cadastradas no En el ejemplo anterior realizamos una lista en un ComboBox con todos los Volúmenes registrados en el Fluig.

 

Caso seja necessária a ordenação dos dados provindos de um En caso sea necesario ordenar los datos provenientes de un dataset interno, indicamos a criação la creación de um un dataset customizado personalizado que execute o ejecute el interno e y ordene os dadoslos datos, antes de alimentar o eliminar el componente combobox.

Para utilizar um ComboBox com somente uma opção não deve ser utilizado caracteres especiais e espaço no un ComboBox con solamente una opción no se deben utilizar carácteres especiales y espacio en el value da tag option.

ExemplosEjemplos:

  • Forma corretacorrecta
Bloco de código
languagejavascript
<select>
  <option value="te">Teste</option>
</select>

 

  • Forma IncorretaIncorrecta
Bloco de código
languagejavascript
<select>
  <option value="te te te">Teste</option>
</select>

 

Zoom

Permite a la consulta de entidades e outros formulário criados no Fluig para seleção de dados pelo usuário.y otros formularios creados en el Fluig para que el usuario pueda seleccionar datos.

El acceso O acesso a este componente é es realizado a partir de uma chamada Javascript no HTML da definição de formuláriouna llamada Javascript en el HTML de la definición de formulario.
Bloco de código
languagehtml/xml
"/webdesk/zoom.jsp?datasetId="+dataset+"&dataFields="+campos+"&resultFields="+resultFields+"$type="+"&title="+titulo

OndeDonde:

 

  • title: é o es el título para a janela la ventaja de zoom.
  • datasetId: é o nome do es el nombre del dataset (Built-in, CardIndex ou o Customized).
  • dataFields: são os nomes dos campos a serem apresentadosson los nombres de los espacios a presentar.
  • resultFields: são os campos que devem ser retornados para o registro selecionado pelo usuárioson los espacios que se deben devolver al registro seleccionado por el usuario.
  • likeField: o nome do campo el nombre del espacio para filtro de dados (se necessário).datos (si es necesario)
  • likeValue: o el valor a ser usado no usar en el filtro de dados (se necessário).datos (si es necesario)

 

ATENÇÃOATENCIÓN: Este parâmetro só é parámetro sólo es válido para datasets internos. Datasets customizados não permitem a utilização de personalizados no permiten utilizar filtros.

 

  • Para obter o registro selecionado pelo usuário devemos adicionar a seguinte função JavaScript ao formulário do processoobtener el registro seleccionado por el usuario debemos agregar la siguiente función JavaScript al formulario del proceso:
Bloco de código
languagehtml/xml
function setSelectedZoomItem(selectedItem) {               
}

Onde Donde selectItem é o registro selecionado pelo usuário na tela  es el registro seleccionado por el usuario en la ventana de zoom.

Nota
titleImportante
A mesma função “setSelectZoomItem” será usada para receber o

La misma función “setSelectZoomItem” se utilizará para recibir el resultado de todas

as chamadas ao

las llamadas al zoom.

Assim

Así, para diferenciar cada

chamada foi criado o parâmetro type. Esse parâmetro é retornado em selectedItem e pode ser usado para diferenciar as chamadas ao

llamada se ha creado el parámetro  type. Este parámetro se devuelve en selectedItem  y se puede utilizar para diferenciar las llamadas al zoom.

 

  • Para

    acessar um campo do registro selecionado

    ingresar un espacio del registro seleccionado:

Bloco de código
languagehtml/xml
selectedItem["fieldName"]

Onde fieldName é o nome do campo de retorno que foi definido na chamada Donde fieldName es el nombre del espacio de devolución que se ha definido en la llamada de zoom. Para obter o registroo obtener el registro componente de Zoom do Fluig foi desenvolvido del Fluig se ha desarrollado para permitir que o el recurso de zoom fosse utilizado em definições de formuláriosse utilice en definiciones de formularios.

 

Para que seja possível visualizar e resgatar informações dos campos “metadatas” do formulário, é necessário utilizar a seguinte sea posible visualizar y rescatar información de los espacios “metadatos” del formulario, es necesario utilizar la siguiente nomenclatura:

metadata_id

Retorna o código da Devuelve el código de la ficha

medatata_version

Retorna a versão da Devuelve la versión de la ficha

metadata_parent_id

Retorna o código da pasta PaiDevuelva el código de la carpeta Padre

metadata_card_index_id

Retorna o código do fichárioDevuelva el código del fichero

metadata_card_index_version

Retorna a versão do fichárioDevuelva la versión del fichero

metadata_active

Versão ativaVersión activa

 

Abaixo um exemplo A continuación un ejemplo de código utilizado para visualização e resgate destes visualizar y rescatar estos valores:

Bloco de código
languagehtml/xml
function zoomFormulario(titulo, dataset, campos, resultFields, type){
	window.open("/webdesk/zoom.jsp?datasetId="+dataset+"&dataFields="+campos+
	"&resultFields="+resultFields+"&type="+type+"&title="+titulo, "zoom", "status , scrollbars=no ,width=600, height=350 , top=0 , left=0");
} 
Informações
A utilização da PK nos filtros ao

La utilización de la PK en los filtros al utilizar dataset de Grupo, Papel

ou

o Colaborador

é

es opcional,

porém o mesmo valor utilizado na URL do zoom deve ser utilizado para a obtenção do valor selecionado, conforme exemplo abaixo

sin embargo se debe utilizar el mismo valor en la URL del zoom para obtener el valor seleccionado, según el ejemplo a continuación.

Bloco de código
languagehtml/xml
function setSelectedZoomItem(selectedItem) {
	alert("Grupo: " + selectedItem['groupId'] + " Colaborador: "+ selectedItem['colleagueGroupPK.colleagueId']);
}
 
<input type="button" class="btZoom" onclick="zoomFormulario('title', 'colleagueGroup', 'groupId,Codigo,colleagueGroupPK.colleagueId,Matricula','groupId,colleagueGroupPK.colleagueId', 'nofield');">
 

 

Para utilizar filtros a chamada é similar ao de la llamada es similar al del dataFields.

Segue exemplo abaixoSigue el ejemplo a continuación:

Bloco de código
languagehtml/xml
window.open("/webdesk/zoom.jsp?datasetId=preCad&dataFields=codigo, Código, descricao, Descrição&resultFields=descricao&type=precad&filterValues=metadata_active, false","zoom" , "status, scrollbars=no, width=600, height=350, top=0, left=0");

Neste exemplo, o zoom irá retornar somente as fichas inativasEn este ejemplo, el zoom devolverá solamente las fichas inactivas.

 

Zoom Externo

Em situações aonde os dados dos En situaciones donde los datos de los elementos externos ao Fluig são muito volumosos é recomendada a construção de uma aplicação externa ao Fluig que fará o al Fluig son muy voluminosos, se recomienda la construcción de una aplicación externa al Fluig que realizará el papel de zoom para o usuário. Abaixo será descrita uma técnica JavaScript aonde será possível chamar uma aplicação externa e a mesma poderá devolver o dado solicitado pelo usuário para um campo do formulário do Fluig.el usuario. A continuación se describirá una técnica JavaScrip donde será posible llamar una aplicación externa y la misma podrá retornar el dato solicitado por el usuario a un espacio del formulario del Fluig.

El primer paso para implementar esta técnica es crear una lógica en JavaScript que abrirá una nueva ventana llamando la aplicación externa que funcionará como zoom para el formulario. Vamos a utilizar y explicar el comando window.open en este ejemploO primeiro passo para implementação dessa técnica é criar uma lógica em JavaScript que irá abrir uma nova janela chamando a aplicação externa que irá se comportar como zoom para o formulário. Vamos utilizar e explanar o comando window.open neste exemplo:

Bloco de código
languagehtml/xml
Window.open(URL Aplicação Externa, Nome da Janela que será aberta, comandos adicionais)

OndeDonde:

  • URL Aplicação Aplicación Externa: É a url da aplicação Es la url de la aplicación externa que funcionará como zoom para o el Fluig. ExEjhttp://servidor/applications/forneczoom.asp.
  • Nome da Janela: Nome da janela que será utilizado pelo navegador do usuário Nombre de la Ventana: Nombre de la ventana que utilizará el navegador del usuario como identificador. Para evitar a sobreposição de conteúdo em janela é recomendado que para cada zoom chamado por um mesmo formulário seja adicionado um nome diferente. Exla sobreposición del contenido en ventana, se recomienda que a cada zoom llamado por un mismo formulario se agregue un nombre diferente. Ej: “ZoomFormec”.
  • Comandos AdicionaisAdicionales: Comandos adicionais adicionales utilizados para a criação da janela que irá conter a aplicação zoom. Excrear la ventana que contendrá la aplicación zoom. Ej: “width=230, height=230”.
Informações
titleNota
Devido a uma restrição dos navegadores a url do

Debido a una restricción de los navegadores, la url del programa de zoom externo

ao

al Fluig

deverá estar no mesmo domínio em que o Fluig se encontra. Caso contrário não será possível atribuir ao campo do formulário o valor escolhido para o zoom. Este problema ocorrerá por que os navegadores proíbem a pratica de codificação

deberá estar en el mismo dominio que se encuentra el Fluig. En caso contrario no será posible atribuir al espacio del formulario el valor elegido para el zoom. Este problema ocurrirá porque los navegadores prohíben la práctica de codificación JavaScript cross-domain.

 O

código abaixo irá programar um formulário do Fluig contendo um campo e um botão lateral que irá invocar a janela da aplicação El código a continuación programará un formulario del Fluig conteniendo un espacio y un botón lateral que invocará la ventana de la aplicación externa.

Bloco de código
languagehtml/xml
<form name=”FornecedorForm”>
  Código do Fornecedor:
  <input name=”cod_fornec” size=’10” value=”” type=”text”>
  <input value=”lista” onClick=”mostraLista()” type=”button”>
</form>

<script language=”JavaScript”>
   Function mostraLista() {
     Window.open(“fornecedores.html”, “list”,”width=230,height=230”);
   }
</script>       

 

O segundo passo é programar dentro da aplicação externa uma função JavaScript que devolva para o campo do formulário o valor escolhido para o usuário na aplicação externa. Essa aplicação externa poderá ser desenvolvida em qualquer tecnologia de desenvolvimento web existente no mercado de que a mesma possa realizar a execução de scripts JavaScript no lado do cliente. Segue exemplo de uma função JavaScript que passa o valor para o campo do formulário:El segundo paso consiste en programar dentro de la aplicación externa una función JavaScript que devuelva al campo del formulario el valor elegido al usuario en la aplicación externa. Esta aplicación externa se podrá desarrollar en cualquier tecnología de desarrollo web existente en el mercado donde la misma pueda realizar la ejecución de scripts JavaScript al lado del cliente. A continuación se indica un ejemplo de una función JavaScript que informa el valor al espacio del formulario.

Bloco de código
languagehtml/xml
<script language=”JavaScript”>
   function escolhaelegir(valor) {
       // AEl linhasiguiente abaixorenglón testaprueba sesi ala janelaventana dodel formulárioformulario dodel fluig que abriuabrió ala janelaventana de zoom aindaaún está abertaabierta
       if (window.opener && !window.opener.close) {
              // setaestablece oel valor passandoinformado paraal o campoespacio
              window.opener.document.(id dodel form en noel formulárioformulario fluig).(nomenombre dodel campo).value = valor;
       }
       // FechaCierra ala janelaventana de dala aplicaçãoaplicación zoom
       window.close();
   }
</script>

OndeDonde:

  • Id do form no formuário Fluig: Caso algum id tenha sido definido para a tag <form> no formulário do Fluig é interessante referenciar neste comando. Pode ser utilizada também a referência de coleção forms dentro do comando (forms[posiçãodel form en el formulario Fluig: En caso de que se haya definido algún id para el tag <form> en el formulario del Fluig, es interesante realizar una referencia en este comando. Se puede utilizar también la referencia de colección forms dentro del comando (forms[posición])
    ExEjFornecedorFormProveedorForm, forms[0].
  • Nome do Campo: Nome do campo que irá receber o valor passado para a funçãoNombre del espacio: Nombre del espacio que recibirá el valor informado a la función
    ExEjcod_fornecproveed.
  • Valor: Dado que será passado para o campo do formulário do Datos que se informará al espacio del formulario del Fluig.

 

O exemplo a seguir irá programar um exemplo El ejemplo a continuación programará un ejemplo de zoom externo feito inteiramente em HTML com dados realizado enteramente en HTML con datos estáticos apenas para ilustraçãoilustrar. Os dados Los datos de zoom podem provir de qualquer fonte seja ela interna ou externa ao provienen de cualquier fuente sea esta interna o externa al Fluig.

Bloco de código
languagehtml/xml
<html>
  <head>
  <title>Lista de fornecedores<proveedores</title> 


<script language="JavaScript"> 
function escolhaelegir(valor) { 
  // TestePrueba de validadevalidez dodel Opener 
  if (window.opener && !window.opener.closed) { 
      // gravandograbando oel valor dodel campoespacio cod_fornec 
      window.opener.document.forms[0].cod_fornec.value = valor; 
  } 
   window.close(); 
} 
</script>
  
  </head>
  <body>   

  <!-- OsLos datos dadosa abaixocontinuación estãoestán fixosfijos maspero poderiamse serpodrían montadosconfigurar a partir de qualquercualquier origemorigen. --> 

  <table border="1" cellpadding="5" cellspacing="0"> 
  <tbody><tr bgcolor="#cccccc"><td colspan="2"><b>Exemplo aplicacao ECM</b></td></tr> 
  <tr bgcolor="#cccccc"><td><b>Codigo</b></td><td><b>NASDAQ</b></td></tr> 
  <tr><td><a href="javascript:escolha('TOTVSv3')">TOTVS</a></td> 
  <td><a href="javascript:escolha('TOTVSv3')">TOTVSv3</a></td></tr> 
  <tr><td><a href="javascript:escolha('RM1')">RM</a></td> 
  <td><a href="javascript:escolha('RM1')">RM1</a></td></tr> 
  <tr><td><a href="javascript:escolha('DTS3')">Datasul</a></td> 
  <td><a href="javascript:escolha('dts3')">Dts3</a></td></tr> 
  <tr><td><a href="javascript:escolha('Lgx2')">Logix</a></td> 
  <td><a href="javascript:escolha('Lgx2')">Lgx2</a></td></tr> 
  </tbody>
  </table> 
table> 
  <!-- FimFin dosde dadoslos datos--> 

  </body>
</html>

Para colocar o exemplo em prática no produto, basta publicar a definição de formulário a seguir informando o arquivo do un ejemplo en práctica en el el producto, se debe publicar la definición del formulario e informar el archivo del zoom externo como anexo da definição de formuláriode la definición de formulario.

Exemplo Ejemplo de Zoom.zip

Ao clicar em um dos itens da tela de zoom será chamada a função JavaScript escolha que ira enviar o valor para o Al hacer clic en uno de los ítems de la pantalla de zoom aparecerá la función JavaScript elección que enviará el valor al campo cod_fornec no formulário  en el formulario do Fluig.


Serviços

Servicios 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.

Dataset

Datos

El Flui posee integración con dos tipos de servicios de datos, estos son: Dataset y Servicios Externos. Ambos se pueden utilizar en todos los eventos disponibles para personalizar la definición de formulario.

Dataset

Es un servicio de datos que provee acceso a la información, independiente del origen de los datos. El Fluig provee Datasets internos que permiten el acceso a entidades, como Usuarios, Grupo de Usuarios, entre otros. Consulte el registro de Datasets del Fluig para obtener la relación completa de los Datasets disponibles y sus respectivos espaciosÉ 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. Consulte o cadastro de Datasets do Fluig para obter a relação completa dos Datasets disponíveis e seus respectivos campos.

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

Los ejemplos a continuación utilizan la función getDatasetValues, disponible solamente para los Datasets de entidad y definición de formulario (cuando se informa el número de la definición de formulario). Para utilizar los Datasets personalizados consulte la Guía de Referencia Personalización de Datasets.

 

Na função En la función getDatasetValues, NÃO são retornados os NO se devolverán los valores de todos os campos los espacios por questões cuestiones de segurançaseguridad. Para obter todos os dados é utilizado o DatasetFactory, exemplificado em Desenvolvimento obtener todos los datos se utiliza el DatasetFactory, ejemplificado en Personalización de Datasets.

Por exemploejemplo, para acessar o ingresar el Dataset de usuários do Fluigno usuarios del Fluig en el evento displayFields de uma definição una definición de formulárioformulario:

Bloco de código
languagehtml/xml
function displayFields(form,customHTML) {
     // ObtendoObteniendo oel usuario a través viade dataset.
     filter = new java.util.HashMap();
     filter.put("colleaguePK.colleagueId","adm");
     usuario = getDatasetValues('colleague',filter);
     form.setValue('RNC_colab_abertura',usuario.get(0).get("colleagueId"));
}


Também é possível fazer uma chamada aos Datasets dentro da definição de formulário através de funções También se puede realizar una llamada a los Datasets dentro de la definición de formulario a través de funciones 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 El acceso a los Datasets también se puede realizar directamente en el formulario de la definición de formulario. Por ejemplo, para ingresar el Dataset de usuario e ingresar los valores en los espacios del HTML:

Bloco de código
languagehtml/xml
 <html>  <html>
    <head>
        <title>
            TestePrueba XMLRPC
        </title>
        <script language="javascript">      
            function init(){                            
                var filter = new Object();
                filter["colleaguePK.colleagueId"] = "adm";  
                var colleagues = 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("NenhumNingún UsuárioUsuario Encontrado");
				}
            }
        </script>
    </head>
    <script src="../vcXMLRPC.js"></script>
    <body onload="init()">
    <form id="form1">
        <b> NomeNombre dodel UsuárioUsuario: </b>
        <input type="text" name="colleagueName" id="colleagueName" />
	    <br><br>    
		<b> MatriculaMatrícula dodel UsuárioUsuario: </b>
        <input type="text" name="colleagueId" id="colleagueId" />
		<br><br>
		<b>Login dodel UsuárioUsuario:</b>
        <input type="text" name="login" id="login" />
        <br><br>             
		<b> Ramal dodel UsuárioUsuario: </b>
        <input type="text" name="extensionNr" id="extensionNr" />
        <br><br>
        <b> Grupo dodel UsuárioUsuario: </b>
        <input type="text" name="groupId" id="groupId" />
        <br><br>
        <b> E-mail do UsuárioCorreo electrónico del Usuario: </b>
        <input type="text" name="mail" id="mail" />
        <br><br>
    </form>
    </body>
</html>

 

O El Dataset para definição de formulário utiliza a mesma chamada do definir el formulario utiliza la misma llamada del Dataset de entidades, como no caso do usuário. Entretanto ao invés de passarmos como parâmetro o nome do Dataset passaremos o número da definição de formulário, por exemploen el caso del usuario. Mientras al contrario de pasar como parámetro el nombre del Dataset informaremos el número de la definición de formulario, por ejemplo:

 

Bloco de código
languagehtml/xml
function displayFields(form,customHTML) {
     // ObtendoObteniendo oel usuario viaa través de dataset.
     filter = new java.util.HashMap();
     filter.put("RNC_nr_solicitacao",new java.lang.Integer(20));
     fichas = getDatasetValues(Number(676),filter);
	 log.info("UsuárioUsuario de AberturaApertura: "+ fichas.get(0).get("RNC_colab_abertura"));
}

 

Download de exemplo ejemplo de Formulário Formulario Combobox e y Dataset: form.html.

 

DataService

É um serviço de dados Es un servicio de datos que permite o acesso el acceso de aplicações de terceiros através do aplicaciones de terceros a través del Fluig. Este serviço de dados suporta dois servicio de datos soporta dos tipos de conexãoconexión, são elesestos son: AppServer do del Progress® e y Web Services.

Os serviços de dados são cadastrados e configurados a partir da função Visualização de Serviços do Los servicios de datos se registran y configuran a partir de la función Visualización de Servicios del Fluig Studio.

Para mais informações sobre o cadastro dos serviços más información sobre el registro de los servicios, consulte: Integração Com Aplicativos Integración con Aplicaciones Externos. E para informações de utilização dos serviços nos eventos consulte: Desenvolvimento Y para información sobre el uso de los productos en los eventos, consulte:; Personalización de Workflow.


Pai Filho

Padre Hijo

A La técnica Pai X Filho foi modificada e agora a posição da tag tablename é feita dentro da Padre X Hijo ha sido modificada y ahora la posición del tag tablename se realiza dentro del tag "table" do en el código html.

No novo modelo implementado agora o parser do fichário aplicará as mudanças do pai filho da seguinte formaEn el nuevo modelo implementado ahora el procesador del fichero aplicará los cambios de padre hijo de la siguiente manera:

<table tablename="testeprueba"> - A propriedade La propriedad tablename determina que Agora abaixo dessa tabela será implementado um sistema de pai filho dentro da definição de formulário. A tag <table> terá seus parâmetros varridos na busca de outros parâmetros relacionados à técnica que serão explicados mais adiante nesse texto. Será criada uma outra <table> ao redor da tabela principal que conterá um  botão que permite adicionar novos filhos. Isso não ocorrerá apenas em casos em que a propriedade noaddbutton também seja informada em conjunto com  a propriedade tablename.                                                                                                    

<TR> (primeiro abaixo do table) - A primeira tag de <TR> encontrada dentro da tabela é visualizada como uma tag que conterá os labels da tabela pai filho a esta tag será adicionada uma coluna <TD> contendo o ícone e a função de eliminar filhos existentes em tela. Está nova coluna será a primeira coluna a esquerda da tabela.

<TR> (Segundo abaixo do table) - A técnica pai filho irá ocultar a linha <TR> original e transforma lá no seu “template mestre” para criação dos filhos daquela tabela. Cada vez que o botão “novo” for acionado todo o conjunto de campos existentes dentro desse segundo <TR> será replicado em tela com os dados iniciais definidos para estes campos.

</table>  - Fim do escopo da técnica.

 

A técnica também suporta novos atributos que podem ser passados eu usados para customizar a técnica pai e filho. São elas:

ahora abajo de esa tabla se implementará un sistema de padre hijo dentro de la definición de formulario. La etiqueta < table > tendrá sus barridos en la búsqueda de otros parámetros relacionados a la técnica que se explicarán más adelante en este texto. Se creará una otra <table> alrededor de la tabla principal que contendrá un botón que permite agregar nuevos hijos. Esto no ocurrirá apenas en los casos en que la propiedad noaddbutton también se ha informado en conjunto con la propiedad tablename.   

<TR> (primero abajo del table) - El primer tag de <TR> encontrada dentro de la tabla se visualiza como un tag que contendrá los labels de la tabla padre hijo a esta tag se agregará una columna <TD> conteniendo el ícono y la función de eliminar hijos existentes en ventana. Esta nueva columna será la primera columna a la izquierda de la tabla.

<TR>  (Segundo abajo del table) - La técnica padre hijo ocultará el renglón <TR> original, y transforma en su “template mestre” para crear hijos de aquellos tabla. Cada vez que se activa el botón “nuevo” todo el conjunto de espacios existentes dentro de este segundo <TR> se replicará en la ventana con los datos iniciales definidos para estos espacios.

</table>  - Fin del objetivo de la técnica.

 

La técnica también soporta nuevos atributos que se pueden pasar y utilizar para personalizar la técnica padre e hijo. Son ellas:

noaddbutton - Remueve el botón “agregar” de la ventana en el momento de la edición del formulario. Esto permite al desarrollador elegir donde colocará la función que creará los hijos en ventana pudiendo amarrar la llamada de la función en un link texto o una figura u otro objeto del noaddbutton - Remove o botão “adicionar” da tela no momento da edição do formulário. Isso permite ao desenvolvedor escolher aonde ele vai colocar a função  que criará os filhos em tela podendo amarrar a chamada da função em um link texto ou uma figura ou outro objeto do html.

Bloco de código
languagehtml/xml
<table tablename="teste" noaddbutton=true>


nodeletebutton - Remove o botão “lixeira” da tela no momento da edição da ficha. Isso permite ao desenvolvedor impedir a eliminação dos registros ou definir outra forma de executar a função que removerá os filhos da tabelaRemueve el botón “papelera” de la ventana en el momento de la edición de la ficha. Esto permite al desarrollador impedir la eliminación de los registros o definir otra forma de ejecutar la función que removerá los hijos de la tabla.

Bloco de código
languagehtml/xml
 <table tablename="teste" nodeletebutton=true>

...

addbuttonlabel - Determina que texto será posto no botão de adicionar filhos da técnica. Caso não seja informado o botão virá com o texto padrão (novo).                                    colocado en el botón de agregar hijos de la técnica. En caso que no se indique el botón vendrá con el texto patrón (nuevo) 

Bloco de código
languagehtml/xml
 <table tablename="teste" addbuttonlabel="Adicionar novo ingrediente">

...

addbuttonclass - Permite definir qual classe que clases css será utilizada pelo botão. Essa classe css deverá estar disponível no documento html do ficháriopor el botón. Esa clase css deberá estar disponible en el documento html del fichero.

Bloco de código
languagehtml/xml
 <table tablename="teste" addbuttonclass="wdkbuttonClass">

...

deleteicon - Permite determinar qual será a imagem que imagen funcionará como ícone da eliminação de filhos em tela. Essa imagem deverá ser um anexo da definição de formulário e deverá ser informada na classe como uma imagem qualquer utilizada como anexo na definição de formulárioicono de la eliminación de hijos en ventana. Esta imagen deberá ser un anexo de la definición de formulario, y se deberá informar en la clase como cualquier imagen utilizada como anexo en la definición de formulario.

Bloco de código
languagehtml/xml
<table tablename="teste" deleteicon="teste.jpg">       


customFnDelete - Permite a customização da função que é chamada ao clicar no botão que elimina um filho da tabela. A função customizada deverá estar disponível no documento html da definição de formulário e, obrigatoriamente, chamar a função padrãola personalización de la función que aparece al presionar clic que elimina un hijo de la table. La función personalizada deberá estar disponible en el documento html de la definición de formulario y, obligatoriamente, llamar la función patrón.

Bloco de código
languagehtml/xml
<table tablename="testeprueba" customFnDelete="fnCustomDelete(this)">
    function fnCustomDelete(oElement){

    //CustomizaçãoPersonalización
	alert ("Eliminando¡Eliminando filhohijo!");

    // ChamadaLlamada ala funcaofunción padraopatrón, NAONO RETIRAR.
    fnWdkRemoveChild(oElement);

    //CustomizaçãoPersonalización
    alert ("Filho¡Hijo eliminado!");
}

 É

possível usar a combinação de um ou mais atributos na mesma tabela pai filho. Contudo se a propriedade noaddbutton for utilizada os valores das propriedades addbuttonlabel e addbuttonclass serão ignoradas. Não será gerada uma mensagem de erro na publicação ou versionamento dessa definição de formulário, porém no momento da edição do formulário a mesma não irá apresentar o botão padrão que permite cadastrar novos filhos na definição de formulário. A propriedade deleteicon não é afetada pela propriedade noaddbutton. Exemplo de uso combinado de parâmetrosEs posible utilizar la combinación de uno o más atributos en la misma tabla padre hijo. No obstante si se utiliza la propiedad noaddbutton los valores de las propiedades addbuttonlabel y addbuttonclass serán ignorados. No se generará un mensaje de error en la publicación o apersonamiento de esta definición de formulario, sin embargo en el momento de la edición del formulario la misma no presentará el botón patrón que permite registrar nuevos hijos en la definición de formulario. La propiedad deleteicon no se afecta por la propiedad noaddbutton. Ejemplo de uso combinado de parámetros:

Bloco de código
languagehtml/xml
<table tablename="teste" addbuttonlabel="Adicionar novo ingrediente" addbuttonclass="wdkbuttonClass" deleteicon="teste.jpg">
Nota
A
  • La técnica 2.0
do Pai filho não é retro-compatível com a primeira implementação. Definição de formulários que foram feitas com a primeira técnica deverão ser retrabalhados para utilizar este nova técnica.
  • Padre hijo no es compatible con la primera implementación. Definición de formularios que se han realizado con la primera técnica se deberán volver a trabajar para utilizar esta nueva técnica.
  • La técnica 2.0 del padre Hijo no acepta todos los componentes html, pero acepta los principales, siendo los homologados por el producto los

A técnica 2.0 do pai Filho não aceita todos os componentes html, mas aceita os principais, sendo os homologados pelo produto os
  • tipos:  text, radio button, checkbox, select, select multiple, hidden, textarea, image e button. Download de

exemplo
  • ejemplo de

Formulário Pai
  • Formulario Padre x

Filho
  • Campos de uma tabela pai e filho não estão disponíveis para serem utilizados como descrição das fichas na configuração do formulário.

  • ...

    • Espacios de una tabla padre e hijo no estarán disponibles para utilizar como descripción de las fichas en la configuración del formulario.

     

    Padre Hijo Radio Button

    Para utilizar campos los espacios radio button, além da definição padrão do además de la definición patrón del componente html, é necessário que seja utilizado o es necesario que se utilice el atributo ‘value’ para os dados serem salvos corretamenteque los datos se guarden correctamente.


    Bloco de código
    languagehtml/xml
    <table border="1" tablename="testeprueba" addbuttonlabel="AdicionarAgregar FilhoHijo"  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="nomefilhonombrehijo"></td>
    		<td><input type="text" name="idadefilhoedadhijo"></td>
     		<td><input type="radio" name="nameradiofilhonameradiohijo" id = "idsimfilhoidsimhijo" value="ant_yes"></td>
    	 	<td><input type="radio" name="nameradiofilhonameradiohijo" id = "idnaofilhoidnaohijo" value="ant_no"></td>
    	</tr>
    </table>

     

    Eventos de

    Formulário Pai Filho

    Formulario Padre Hijo

    Para facilitar

    a manipulação dos dados em uma customização de formulário que faz uso da técnica Pai Filho, foram disponibilizados os métodos listados a seguir. Ambos são chamados a partir do objeto form que é passado como parâmetro nas funções de customização de formulários

    la manipular de los datos en una personalización de formularios que utilizan la técnica Padre Hijo, están disponibles los siguientes métodos: Ambos son llamados a partir del objeto  form que se pasa como parámetro en las funciones de personalización de formularios.

     

    getChildrenFromTable

    Esse

    Este evento

    retorna um

    devuelve un mapa

    com todos os campos filhos de um Pai Filho a partir do seu tablename.

    con todos espacios hijos de un Padre Hijo a partir de su  form

     

    getChildrenIndexes

    Esse

    Este evento

    retorna os índices dos

    devuelve los índices de los registros (

    linhas) contidos em um Pai Filho a partir do seu 

    renglones) contenidos en un Padre Hijo a partir de su tablename.

     

    Exemplo

    Ejemplo:

     

    Bloco de código
    themeEclipse
    languagejava
    function validateForm(form){
        var indexes = form.getChildrenIndexes("tabledetailname");
        var total = 0;
        for (var i = 0; i < indexes.length; i++) {
            var fieldValue = parseInt(form.getValue("valor___" + indexes[i]));
            if (isNaN(fieldValue)){
                fieldValue = 0;
            } 
            total = total + fieldValue;
            log.info(total);
        }
        log.info(total);
        if (total < 100) {
            throw "Valor Total da requisição não pode ser inferior a 100";
        }
    }
    

     

     

    Formulários

    Formularios para dispositivos

    móveis

    Com a inclusão de definição de formulários que suportem a visualização em dispositivos móveis, é possível movimentar solicitações Workflow através destes dispositivos e realizar o preenchimento das informações da definição de formulários HTML, garantindo maior mobilidade e agilidade para realizar movimentações de solicitações workflow.

    Para incluir um novo fichário com suporte de dispositivos móveis, realize o procedimento padrão para exportação da definição de formulário e selecione os campos que irão compor o formulário mobile na tela antes da conclusão da exportação. Após a exportação será incluindo também outro arquivo HTML e marcando-o como "mobile" na pasta forms do projeto Fluig. 

    ...

    móviles

    Incluyendo la definición de formularios que soporten la visualización en dispositivos móviles, es posible ejecutar solicitudes Workflow a través de estos dispositivos y completar la información de la definición de formularios HTML, garantizando mayor movilidad y agilidad para realizar ejecuciones de solicitudes workflow.

    Para incluir un nuevo fichero con soporte de dispositivos móviles, realice el procedimiento patrón para exportar la definición de formulario y seleccione los espacios que estarán en el formulario mobile en la ventana antes que termine la exportación. Después de realizar la exportación se incluirá, también, otro archivo HTML y señalizado como "mobile" en la carpeta forms del proyecto Fluig. 

    Vea la imagen a continuación en la ventana de selección mobile en la exportación de una definición de formulario.

    Figura 15 - Definição Definición de formulário formulario mobile.

     Após

    exportado o formulário deve ficar conforme a seguirDespués de realizar la exportación el formulario debe quedar según se indica a continuación:

    Figura 16 - Resultado formulário formulario mobile.

     

    ...

    Padre Hijo para dispositivos

    ...

    móviles

    Os campos que empregam a Los espacios que emplean la técnica de pai e filho não são inseridos no formulário gerado automaticamente para dispositivos móveis pelo Fluig. Porem o produto lhe permite desenvolver um formulário customizado para dispositivos móveis consultando estes campos.padre e hijo no se añadirán en el formulario generado automáticamente para dispositivos móviles por el Fluig. Sin embargo el producto le permite desarrollar un formulario personalizado para dispositivos móviles consultando estos espacios.

    Nota
    La edición de espacios padre e hijo a través de dispositivos móviles no es posible, aún en formularios personalizados. Solamente
    Nota
    A edição de campos pai e filho através de dispositivos mobile não é possível, mesmo em formulários customizados. Somente
    consulta.

     

    A consulta aos campos pai e filho em dispositivos móveis é realizada por meio de funções javaScript, disponíveis dentro do objeto masterList no momento da exibição do formulário. São elas:

    getValue

    La consulta a los espacios padre e hijo en dispositivos móviles se realiza a través de funciones javaScript, disponibles dentro del objeto masterList  al momento de exhibir el formulario. Son ellas:

    getValue

    Devuelve un string con el valor de un espacio padre e hijo, recibiendo como parámetros el número de secuencia del hijo y el nombre del espacioRetorna uma string com o valor de um campo pai e filho, recebendo como parâmetros o numero de sequencia do filho e o nome do campo.

    Bloco de código
    languagejavascript
    masterList.getValue(sequence,field);


    getValues

    Retorna um Devuelve un objeto com con todos os valores dos campos pai e filho, agrupados pelo numero de sequencia. Este método não possui parâmetroslos valores de los espacios padre e hijo, agrupados por el número de secuencia. Este método no posee parámetros.

    Bloco de código
    languagejavascript
    masterList.getValues();

     

    getValuesBySequence

    Retorna um Devuelve un objeto com con todos os valores do campos de uma determinada sequencia. Recebe como paramento o numero da sequencialos valores de los espacios de una determinada secuencia. Recibe como parámetro el número de la secuencia.

    Bloco de código
    languagejavascript
    masterList.getValuesBySequence(sequence);


    getValuesByField

    Retorna Devuelve todas as sequencias e secuencias y valores de um un determinado campo. Recebe como parâmetro o nome do campoRecibe como parámetros el nombre del espacio.

    Bloco de código
    masterList.getValuesByField(field);

     

    ExemplosEjemplosFormulários Pai Filho Formularios Padre Hijo + Eventos

    Tradução

    Traducción de

    formulários

    formularios

    Para traduzir formulários é necessário utilizar a função traducir los formularios se debe utilizar la función i18n.translate(“literal_de_dala_tradução”) nos pontos do arquivo HTML que devem ser traduzidos, conforme exemplo a seguirtraducción”) en los puntos del archivo HTML que se deben traducir, según el ejemplo a continuación:

    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
    Las literales y sus respectivos valores se informan en archivos de propiedades con la extensión .properties para cada
    um dos idiomas desejados. Os idiomas suportados para a tradução são os mesmos suportados pelo Fluig:
    Português
    uno de los idiomas deseados. Los idiomas soportados para la traducción son los mismos soportados por le Fluig.
    • Portugués (pt_BR);
    Inglês
    • Inglés (en_US);
    Espanhol
    • Español (es).

     Os

    arquivos contendo as literais têm a seguinte Los archivos que contienen las literales tienen la siguiente nomenclatura:

    • PortuguêsPortugués: nome nombre_dodel_formulario_pt_BR.properties;
    • InglêsInglés: nome nombre_dodel_formulario_en_US.properties;
    • EspanholEspañolnomenombre_dodel_formulario_es.properties.

     Os

    arquivos de propriedades são criados de acordo com os passos apresentados a seguirLos archivos de propiedades se crearán según los pasos presentados a continuación:

    Deck of Cards
    effectDuration0.5
    idsamples
    historyfalse
    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, clicar com o botão direito e acessar a opção Para generar los archivos de propiedades en la visión Explorador de Paquetes, se debe ingresar el archivo HTML del formulario a traducir, presionar clic con el botón derecho e ingresar a la opción Externalizar Strings.


    Figura 1 -

    Menu

    Menú Contextual Externalizar Strings.

     

    Card
    id2
    labelPasso 2

     

    • Os arquivos contendo as literais são criados na pasta do formulárioLos archivos que contienen las literales son creados en la carpeta del formulario.


    Figura 2 -

    Arquivos Properties na Pasta do Formulário

    Archivos Properties en la Carpeta del Formulario.


    Card
    id3
    labelPasso 3

     

    • Informe os valores correspondentes às literais para o los valores correspondientes a las literales para el idioma de cada arquivoarchivo.


    Figura 3 -

    Edição

    Edición de

    um Arquivo

    un Archivo Properties.


    Ao Al exportar um formulário un formulario para o el Fluig, os arquivos de propriedades contendo as literais são los archivos de propiedades conteniendo las literales son publicados como sus anexos dele.
    O formulário é apresentado no El formulario se presenta en el idioma que está configurado para o usuário correnteel usuario corriente.

     

     

    Third Party Trademarks

    Adobe, Flash, Flex, Flex Builder, PostScript and Reader are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries.

    Apache is a trademark of The Apache Software Foundation.

    Apple is a trademark of Apple Inc., registered in the U.S. and other countries.

    Firefox and Mozilla are registered trademarks of the Mozilla Foundation.

    Google, Android and Google Chrome are trademarks of the Google Inc.

    IOS is a trademark or registered trademark of Cisco in the U.S. and other countries and is used under license.

    JavaScript is a trademark of Oracle Corporation.

    Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries.

    Microsoft, Active Directory, Excel, Internet Explorer, Outlook, PowerPoint, SQL Server, Windows and Windows Vista are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

    MySQL is a trademark of Oracle Corporation and/or its affiliates.

    Oracle, Java and OpenOffice.org are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

    Progress and OpenEdge are trademarks or registered trademarks of Progress Software Corporation or one of its subsidiaries or affiliates in the U.S. and other countries.

    Red Hat and JBoss are registered trademarks of Red Hat, Inc. in the United States and other countries.

    Any other third party trademarks are the property of their respective owners.