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 as a Cloud Service AEM Forms existente, vá 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
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
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