Histórico da Página
Índice
Índice | ||||||
---|---|---|---|---|---|---|
|
Declaração <!DOCTYPE> HTML
Ao publicar uma definição de um formulário não é recomendada a utilização de declarações:setSelectedZoomItem
...
A utilização dessas pode impactar em algumas funcionalidades da definição de formulário ou do Workflow na utilização do navegador Microsoft® Internet Explorer ®.
FormController
O formController é o objeto que realiza a comunicação entre o formulário e a customização dos eventos. Esse objeto está disponível em cada um dos eventos de customização de
formulários através da variável form. A variável permite alterar os valores dos campos de um registro de formulário e também obter o estado de edição deles, por exemplo: se o
usuário está visualizando ou editando o registro de formulário. Veja a seguir os métodos disponíveis para a variável form:
Método | Descrição |
---|---|
long getCompanyId() | Retorna o ID da empresa |
int getDocumentId() | Retorna o ID do documento (registro de formulário) |
int getVersion() | Retorna a versão do documento (registro de formulário) |
int getCardIndex() | Retorna o ID do formulário |
String getValue(String fieldName) | Obtém o valor de um campo do formulário |
void setValue(String fieldName, String fieldValue) | Define o valor de um campo do formulário |
boolean getEnabled(String fieldName) | Verifica se um campo está habilitado |
void setEnabled(String fieldName, boolean enabled) | Define se um campo deve estar habilitado ou não |
String getFormMode() | Obtém o modo de edição do formulário, podendo retornar os seguintes valores: MOD: Formulário em edição VIEW: Visualização do formulário NONE: Não há comunicação com o formulário, por exemplo, ocorre no momento da validação dos campos do formulário onde este não está sendo apresentado. |
void setHidePrintLink(boolean hide) | Quando definido com o valor true, desabilita o botão de imprimir do formulário. |
boolean isHidePrintLink() | Verifica se o botão de imprimir está desabilitado. |
Map<String, String> getChildrenFromTable(String tableName) | Retorna um mapa contendo os nomes e valores dos campos filhos de uma tabela pai. |
void setHideDeleteButton(boolean hide) | Quando definido com o valor true, desabilita o botão de excluir registros filhos em um formulário com pai-filho. |
boolean isHideDeleteButton() | Verifica se a exclusão de registros filhos está desabilitada. |
boolean getMobile() | Verifica se o registro de formulário está sendo acessado através de um dispositivo mobile. |
Customização de Formulários
A customização de definição de formulários é realizada pela criação de scripts na linguagem JavaScript. O código de implementação de cada script é armazenado em banco de dados e dispensa o uso de quaisquer outros arquivos, como por exemplo, “plugin.p”.
...
A seguir serão detalhados os eventos disponíveis para a customização de uma definição de formulário no Fluig.
AfterProcessing
É o último evento a ser disparado para o fichário. O evento recebe como parâmetro uma referência ao formulário da definição de formulário.
...
No contexto deste evento a variável form pode ser usada somente para consulta aos campos da definição de formulário, seus valores e estado de apresentação.
AfterSaveNew
Esse evento é disparado após a criação de um novo formulário. O evento recebe como parâmetro uma referência ao formulário da definição de formulário.
...
A consulta aos campos do formulário é case insensitve. No exemplo acima, poderíamos obter o valor do campo usando rnc_colab_abertura.
BeforeProcessing
Esse evento é o primeiro a ser disparado. Ocorre antes de qualquer outro evento da definição de formulário. O evento recebe como parâmetro uma referência ao formulário da definição de formulário.
...
No contexto deste evento a variável form pode ser usada somente para consulta aos campos da definição de fromulário, seus valores e estado de apresentação.
DisplayFields
Esse evento é disparado no momento em que os objetos do formulário são apresentados. O evento recebe como parâmetro uma referência ao formulário da definição de formulário e a referência para saída de apresentação do formulário.
...
Bloco de código | ||
---|---|---|
| ||
if(form.getFormMode() != "VIEW") { customHTML.append("<script>"); customHTML.append("function MostraEscondeBtn_zoom()"); customHTML.append("{"); customHTML.append("document.getElementById(\'zoomUsuario\').className = \'show\';"); customHTML.append("document.getElementById(\'zoomModulo\').className = \'show\';"); customHTML.append("}"); customHTML.append("</script>"); } |
EnableFields
Esse evento é disparado no momento em que os objetos do formulário são habilitados, permitindo desabilitar alguns campos, caso haja a necessidade. O evento recebe como parâmetro uma referência ao formulário da definição de formulário.
...
Bloco de código | ||
---|---|---|
| ||
document.forms['nomeForm'].nomeCampo.setAttribute('readonly',true); |
InputFields
Esse evento é disparado no momento em que os dados do formulário são passados para a BO responsável por formulário do Fluig. O evento recebe como parâmetro uma referência ao formulário da definição de formulário. Exemplo:
Bloco de código | ||
---|---|---|
| ||
function inputFields(form){ } |
SetEnable
Esse evento pode ser executado em diferentes eventos das definições de formulário. Este evento não é implementado automaticamente na customização da definição de formulário.
...
Bloco de código | ||
---|---|---|
| ||
function setEnable() { log.info(“Teste de chamada de função”); } function displayFields(form, customHTML) { setEnable(); } |
ValidateForm
Esse evento é executado antes da gravação dos dados do formulário no banco de dados. O evento recebe como parâmetro uma referência ao formulário da definição de formulário. Em caso de erros de validação dos dados do formulário esse evento irá retornar uma mensagem de erro.
...
Bloco de código | ||
---|---|---|
| ||
function validateForm(form) { if (form.getValue('RNC_colab_abertura') == null){ throw "O colaborador de abertura não foi informado"; } } |
Controles visuais
Neste capítulo será demonstrado como interagir com alguns tipos de controles do formulário que possuem características especiais, como por exemplo, o preenchimento do conteúdo de um ComboBox através da utilização de Datasets.
...
O Fluig, por padrão realiza a importação da biblioteca JavaScript jQuery em todos os formulários, exceto nos casos onde o formulário já a realize. Nestes casos o Fluig identificará que o jQuery já esta definido e não realizará a importação novamente. Caso o formulário utilize outra biblioteca que possa entrar em conflito com o jQuery, será necessário definir no formulário a variável javascript fluigjQuery, com valor false, que o Fluig deixará de fazer tal importação, porem algumas outras funcionalidades como a mascara de campos do Fluig, também serão desabilitadas.
Máscara de Campos
Muitos campos em um formulário possuem uma formatação específica para o seu conteúdo, como datas, CEP, CPF entre outros.
...
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. |
ComboBox
Geralmente é necessário popular um ComboBox de um formulário com um determinado grupo de valores.
...
Bloco de código | ||
---|---|---|
| ||
<select> <option value="te te te">Teste</option> </select> |
Zoom
Permite a consulta de entidades e outros formulário criados no Fluig para seleção de dados pelo usuário.
...
Neste exemplo, o zoom irá retornar somente as fichas inativas.
Zoom Externo
Em situações aonde os dados dos elementos externos ao Fluig são muito volumosos é recomendada a construção de uma aplicação externa ao Fluig que fará o 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.
...
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.
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.
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. Consulte o cadastro de Datasets do Fluig para obter a relação completa dos Datasets disponíveis e seus respectivos campos.
...
Download de exemplo de Formulário Combobox e Dataset: form.html.
DataService
É um serviço de dados que permite o acesso de aplicações de terceiros através do Fluig. Este serviço de dados suporta dois tipos de conexão, são eles: AppServer do Progress® e Web Services.
...
Para mais informações sobre o cadastro dos serviços consulte: Integração Com Aplicativos Externos. E para informações de utilização dos serviços nos eventos consulte: Customização Desenvolvimento de Workflow.
Pai Filho
A técnica Pai X Filho foi modificada e agora a posição da tag tablename é feita dentro da tag "table" do código html.
...
Nota |
---|
|
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 | ||
---|---|---|
| ||
<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> |
Eventos de Formulário Pai Filho
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.
getChildrenFromTable
Esse evento retorna um mapa com todos os campos filhos de um Pai Filho a partir do seu tablename.
getChildrenIndexes
Esse evento retorna os índices dos registros (linhas) contidos em um Pai Filho a partir do seu tablename.
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
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 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.
...
Figura 16 - Resultado formulário mobile.
Pai Filho para dispositivos móveis
Os campos que empregam a 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.
...
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
Retorna 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 | ||
---|---|---|
| ||
masterList.getValue(sequence,field); |
getValues
Retorna um objeto com todos os valores dos campos pai e filho, agrupados pelo numero de sequencia. Este método não possui parâmetros.
Bloco de código | ||
---|---|---|
| ||
masterList.getValues(); |
getValuesBySequence
Retorna um objeto com todos os valores do campos de uma determinada sequencia. Recebe como paramento o numero da sequencia.
Bloco de código | ||
---|---|---|
| ||
masterList.getValuesBySequence(sequence); |
getValuesByField
Retorna todas as sequencias e valores de um determinado campo. Recebe como parâmetro o nome do campo.
...
Exemplos: Formulários Pai Filho + Eventos.
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:
...
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.
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.
...