Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

Versão 1 Próxima »

Índice

Formulário Mobile

No Fluig, é possível movimentar solicitações workflow, a partir de aplicativos móveis. Devido a isso, ao salvar um formulários no Fluig, automaticamente o formulários mobile é gerado, de acordo com o mapeamento dos campos do formulários do processo.

Apesar do Fluig dispor da geração automática, existem diversas particularidades para o desenvolvimento e customização de formulário Mobile, estas serão tradadas no decorrer deste guia.

 

Recomendações para Processos com Formulário Mobile

 

  1. Formulário Responsivo: Hoje no mercado existem variados tamanhos de telas e resoluções, por isso qualquer formulário desenvolvida para Mobile deve ser responsivo, ou seja, deve se ajustar a qualquer tamanho de tela.
     

  2. Estética: A aparência visual e design do html devem ser atraentes para os usuários, conseguimos isso através de CSS ou jQueryMobile que será explicado nas próximas sessões.
      

  3. Usabilidade: O formulário deve ser fácil de usar, contendo apenas o campos importantes para tarefas ou processo.
     

  4. Área de clique: Os elementos do HTML devem estar bem posicionados de forma que facilite a área de clique, pois hoje existem dispositivos que as telas são muito pequenas.Segue um exemplo:

     


     

  5. Posicionamento das ações: As ações mais importantes devem estar posicionadas onde o usuário consegue alcançar facilmente, conforme a figura:


     

  6. Customizações: As customizações devem ser feitas dentro dos eventos do processo ou de definições de formulário na Web, todos os eventos que são aplicados nos formulários Web também são aplicados nos formulários Mobile. Para mais informações acesse o guia Desenvolvimento de Formulários.

  7. Arquivos anexos: Os arquivos anexos do formulário Web não são carregados para o formulário Mobile, por isso o CSS e as funções Javascript's devem ser implementadas dentro do HTML Mobile.

  8. Acesso a serviços internos e externos: Qualquer acesso a webservices ou outros serviços interno ou externo deve ser feito via javascript. Recomendamos o uso de jQuery Soap para Webservices.

  9. Nem todas informações precisam estar no Formulário Mobile: O grande limitador do Mobile é o tamanho de tela, por isso mapeie os campos que são mais importantes para que tenham prioridade no formulário. Existem campos que são informativos e não tem grande utilidade no processo ou tarefas, estes não precisam ser inclusos no formulário Mobile.

  10. Tipos: Definições de Formulário Mobile suporta os tipos:
    1. text
    2. textArea
    3. radio
    4. select
    5. combobox
    6. checkbox.

Benefícios

Porque devo usar o Formulário Mobile?

  • Permite iniciar/movimentar solicitações de qualquer dispositivo móvel, independente de sua localização geográfica.
  • Acesso rápido as informações, mostrando apenas as informações mais relevantes.
  • Permite a continuidade do processo, mesmo fora do ambiente empresarial.
  • Através da funcionalidade "Processo Off-line" consigo preencher informações mesmo sem acesso a internet, para futura sincronização.


Criando um Formulário Mobile

No Fluig é possível criar definições de formulários de diferentes maneiras, utilizando o Fluig Studio, através da modelagem de processos workflow ou através de upload de  formulário na navegação de documentos.

Acompanhe a seguir, movimentando-se pelas abas abaixo, as formas de criação de formulários:

 


    Fluig Studio

    Para incluir um novo formulário com suporte a dispositivos móveis, realize o procedimento padrão para exportaçã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á incluído outro arquivo HTML marcado como "mobile" na pasta forms do projeto Fluig

     

    Veja na imagem a seguir a tela de seleção mobile na exportação de um formulário:

    Figura 15 - Formulário mobile.

     

    Após a exportação, o formulário deve ficar conforme imagem a seguir:

     

    Nota

    O Fluig identificada o formulário Mobile pelo nome, este deve ter o mesmo nome do formulário Web acrescido da palavra "_ecmMobile".

    Exemplo: Criado o formulário web "compras.html", o formulário Mobile, obrigatoriamente, deve ser nomeada como: "compras_ecmmobile.html"


    Configuração de Formulário Mobile em Processos

    É possível permitir a criação do Formulário Mobile também através do Gerador de Formulário, conforme passo a seguir:

     

    Passo 1: Criar ou editar um processo existente e acionar o item Formulário.

     

    Passo 2: Selecionar a pasta destino onde esse formulário será publicada, também atribua um título e descrição. Após isso, clique em Criar Formulário.

     

    Passo 3:  Inclua os campos e em cada um deles, selecione se este será também adicionado ao formulário para dispositivos móveis, clicando na opção Formulário Mobile?.

     

    Informação

    Nem todos os campos mapeados no formulário do processo, podem ser mapeados para o formulário para dispositivos móveis. Os campos que podem ser mapeados exibem a opção "Formulário Mobile?".




    Upload via Navegação de Documentos

    No upload via navegação de documentos é feito como uma publicação padrão de formulário, onde o formulário web deve ter um nome definido e o Formulário Mobile deve ser acrescido com o termo _ecmmobile

     

    Nota

    O Fluig identificada o formulário Mobile pelo nome, o formulário Mobile deve ter o mesmo nome do formulário Web acrescido da palavra "_ecmMobile".

    Exemplo: Criado o formulário web "compras.html", o formulário Mobile, obrigatoriamente, deve ser nomeado como: "compras_ecmmobile.html"

    Atenção

    As Definições de Formulários geradas pelos métodos de criação acima elencados, precisam ser editados caso necessite de alguma customização especial, eles são gerados automaticamente contendo os itens básicos para seu funcionamento.

     

    Customizando de Formulário Mobile

    Com a inclusão de formulários que suportem a visualização em dispositivos móveis, é possível movimentar solicitações Workflow e realizar o preenchimento das informações de formulários com maior mobilidade e agilidade.

    Como já vimos, o Formulário Mobile não carrega arquivos anexos, logo, toda customização deve ser feita dentro do HTML, este possui uma série de particularidades que serão tratadas a seguir:

    CSS

    Ao customizar um Formulário Mobile, o CSS utilizado para parte Web provavelmente não se aplica ao para o arquivo do dispositivo móvel, por isso é recomendado que o Formulário Mobile use um CSS próprio que mantenha o formulário responsivo.

    O CSS deve ser inserido dentro da head no arquivo .html Mobile e deve ser utilizada a tag:

    <style type="text/css"> Insira aqui o CSS </style>.

     

    Acompanhe a seguir, movimentando-se pelas abas abaixo, alguns exemplos de componentes CSS que podem ser aplicados no formulários Mobile:

     


      Body

      body {
      font-family: Verdana, Geneva, Tahoma, sans-serif;
      background-color: #D1D3D4; /* Background color */
      color: #58595B; /* Foreground color used for text */
      font-family: Helvetica;
      font-size: 14px;
      margin: 0; /* Amount of negative space around the outside of the body */
      padding: 0; /* Amount of negative space around the inside of the body */ 
      min-width:300px;
      }


      Headings

      h1 {
      margin: 0;
      padding: 0;
      background-color: #D1D3D4;
      color: #FFF;
      display: block;
      font-size: 18px;
      font-weight: bold;
      padding: 10px 0;
      text-align: center;
      text-decoration: none;
      }


      List

      ul {
      list-style: none;
      margin: 10px;
      padding: 0;
      }
      ul li {
      background-color: #FFFFFF;
      border: 1px solid #999999;
      color: #58595B;
      display: block;
      font-size: 14px;
      font-weight: bold;
      margin-bottom: -1px;
      padding: 12px 10px;
      text-decoration: none;
      }
      ul li:first-child {
      -webkit-border-top-left-radius: 8px;
      -webkit-border-top-right-radius: 8px;
       
      }
      ul li:last-child {
      -webkit-border-bottom-left-radius: 8px;
      -webkit-border-bottom-right-radius: 8px;
       position:relative;
      }


      Label

      .mylabel {
      width: 28%;
       overflow: hidden;
      text-overflow: ellipsis;
      -o-text-overflow: ellipsis;
      white-space: nowrap;
      display:inline-block;
       position:relative;
       float:left;
       line-height:32px;
      }


      Input Text

      input[type=text] {
      width: 70%; 
       font-family: Verdana, Geneva, Tahoma, sans-serif;
      font-size: 14px;
      background-color: #E8E8E8;
       position:relative;
       float:right;
      }


      TextArea

      textarea {
      width: 70%; 
       font-family: Verdana, Geneva, Tahoma, sans-serif;
      font-size: 14px;
      background-color: #E8E8E8;
       position:relative;
       float:right;
      }


      Select

      select {
      width: 70%; 
       font-family: Verdana, Geneva, Tahoma, sans-serif;
      font-size: 14px;
      background-color: #E8E8E8;
       position:relative;
       float:right;
      }

       

      Você deve tratar no CSS todos os componentes que serão utilizados no seu HTML Mobile para que todos tenham o mesmo padrão, seu HTML Mobile com CSS deve ter essa estrutura:

      <html >
      <head>
      <title>Formulário de Compras </title>
      <style type="text/css">
       <!--Aqui você deve incluir a estrutura do CSS de cada componente-->
      </style>
      </head>
      <body>
      </ body >
      </html>

      Atenção

      Essa é a estrutura básica, dentro de cada tag deve ter elementos e lógicas correspondentes a elas.

       

      jQuery Mobile

      O jQuery Mobile é um framework de interface para dispositivos móveis que visa dar um layout responsivo para as definições de formulários. Ele facilita muito no desenvolvimento, pois você não precisa ficar criando um CSS próprio para cada elemento e pode ser utilizado no Fluig Mobile. É possível acompanhar exemplos no link: http://demos.jquerymobile.com/1.4.2/.

       

      Este pode ser incorporado no HMTL Mobile de forma simples:

      <html >
      <head>
      <script type="text/javascript" src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
      </head>
      <body>
      </ body >
      </html>

       

      JavaScript

      Assim como o CSS, o javascript também deve estar dentro do HTML Mobile, logo toda lógica que na web, normalmente, fica em arquivos .js, deve ser transferido para o Formulário Mobile.

      Para manter uma organização dentro do HTML, recomendamos deixar as lógicas no final no arquivo:


      <html>
      <head>
      </head>
      <body>
      </body>
      </html>
      <script language="javascript">
       /* Aqui você deve incluir a lógica javascript */
      </script>

      Atenção

      Para testar o Formulário Mobile, abra o arquivo html Mobile em um navegador no desktop. Se não houverem inconsistências, o formulário provavelmente abrirá corretamente também no Fluig Mobile.

       

      Serviços

      Para utilizar serviços internos ou externos ao Fluig é necessário instanciar, executar e tratar o retorno do serviço via javascript. Para webservices, recomendamos o uso de jQuery Soap.

      Segue algumas dicas:

      • O uso de serviços internos do Fluig, como por exemplo Dataset, devem ser feitos preferencialmente nas eventos de customização de Formulário e Processos, desta maneira o que será customizado para a web, também será adotado para mobile, evitando a replicação de código.
      • Técnicas especiais para formulário web, como por exemplo a chamadas de dataset dentro do formulário, não são aplicadas no Mobile. 

       

      Tradução de Formulários

      A tradução de Formulário Mobile deve ser feita seguindo o guia de Tradução de Formulários . Porém o diferencial, é que será preciso incluir três novos arquivos com as literais seguindo a nomenclatura abaixo:

      • Português: nome_do_formulario_mobile_pt_BR.properties;
      • Inglês: nome_do_formulario_mobile_en_US.properties;
      • Espanhol: nome_do_formulario_mobile_es.properties.
      Exemplo: Se o Formulário chama-se compras_ecmmobile, então os nomes dos arquivos .properties serão:
      • compras_ecmmobile_pt_BR.properties;
      • compras_ecmmobile_en_US.properties;
      • compras_ecmmobile_es.properties.

       

      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 customizada para dispositivos móveis consultando estes campos.

      A edição de campos pai e filho através de dispositivos móveis não é possível, mesmo em formulários customizadas. Estes campos são disponíveis apenas para 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

      Retorna uma string com o valor de um campo pai e filho, recebendo como parâmetros o número de sequência do filho e o nome do campo.

      masterList.getValue(sequence,field);


      getValues

      Retorna um objeto com todos os valores dos campos pai e filho, agrupados pelo número de sequência. Este método não possui parâmetros.

      masterList.getValues();

       

      getValuesBySequence

      Retorna um objeto com todos os valores do campos de uma determinada sequencia. Recebe como paramento o numero da sequencia.

      masterList.getValuesBySequence(sequence);


      getValuesByField

      Retorna todas as sequências e valores de um determinado campo. Recebe como parâmetro o nome do campo.

      masterList.getValuesByField(field);

      Insira anexos da solicitação diretamente do Formulário

      Existe uma forma bem simples para salvar anexos upload através de um botão no formulário. Para isso é necessário inserir no evento onclink do button o método showCamera:

      <input type="button" value="Insira Foto" onclick="showCamera(nome_do_anexo);"/>
       
      <script language="javascript">
                
                function showCamera(parameter) {
                    JSInterface.showCamera(parameter);
                }
      </script>

      O parâmetro nome_do_anexo é uma String e corresponde ao nome do anexo que será salvo na listagem de anexos daquela solicitação.

       

      Como identificar que estou usando o Mobile nos eventos?

      Com esse recurso é possível aplicar uma customização ou/e restrição somente no Formulário Mobile, independente da Web. Assim posso definir que um processo ou atividade vai receber um valor diferenciado ou que determinada atividade não pode ser executada pelo Mobile via customização.

       

      Existe duas formas de fazer tal customização:

        • Eventos do Formulário
          Todos os eventos que recebem no método o form podem fazer uma customização exclusiva para o Formulário Mobile, são os eventos:
          • AfterProcessing
          • AfterSaveNew
          • BeforeProcessing
          • DisplayFields
          • EnableFields
          • InputFields
          • ValidadeForm

          Para utilizar o evento é necessário fazer a seguinte chamada: form.getMobile(), onde retornará um booleano indicando se é um formulário mobile ou não. Exemplo:

          function displayFields(form, customHTML) {
             if ( form.getMobile() != null && form.getMobile()) {
               form.setValue('mtr_usuario', new java.lang.Integer(123456));
             }
          }



        • Eventos do Processo
          Nos eventos de processo, a propriedade WKMobile identifica se a ação foi realizada pelo dispositivo móvel. Ela pode ser utilizada nos eventos do processo conforme exemplo:

          function beforeStateEntry(sequenceId){
          	var isMobile = getValue("WKMobile");
          	if (isMobile!=null && isMobile==true){ 
          		throw "Esse processo não pode ser executado pelo mobile."; 
          	}
          }

      Consumo de Datasets via xmlRPC

      Agora o acesso de datasets pelo Mobile está muito mais fácil, com o xmlPRC é possível trocar de informações com Fluig via AJAX.
      Para utiliza-lo, basta acionar as seguintes importações no HTML do formulário:

       

       <script src="http://URL_DO_SERVIDOR/webdesk/vcXMLRPC-mobile.js"></script>
      <script src="http://URL_DO_SERVIDOR/portal/resources/js/jquery/jquery-1.7.2.js"></script>

       

      O acesso aos Datasets é igual à Web, a seguir são apresentados dois exemplos:

       

      1) Built-in Datasets: este tipo de Dataset permite navegar em dados das entidades do próprio Fluig, como usuários, grupos, processos ou tarefas por exemplo. Esses datasets são pré-definidos no produto e não podem ser alterados pelo usuário;

       

      var filter = new Object();
      filter["colleaguePK.colleagueId"] = "john"; 
      var colleagues = getDatasetValues("colleague", filter);
      if(colleagues.length > 0){       
      	document.getElementById("colleagueName").value = colleagues[0].colleagueName;
      	document.getElementById("login").value = colleagues[0].login;
      }else{
      	alert("Nenhum Usuário Encontrado");
      }

       

      2) CardIndex Datasets: este tipo de Dataset permite navegar nos dados existentes em formulários de uma determinada definição de formulário publicada no Fluig. Para que uma definição de formulário seja disponibilizada como Dataset, é necessário preencher o campo Nome Dataset na publicação da definição de formulário. O valor informado será utilizado para a busca do Dataset no Fluig;

       

      var c1 = DatasetFactory.createConstraint("cod_area", "2", "2", ConstraintType.MUST); 
      var constraints = new Array(c1);
      			
      var area = DatasetFactory.getDataset("areas", null, constraints, null);
      			
      if(area.values.length){
      	document.getElementById("cod_area").value = area.values[0].cod_area;
      	document.getElementById("area").value = area.values[0].area;
      }else{
      	alert("Area não encontrada") ;
      }

       

      Para baixar um exemplo de formulário utilizando xmlPRC clique aqui.

       

      Geologalização em formulário

      Para utilizar a Geolocalização em formulários é bem simples, basta incluir esse script no html:

       

      function getLocationUpdate(){
      	if(navigator.geolocation){
            // timeout at 60000 milliseconds (60 seconds)
            var options = {timeout:60000};
            geoLoc = navigator.geolocation;
            watchID = geoLoc.watchPosition(showLocation, 
                                           errorHandler,
                                           options);
      	}else{
      		alert("Sorry, esse dispositivo não suporta geolocalização!");
      	}
      }
       
      function showLocation(position) {
        var lat = position.coords.latitude;
        var longi = position.coords.longitude;
        document.getElementById("latitude").value = lat;
        document.getElementById("longitude").value = longi;
      }
      
      function errorHandler(err) {
        if(err.code == 1) {
          alert("Erro: Acesso negado!");
        }else if( err.code == 2) {
          alert("Error: Posição está indisponível!");
        }
      }

       

      Para baixar um exemplo de formulário com geolocalização clique aqui

      Versão minimas dos browsers suportados

      Cada uma das plataformas utiliza um browser diferente para a renderização dos formulários. Esta informação deve ser considerada durante o desenvolvimento para evitar problemas de compatibilidade com os arquivos JavaScript/CSS. A tabela abaixo apresenta a versão minima dos browsers de cada plataforma que deve ser considerada durante o desenvolvimento:

      Versão minima da plataformaVersão minima do browser
      Windows Phone 8Internet Explorer 10
      Android 4.0 (Ice Cream Sandwich)Webkit 534.30
      iOS 7Mobile Safari 9537.53

      Exemplo

      Faça o download dos arquivos exemplo aqui

      Abaixo segue um exemplo de formulário que foi mapeado para uso em dispositivos móveis:

       

      • Formulário Web

       

      • Formulário Mobile

       

      Nota

      Como podemos ver, o Formulário Web tem muitos campos e seu mapeamento para dispositivos móveis deve ser feito com muito cuidado.

      Os campos Dados da proposta foram mapeados para Mobile, notem que tem campos que não existem no Mobile, pois não se faz necessário neste contexto:

       

      Itens que estão em uma tabela podem ser transformados em um collapsible do jQueryMobile.

      Ao acionar o botão '+', o item é expandido:


      • Sem rótulos