Funções personalizadas no Adaptive Forms (Componentes principais)

Versão
Link do artigo
AEM as a Cloud Service
Clique aqui
AEM 6.5
Este artigo

Introdução

O AEM Forms 6.5 apresentou a capacidade de definir funções do JavaScript que podem ser usadas na definição de regras de negócios complexas usando o editor de regras. O AEM Forms fornece várias dessas funções personalizadas prontas para uso, mas você terá a necessidade de definir suas próprias funções personalizadas e usá-las em vários formulários.

As funções personalizadas estendem os recursos dos formulários facilitando a manipulação e o processamento dos dados inseridos para atender a requisitos especificados. Elas também permitem a alteração dinâmica do comportamento do formulário com base em critérios predefinidos.
No Adaptive Forms, você pode usar funções personalizadas no editor de regras de um Formulário adaptável para criar regras de validação específicas para campos de formulário.
Vamos entender o uso da função personalizada em que os usuários inserem o endereço de email e você deseja garantir que o endereço de email inserido siga um formato específico (ele contém um símbolo "@" e um nome de domínio). Crie uma função personalizada como "ValidateEmail" que assume o endereço de email como entrada e retorna true se for válido, caso contrário, retorna false.

function ValidateEmail(inputText)
{
    var email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
    if(inputText.value.match(email))
        {
            alert("Valid email address!");
            return true;
        }
    else
    {
        alert("Invalid email address!");
        return false;
    }
}

No exemplo acima, quando o usuário tenta enviar o formulário, a função personalizada "ValidateEmail" é invocada para verificar se o endereço de email inserido é válido.

Usos de funções personalizadas uses-of-custom-function

As vantagens de usar funções personalizadas no Adaptive Forms são:

  • Manipulação de dados: funções personalizadas manipulam e processam dados inseridos nos campos de formulários.
  • Validação de dados: as funções personalizadas permitem que você execute verificações personalizadas nas entradas do formulário e forneça mensagens de erro especificadas.
  • Comportamento dinâmico: as funções personalizadas permitem que você controle o comportamento dinâmico de seus formulários com base em condições específicas. Por exemplo, você pode mostrar/ocultar campos, modificar valores de campo ou ajustar a lógica do formulário dinamicamente.
  • Integração: você pode usar funções personalizadas para integrar-se a APIs ou serviços externos. Ele ajuda a buscar dados de fontes externas, enviar dados para endpoints Rest externos ou executar ações personalizadas com base em eventos externos.

Anotações JS suportadas

Certifique-se de que a função personalizada que você grava esteja acompanhada pelo jsdoc acima dela; caso contrário, você precisará de configuração e descrição personalizadas. Há várias maneiras de declarar uma função em JavaScript, e os comentários permitem que você acompanhe as funções. Para obter mais informações, consulte usejsdoc.org.

jsdoc marcas com suporte:

  • Particular
    Sintaxe: @private
    Uma função privada não está incluída como uma função personalizada.

  • Nome
    Sintaxe: @name funcName <Function Name>
    Alternativamente, o , é possível usar o @function funcName <Function Name> ou o @func funcName <Function Name>.
    funcName é o nome da função (nenhum espaço é permitido).
    <Function Name> é o nome para exibição da função.

  • Membro
    Sintaxe: @memberof namespace
    Anexa um namespace à função.

  • Parâmetro
    Sintaxe: @param {type} name <Parameter Description>
    Como alternativa, você pode usar: @argument {type} name <Parameter Description> ou @arg {type} name <Parameter Description>.
    Mostra os parâmetros usados pela função. Uma função pode ter várias tags de parâmetro, uma tag para cada parâmetro na ordem de ocorrência.
    {type} representa o tipo de parâmetro. Os tipos de parâmetros permitidos são:

    1. string
    2. número
    3. booleano
    4. escopo

    O escopo é usado para campos de referência de um Formulário adaptável. Quando um formulário usa carregamento lento, você pode usar scope para acessar seus campos. Você pode acessar campos quando eles forem carregados ou se estiverem marcados como globais.

    Todos os outros tipos de parâmetros são categorizados em um dos acima. Nenhum não é compatível. Selecione um dos tipos acima. Os tipos não diferenciam maiúsculas de minúsculas. Não são permitidos espaços no parâmetro name. <Parameter Descrption> <parameter> can have multiple words. </parameter>

  • Tipo de Retorno
    Sintaxe: @return {type}
    Como alternativa, você pode usar @returns {type}.
    Adiciona informações sobre a função, como seu objetivo.
    {type} representa o tipo de retorno da função. Os tipos de retorno permitidos são:

    1. string
    2. número
    3. booleano

    Todos os outros tipos de retorno são categorizados em um dos itens acima. Nenhum não é compatível. Selecione um dos tipos acima. Os tipos de retorno não diferenciam maiúsculas de minúsculas.

  • Isto
    Sintaxe: @this currentComponent

    Use @this para se referir ao componente de Formulário adaptável no qual a regra é gravada.

    O exemplo a seguir é baseado no valor do campo. No exemplo a seguir, a regra oculta um campo no formulário. A parte this de this.value refere-se ao componente de Formulário adaptável subjacente, no qual a regra é gravada.

    code language-none
       /**
       * @function myTestFunction
       * @this currentComponent
       * @param {scope} scope in which code inside function will be executed.
       */
       myTestFunction = function (scope) {
          if(this.value == "O"){
                scope.age.visible = true;
          } else {
             scope.age.visible = false;
          }
       }
    
    note note
    NOTE
    Comentários antes da função personalizada são usados para resumo. O resumo pode ser estendido para várias linhas até que uma tag seja encontrada. Limite o tamanho a um único para obter uma descrição concisa no construtor de regras.

Tipos suportados de declaração de função function-declaration-supported-types

Instrução da Função

function area(len) {
    return len*len;
}

Esta função está incluída sem jsdoc comentários.

Expressão de função

var area;
//Some codes later
/** */
area = function(len) {
    return len*len;
};

Expressão e Instrução da Função

var b={};
/** */
b.area = function(len) {
    return len*len;
}

Declaração de função como variável

/** */
var x1,
    area = function(len) {
        return len*len;
    },
    x2 =5, x3 =true;

Limitação: a função personalizada escolhe somente a primeira declaração de função da lista de variáveis, se estiver junto. Você pode usar a expressão de função para cada função declarada.

Declaração de Função como Objeto

var c = {
    b : {
        /** */
        area : function(len) {
            return len*len;
        }
    }
};

Criar função personalizada create-custom-function

Para criar uma função personalizada, execute as seguintes etapas:

  1. Faça logon em http://server:port/crx/de/index.jsp#.

  2. Crie uma pasta na pasta /apps. Por exemplo, crie uma pasta chamada experience-league.

  3. Salve as alterações.

  4. Navegue até a pasta criada e crie um nó do tipo cq:ClientLibraryFolder como clientlibs.

  5. Navegue até a pasta clientlibs recém-criada e adicione as propriedades allowProxy e categories:

    Propriedades do nó de biblioteca personalizado

    note note
    NOTE
    Você pode fornecer qualquer nome no lugar de customfunctionsdemo.
  6. Salve as alterações.

  7. Crie uma pasta chamada js na pasta clientlibs.

  8. Crie um arquivo JavaScript chamado functions.js na pasta js

  9. Crie um arquivo chamado js.txt na pasta clientlibs.

  10. Salve as alterações.
    A estrutura de pastas criada é semelhante a:

    Estrutura da pasta de biblioteca do cliente criada

  11. Clique duas vezes no arquivo functions.js para abrir o editor. O arquivo é composto pelo código da função personalizada.
    Vamos adicionar o seguinte código ao arquivo do JavaScript para calcular a idade com base na Data de nascimento (AAAA-MM-DD).

    code language-javascript
        /**
             * Calculates Age
             * @name calculateAge
             * @return {string}
        */
    
        function calculateAge(dateOfBirthString) {
        var dob = new Date(dateOfBirthString);
        var now = new Date();
    
        var age = now.getFullYear() - dob.getFullYear();
        var monthDiff = now.getMonth() - dob.getMonth();
    
        if (monthDiff < 0 || (monthDiff === 0 && now.getDate() < dob.getDate())) {
        age--;
        }
    
        return age;
        }
    
  12. Salve function.js.

  13. Navegue até js.txt e adicione o seguinte código:

    code language-javascript
        #base=js
        functions.js
    
  14. Salve o arquivo js.txt.

Você pode consultar a seguinte pasta função personalizada. Baixe e instale essa pasta na instância do AEM.

Agora, você pode usar a função personalizada no Formulário adaptável adicionando a biblioteca do cliente.

Adicionar biblioteca do cliente em um Formulário adaptável use-custom-function

Depois de implantar a biblioteca do cliente no ambiente do Forms CS, use os recursos dela no Formulário adaptável. Para adicionar a biblioteca do cliente no Formulário adaptável

  1. Abra o formulário no modo de edição. Para abrir um formulário no modo de edição, selecione um formulário e selecione Editar.

  2. Abra o navegador Conteúdo e selecione o componente Contêiner do Guia do seu Formulário adaptável.

  3. Clique no ícone de propriedades do Contêiner do guia. A caixa de diálogo Contêiner de formulário adaptável é aberta.

  4. Abra a guia Básico e selecione o nome da categoria da biblioteca do cliente na lista suspensa (neste caso, selecione customfunctionscategory).

    Adicionando a biblioteca cliente de função personalizada

  5. Clique em Concluído.

Agora, é possível criar uma regra para usar funções personalizadas no editor de regras:

Adicionando a biblioteca cliente de função personalizada

Agora, vamos entender como configurar e usar uma função personalizada usando o serviço Chamar do Editor de regras no AEM Forms.

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2