Criação de envio personalizado

O AEM Forms fornece várias opções de envio prontas para uso que satisfazem a maioria dos casos de uso. Além dessas ações de envio predefinidas, o AEM Forms permite que você escreva seu próprio manipulador de envio personalizado para processar o envio do formulário de acordo com suas necessidades.

Para escrever um serviço de envio personalizado, as seguintes etapas foram seguidas

Criar projeto AEM

Se você já tiver um projeto AEM Forms Cloud Service existente, pode pular para a gravação do serviço de envio personalizado

  • Crie uma pasta chamada cloudmanager na unidade c.
  • Navegar até esta pasta recém-criada
  • Copie e cole o conteúdo de este arquivo de texto na janela de prompt de comando. Talvez seja necessário alterar DarchetypeVersion=41, dependendo da versão mais recente. No momento em que este artigo foi escrito, a última versão era a 41.
  • Execute o comando pressionando a tecla Enter. Se tudo correr corretamente, você verá a mensagem de sucesso da build.

Escrever o serviço de envio personalizado Write-the-custom-submit-service

Inicie o IntelliJ e abra o projeto AEM. Crie uma nova classe java chamada HandleRegistrationFormSubmission conforme mostrado na captura de tela abaixo
custom-submit-service

O código a seguir foi gravado para implementar o serviço

package com.aem.bankingapplication.core;
import java.util.HashMap;
import java.util.Map;
import com.google.gson.Gson;
import org.osgi.service.component.annotations.Component;
import com.adobe.aemds.guide.model.FormSubmitInfo;
import com.adobe.aemds.guide.service.FormSubmitActionService;
import com.adobe.aemds.guide.utils.GuideConstants;
import com.google.gson.JsonObject;
import org.slf4j.*;

@Component(
        service=FormSubmitActionService.class,
        immediate = true
)
public class HandleRegistrationFormSubmission implements FormSubmitActionService {
    private static final String serviceName = "Core Custom AF Submit";
    private static Logger logger = LoggerFactory.getLogger(HandleRegistrationFormSubmission.class);



    @Override
    public String getServiceName() {
        return serviceName;
    }

    @Override
    public Map<String, Object> submit(FormSubmitInfo formSubmitInfo) {
        logger.error("in my custom submit service");
        Map<String, Object> result = new HashMap<>();
        logger.error("in my custom submit service");
        String data = formSubmitInfo.getData();
        JsonObject formData = new Gson().fromJson(data,JsonObject.class);
        logger.error("The form data is "+formData);
        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("firstName",formData.get("firstName").getAsString());
        jsonObject.addProperty("lastName",formData.get("lastName").getAsString());
        result.put(GuideConstants.FORM_SUBMISSION_COMPLETE, Boolean.TRUE);
        result.put("json",jsonObject.toString());
        return result;
    }

}

Crie um nó crx em aplicativos

Expanda o nó ui.apps e crie um novo pacote chamado HandleRegistrationFormSubmission no nó apps, como mostrado na captura de tela abaixo
crx-node
Crie um arquivo chamado .content.xml em HandleRegistrationFormSubmission. Copie e cole o seguinte código no arquivo .content.xml

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
    jcr:description="Handle Registration Form Submission"
    jcr:primaryType="sling:Folder"
    guideComponentType="fd/af/components/guidesubmittype"
    guideDataModel="xfa,xsd,basic"
    submitService="Core Custom AF Submit"/>

O valor do elemento submitService deve corresponder ao serviceName = "Envio de AF personalizado principal" na implementação de FormSubmitActionService.

Implante o código na instância local do AEM Forms

Antes de enviar as alterações para o repositório do Cloud Manager, é recomendável implantar o código na instância do autor local pronta para nuvem para testar o código. Verifique se a instância do autor está em execução.
Para implantar o código na instância do autor pronta para nuvem, navegue até a pasta raiz do projeto AEM e execute o seguinte comando

mvn clean install -PautoInstallSinglePackage

Isso implantará o código como um único pacote na instância do autor

Envie o código ao Cloud Manager e Implante o código

Depois de verificar o código na instância local, envie o código para a instância da nuvem.
Envie as alterações para o repositório Git local e, em seguida, para o repositório do cloud manager. Você pode consultar os artigos sobre configuração do Git, envio do projeto AEM para o repositório do Cloud Manager e implantação no ambiente de desenvolvimento.

Depois que o pipeline for executado com sucesso, você poderá associar a ação de envio do seu formulário ao manipulador de envio personalizado, conforme mostrado na captura de tela abaixo
ação-envio

Próximas etapas

Exibir a resposta personalizada no aplicativo react

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69