Gestion de l’envoi du formulaire
Créé pour :
- Expérimenté
- Développeur
AEM Forms 6.5
Dans cette partie, nous allons créer un servlet simple qui s’exécute sur l’instance de publication AEM pour gérer l’envoi de formulaire HTML5. Ce servlet, à son tour, effectue une requête HTTP POST à un servlet s’exécutant dans une instance de création AEM responsable de l’enregistrement des données envoyées en tant que nœud nt:file
dans le référentiel de l’instance de création AEM.
Vous trouverez ci-dessous le code du servlet qui gère l’envoi du formulaire HTML5. Dans ce servlet, nous effectuons un appel POST vers un servlet monté sur /bin/startworkflow dans une instance de création AEM. Ce servlet enregistre les données de formulaire dans le référentiel de l’instance de création AEM.
Servlet de publication AEM
Le code ci-après gère l’envoi du formulaire HTML5. Ce code s’exécute sur l’instance de publication.
package com.aemforms.mobileforms.core.servlets;
import com.aemforms.mobileforms.core.configuration.service.AemServerCredentialsConfigurationService;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.apache.sling.servlets.annotations.SlingServletResourceTypes;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.Servlet;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Serializable;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
@Component(service={Servlet.class}, property={"sling.servlet.methods=post", "sling.servlet.paths=/bin/handleformsubmission"})
public class HandleFormSubmission extends SlingAllMethodsServlet implements Serializable {
private static final long serialVersionUID = 1L;
private final transient Logger logger = LoggerFactory.getLogger(this.getClass());
@Reference
AemServerCredentialsConfigurationService aemServerCredentialsConfigurationService;
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) {
logger.debug("In do POST of bin/handleformsubmission");
ByteArrayOutputStream result = new ByteArrayOutputStream();
try {
ServletInputStream is = request.getInputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) != -1) {
result.write(buffer, 0, length);
}
logger.debug(result.toString(StandardCharsets.UTF_8.name()));
} catch (IOException e1) {
logger.error("An error occurred", e1);
}
String postURL = aemServerCredentialsConfigurationService.getWorkflowServer();
logger.debug("The url to invoke workflow is "+postURL);
HttpPost postReq = new HttpPost(postURL);
// This is the base64 encoding of the admin credentials. This call should be made over HTTPS in production scenarios to avoid leaking credentials.
String userName = aemServerCredentialsConfigurationService.getUserName();
String password = aemServerCredentialsConfigurationService.getPassword();
String credential = userName+":"+password;
String encodedString = Base64.getEncoder().encodeToString(credential.getBytes());
postReq.addHeader("Authorization", "Basic "+encodedString);
System.out.println("The encoded string is "+"Basic "+encodedString);
CloseableHttpClient httpClient = HttpClients.createDefault();
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
logger.debug("added url parameters");
try {
urlParameters.add(new BasicNameValuePair("xmlData", result.toString(StandardCharsets.UTF_8.name())));
postReq.setEntity(new UrlEncodedFormEntity(urlParameters));
HttpResponse httpResponse = httpClient.execute(postReq);
logger.debug("Sent request to author instance");
String startWorkflowResponse = EntityUtils.toString(httpResponse.getEntity());
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
out.write(startWorkflowResponse);
} catch (IOException e) {
logger.error("An error occurred", e);
}
}
}
Étapes suivantes
Experience Manager
- Vue d’ensemble
- Bonnes pratiques à suivre
- Configuration de l’authentification OKTA avec l’instance Création AEM
- Création de votre premier formulaire adaptatif
- 1. Présentation et configuration
- 2. Créer un modèle de formulaire adaptatif
- 3. Créer un fragment de formulaire
- 4. Créer un formulaire adaptatif
- 5. Configurer un panneau racine et ajouter des panneaux enfants
- 6. Ajouter des composants au panneau Personnes
- 7. Ajouter un tableau au panneau des revenus
- 8. Configurer le panneau Ressources
- 9. Utiliser des fonctions personnalisées et l’éditeur de code
- Gestion des envois de formulaire
- Création d’un workflow de révision
- Configuration d’un formulaire adaptatif pour déclencher un workflow
- Affichage de la page de remerciement
- Personnaliser la page de remerciement
- Envoi au point d’entrée externe
- Envoyer un e-mail
- Workflow de requête de congés payés
- Configuration d’un formulaire adaptatif pour déclencher un workflow AEM - vidéo
- Personnalisation de la notification d’affectation de tâche
- Intégrations utiles
- Créer un bundle OSGi
- Formulaires adaptatifs
- Installation d’AEM Forms sur Windows
- Installation de packages 32 bits sur Linux
- Service de préremplissage des formulaires adaptatifs
- Renseigner le formulaire adaptatif à l’aide des paramètres de requête
- Code QR dans AEM Forms
- Envoi personnalisé dans les formulaires adaptatifs
- Captcha dans les formulaires adaptifs
- Fonctions personnalisées dans l’éditeur de règles
- Incorporation d’un formulaire adaptatif dans une page web
- Création d’une séquence de chaînes de caractères
- Chemin de chargement des éléments dans AEM Forms
- Utilisation de la valeur définie dans XML dans le workflow OSGI
- Utilisation de la valeur définie dans JSON dans le workflow OSGI
- Composant Envoyer un e-mail dans le workflow AEM Forms
- Génération d’un document d’enregistrement (DoR) à l’aide de l’API
- Affichage d’images intégrées
- Affichage des images DAM intégrées
- Utilisation de l’API GeoLocation
- Utilisation des rapports de transaction
- Intégration des données de profil utilisateur dans AEM Forms
- Microsoft Dynamics avec AEM Forms
- Améliorations de l’éditeur de règles
- Limitation de l’accès à l’éditeur de règles
- Améliorations de l’éditeur de thèmes
- Améliorations de l’éditeur de formulaires
- Test automatisé des formulaires adaptatifs
- Test automatisé des formulaires adaptatifs
- Intégration du LDAP à AEM Forms
- Utilisation de l’utilisateur du service dans AEM Forms
- Balisage et stockage d’un document d’enregistrement (DoR) lors de l’envoi de formulaire adaptatif
- Renseignement du tableau avec les résultats de l’appel du service de modèle de données de formulaire
- Capture des commentaires du workflow
- Stockage des données de formulaire envoyées dans la base de données
- Insertion d’une pièce jointe de formulaire dans la base de données
- Modifier une configuration de source de données
- Remplacer les propriétés du modèle de données de formulaire
- Service de modèle de données de formulaire dans le workflow AEM 6.4
- Gestion des messages d’erreur dans l’étape du service de modèle de données de formulaire
- Service de modèle de données de formulaire dans le workflow AEM 6.5.1
- Modèle de données de formulaire sans source de données
- Élément de modèle de données de formulaire calculé
- Configuration de la source de données JDBC dans AEM Forms
- Modèle de données de formulaire basé sur JDBC
- Créer des associations entre deux entités dans un modèle de données de formulaire
- Utilisation du service d’appel du modèle de données de formulaire dans l’éditeur de règles
- Publier des données binaires dans AEM DAM à l’aide du modèle de données de formulaire
- Création de modèles de workflow réutilisables
- Étape de processus personnalisée du workflow AEM
- Préremplissage des formulaires HTML5
- Modèle de données de formulaire avec Salesforce
- Ajout dynamique d’éléments au composant Choix
- Remplir un formulaire PDF avec ChatBot
- Formulaires basés sur les composants principaux
- Sélectionner et assembler le contenu du dossier DAM
- Préremplir le formulaire adaptatif à l’aide du modèle de données de formulaire
- Conseils et astuces concernant l’interface utilisateur
- Personnalisation de la boîte de réception
- Pièces jointes du formulaire d’e-mail
- Préremplir le formulaire avec des données et des pièces jointes
- Stocker et récupérer un formulaire adaptatif
- 1 - Présentation
- 2. Configurer la source de données
- 3. Stocker les pièces jointes d’un formulaire
- 4. Stocker les données d’un formulaire
- 5. Créer un servlet
- 6. Rendre un formulaire avec des données enregistrées
- 7. Créer une bibliothèque cliente
- 8. Intégrer au service OTP
- 9. Créer le formulaire principal
- 10. Créer le formulaire MyAccount
- 11. Déployer l’exemple
- Importer des données du fichier PDF
- Exportation de données envoyées au format CSV
- Formulaires HTML5
- AEM Forms et Acrobat Sign
- Présentation
- Configurer le SSL
- Créer une application d’API Acrobat Sign
- Créer une configuration cloud Acrobat Sign
- Créer un workflow pour envoyer un document à signer
- Créer et configurer un formulaire adaptatif
- Configurer un formulaire adaptatif pour un signataire unique
- Configurer un formulaire adaptatif pour deux signataires
- Configurer le service de conversion automatisée de formulaires
- Convertir un formulaire PDF en formulaire adaptatif
- Configurer un formulaire adaptatif converti
- Utilisation de modèles XDP avec Acrobat Sign
- Utilisation des méthodes d’assistance Acrobat Sign
- Signature de plusieurs formulaires
- 1 - Présentation
- 2. Configurer la source de données
- 3. Créer un service OSGi
- 4. Créer un workflow principal
- 5. Mettre à jour le workflow du statut de signature
- 6. Personnaliser le composant Résumé
- 7. Créer une bibliothèque cliente
- 8. Créer un modèle de formulaire
- 9. Créer un formulaire initial
- 10. Créer des formulaires à signer
- 11. Tester la solution
- Étapes d’un workflow personnalisé
- Composant de workflow personnalisé
- Variables dans le workflow AEM
- Vérifier les données de formulaire
- Stockage et récupération des données de formulaire dans la base de données MySQL
- Déclenchement d’un workflow AEM lors de l’envoi du formulaire PDF
- Déclencher un workflow AEM lors de l’envoi du formulaire mobile
- Interroger les envois de formulaire
- Liste des types de ressources personnalisés dans le portail Formulaires
- AEM Forms avec Marketo
- AEM Forms avec Adobe Campaign Standard
- Kit de bienvenue
- API Forms découplées
- Application React avec Forms et Acrobat Sign
- Services de document
- Types de formulaires PDF
- Incorporer le PDF dans le formulaire adaptatif
- PDF dans le composant du carrousel
- Utilisation du service Assembler dans AEM Forms
- Assemblage XDP avec le service Assembler
- Utilisation du dossier de contrôle dans AEM Forms
- Utilisation du service Barcode dans AEM Forms
- Utilisation du service PDFG dans AEM Forms
- Chiffrement d’un PDF avec mot de passe d’autorisation
- Utilisation des services Output et Forms dans AEM Forms
- Utilisation de fragments XDP dans le service de sortie
- Script ECMA pour générer un PDF avec des fragments
- Génération de plusieurs PDF à partir d’un fichier de données
- Générer un PDF lors de l’envoi du formulaire mobile
- Générer un PDF sur l’envoi de formulaire basé sur les composants principaux
- Générer un PDF interactif à partir d’un formulaire mobile
- Générer un document d’enregistrement interactif à partir d’un formulaire adaptatif
- Configurer les informations d’identification Reader Extensions
- Application des droits d’utilisation au rendu du PDF en XDP
- Appliquer les droits d’utilisation au PDF téléchargé
- Certifier des documents
- Assembler des pièces jointes de formulaire
- Services utilitaires utiles
- Forms Designer
- AEM Forms Workbench
- Communications interactives pour le canal d’impression
- 1 - Présentation
- 2. Configurer Tomcat
- 3. Créer une source de données
- 4. Créer un modèle de données de formulaire
- 5. Créer une disposition XDP à l’aide de Forms Designer
- 6. Créer un fragment de document
- 7. Créer un document de canal d’impression
- 8. Ajouter du contenu aux zones cible
- 9. Configurer le graphique linéaire
- 10. Ajouter un tableau au canal d’impression
- 11. Utiliser un dossier de contrôle pour générer des documents
- 12. Ouvrir l’interface utilisateur de l’agent lors de l’envoi du formulaire
- Enregistrer et récupérer des brouillons de lettres
- Communications interactives
- Utilisation de lʼAPI Batch
- Graphiques multi-séries
- Générer des documents de canal d’impression à partir des données envoyées
- Utilisation des fonctions de réducteur
- Disposition en deux colonnes dans les documents de canal d’impression
- Utilisation du composant Tableau dans le document de canal d’impression AEM Forms
- Génération d’un document de communication interactive pour le canal d’impression à l’aide de dossiers de contrôle
- Personnaliser l’éditeur de texte
- Communication interactive pour canal web
- 1 - Présentation
- 2. Configurer Tomcat
- 3. Créer une source de données
- 4. Créer un modèle de données de formulaire
- 5. Créer un modèle de document de canal web
- 6. Créer un fragment de document
- 7. Créer un document de communication interactive
- 8. Ajouter du texte et des images
- 9. Configurer le graphique linéaire
- 10. Configurer le tableau
- 11. Configurer le graphique à colonnes
- 12. Configurer le graphique en secteurs
- 13. Diffuser le document de canal web
- Diffusion par e-mail d’un document de canal web
- Résolution des problèmes
- Document Services : procédure de dépannage des problèmes liés à DDX
- Document Services : procédure de dépannage des problèmes de conversion PDFA
- Document Services : comment déboguer le problème lié aux polices pour les services Forms et Output
- Document Services : intégration de polices pour les services Forms et Output
- Document Services : activation de la journalisation des performances pour déboguer les services Forms et Output
- Document Services : augmentation du délai d’expiration des transactions pour la conversion de fichiers volumineux
- Document Services : exécution de tests de chargement à l’aide de FormsIVS et OutputIVS
- Document Services : mise à jour des fichiers XDP et de données personnalisés dans FormsIVS et OutputIVS
- Document Services : procédure d’activation de la trace ORB détaillée
- Document Services : procédure d’ajustement de la taille du pool BMC pour XMLFormService part1
- Document Services : procédure d’ajustement de la taille du pool BMC pour XMLFormService part2
- Document Services : procédure d’ajustement des paramètres sur la console JMX
- Activer la fusion de fichiers de données XML volumineux avec un modèle
- PDFG : modification des délais d’expiration des transactions dans PDFG
- PDFG : mise à jour du délai d’expiration CORBA dans PDFG
- PDFG : mise à jour des délais d’expiration dans PDFG
- PDFG : procédure d’ajout d’un utilisateur PDFG dans le serveur Windows 2016
- PDFG : procédure de vérification et d’installation des bibliothèques 32 bits et de leurs dépendances
- PDFG : procédure de vérification de l’autorisation des dossiers sur le serveur Windows 2016
- PDFG : procédure d’activation de Strace sur Unix
- PDFG : procédure d’installation des redistribuables Microsoft Visual C++ 32 bits requis
- PDFG : procédure d’exécution et d’interprétation de la sortie de l’outil System Readiness
- PDFG : procédure de dépannage des problèmes spécifiques à Acrobat
- PDFG : procédure de dépannage des problèmes HtmltoPDF sous Windows
- PDFG : procédure de dépannage des problèmes spécifiques à HtmltoPDF sur Unix (PhantomJS)
- PDFG : procédure de dépannage des problèmes spécifiques à HtmltoPDF sur Unix (conversion WebKit)
- PDFG : procédure de dépannage de la conversion PDFG pour plusieurs utilisateurs et utilisatrices sous Unix
- PDFG : procédure de dépannage de la conversion PDFG pour plusieurs utilisateurs et utilisatrices sous Windows
- PDFG : procédure de dépannage des problèmes spécifiques à OpenOffice sous Unix
- PDFG : procédure de dépannage des problèmes spécifiques à OpenOffice sous Windows
- Document Security : appliquer une politique créée à l’aide du module Document Security dans Acrobat
- User Management : ajouter des utilisateurs et utilisatrices ou des groupes dans AEM Forms JEE
- User Management : augmenter le délai d’expiration de session de User Management
- Workbench : Se connecter à Workbench via HTTPS
- Workbench : recueillir les journaux Workbench à partir du menu d’aide
- Workbench : activer la sortie de débogage pour Workbench
- Workbench : ajuster les paramètres de mémoire de Workbench
- Workbench : ajuster les paramètres de performances de Workbench
- Designer : dépendance de Designer sur C++ Redistributable
- Designer : activer l’aperçu HTML
- Designer : activer l’aperçu PDF
- Designer : installer les correctifs pour Designer
- Concepts de base de JEE : modifier la valeur de l’entropie
- Concepts de base de JEE : modifier le délai d’expiration des transactions d’un service dans AEM Forms JEE
- Concepts de base de JEE : purger les enregistrements de processus du tableau Gestionnaire de tâches
- Concepts de base de JEE : exécuter la purge de processus à partir de la ligne de commande
- Concepts de base de JEE : procédure de Bootstrap manuel
- Concepts de base de JEE : procédure de capture des journaux de débogage pour les formulaires mobiles
- Concepts de base de JEE : procédure de contrôle de l’exception ForcedDisconnectException
- Général : ajouter un utilisateur ou une utilisatrice en charge de la gestion pour JBoss Admin Console
- Général : capturer les journaux HAR
- Général : capturer les vidages de tas d’une JVM sur un serveur Unix
- Général : capturer les vidages de tas d’une JVM sur un serveur Windows
- Général : capturer les journaux réseau
- Général : capturer les vidages de threads d’une JVM sur un serveur Unix
- Général : capturer les vidages de threads d’une JVM sur un serveur Windows
- Général : générer un certificat auto-signé
- Général : effectuer un appel de service Web à partir du formulaire HTML5
- Général : procédure d’activation de la journalisation du débogage pour toutes les classes dans AEM Forms OSGI
- Général : procédure d’activation de la journalisation du débogage pour toutes les classe du serveur d’applications JBOSS
- Général : procédure d’activation de la journalisation du débogage pour toutes les classes du serveur d’applications WebSphere
- Général : procédure d’activation du protocole SSL pour AEM Forms OSGi
- Général : procédure de chiffrement du mot de passe du KeyStore à utiliser dans le fichier lc_turnkey.xml
- Général : procédure de réinitialisation du mot de passe pour les utilisateurs et utilisatrices dans AEM Forms JEE
- Général : procédure de réinitialisation du mot de passe pour les utilisateurs et utilisatrices dans AEM Forms OSGI
- Généralités : procédure de mise en place des localisateurs Gemfire dans un cluster et configuration correspondante