Appel de processus pour des intervenants humains de longue durée

Vous pouvez appeler par programmation des processus de longue durée centrés sur l’être humain qui ont été créés dans Workbench à l’aide des applications clientes suivantes :

Le processus de longue durée appelé est nommé FirstAppSolution/PreLoanProcess. Vous pouvez créer ce processus en suivant le didacticiel spécifié dans Création de votre première application AEM Forms.

Un processus axé sur l’humain implique une tâche à laquelle un utilisateur peut répondre en utilisant Workspace. Par exemple, à l’aide de Workbench, vous pouvez créer un processus qui permet à un gestionnaire de banque d’approuver ou de refuser une demande de prêt. L'illustration suivante montre le processus FirstAppSolution/PreLoanProcess.

Le processus* FirstAppSolution/PreLoanProcess* accepte un paramètre d’entrée nommé* formData* dont le type de données est XML. Les données XML sont fusionnées avec une conception de formulaire nommée PreLoanForm.xdp. L’illustration suivante présente un formulaire qui représente une tâche affectée à un utilisateur pour approuver ou refuser une demande de prêt. L’utilisateur approuve ou refuse l’application à l’aide de Workspace. L’utilisateur de Workspace peut approuver la demande de prêt en cliquant sur le bouton Approuver illustré dans l’illustration suivante. De même, l’utilisateur peut refuser la demande de prêt en cliquant sur le bouton de refus.

Un processus de longue durée est appelé de manière asynchrone et ne peut pas l’être de manière synchrone en raison des facteurs suivants :

  • Un processus peut s’étendre sur une période considérable.
  • Un processus peut dépasser les limites organisationnelles.
  • Un processus a besoin d’une entrée externe pour se terminer. Prenons l’exemple d’un cas où un formulaire est envoyé à un responsable absent du bureau. Dans ce cas, le processus n’est pas terminé tant que le gestionnaire ne retourne pas et ne remplit pas le formulaire.

Lorsqu’un processus de longue durée est appelé, AEM Forms crée une valeur d’identificateur d’appel dans le cadre de la création d’un enregistrement. L’enregistrement suit l’état du processus de longue durée et est stocké dans la base de données AEM Forms. A l’aide de la valeur d’identifiant d’appel, vous pouvez suivre l’état du processus de longue durée. En outre, vous pouvez utiliser la valeur de l’identifiant d’appel de processus pour effectuer des opérations Process Manager telles que l’arrêt d’une instance de processus en cours d’exécution.

REMARQUE

AEM Forms ne crée pas de valeur d’identifiant d’appel ni d’enregistrement lorsqu’un processus de courte durée est appelé.

Le processus FirstAppSolution/PreLoanProcess est appelé lorsqu’un demandeur soumet une demande, qui est représentée sous la forme de données XML. Le nom de la variable de processus d’entrée est formData et son type de données est XML. Aux fins de cette discussion, supposons que les données XML suivantes soient utilisées comme entrée au processus FirstAppSolution/PreLoanProcess.

 <?xml version="1.0" encoding="UTF-8"?> 
 <LoanApp> 
 <Name>Sam White</Name> 
 <LoanAmount>250000</LoanAmount> 
 <PhoneOrEmail>(555)555-5555</PhoneOrEmail> 
 <ApprovalStatus>PENDING APPROVAL</ApprovalStatus> 
 </LoanApp>

Les données XML transmises à un processus doivent correspondre aux champs situés dans le formulaire utilisé dans le processus. Sinon, les données ne s’affichent pas dans le formulaire. Toutes les applications qui appellent le processus FirstAppSolution/PreLoanProcess doivent transmettre cette source de données XML. Les applications créées dans Appeler des processus à longue durée centrés sur l'humain créent dynamiquement la source de données XML à partir des valeurs qu'un utilisateur a entrées dans un client Web.

A l’aide d’une application cliente, vous pouvez envoyer le processus *FirstAppSolution/PreLoanProcess traiter les données XML requises. Un processus de longue durée renvoie une valeur d’identifiant d’appel comme valeur de retour. L’illustration suivante montre les applications clientes qui invoquent le processus de longue durée FirstAppSolution/PreLoanProcess. Les applications clientes envoient des données XML et récupèrent une valeur de chaîne qui représente la valeur de l’identifiant d’appel.

Voir également

Création d’une application Web Java qui appelle un processus pour des intervenants humains de longue durée

Création d'une application Web ASP.NET qui appelle un processus de longue durée axé sur l'humain

Création d’une application cliente créée avec Flex qui appelle un processus de longue durée axé sur l’être humain

Création d’une application Web Java qui appelle un processus pour des intervenants humains de longue durée

Vous pouvez créer une application Web qui utilise une servlet Java pour appeler le processus FirstAppSolution/PreLoanProcess. Pour appeler ce processus à partir d’une servlet Java, utilisez l’API d’appel dans la servlet Java. (Voir Appel d’AEM Forms à l’aide de l’API Java.)

L’illustration suivante présente une application cliente Web qui publie des valeurs de nom, de téléphone (ou de courrier électronique) et de montant. Ces valeurs sont envoyées à la servlet Java lorsque l’utilisateur clique sur le bouton Envoyer la demande.

La servlet Java exécute les tâches suivantes :

  • Récupère les valeurs publiées de la page HTML vers la servlet Java.
  • Crée de manière dynamique une source de données XML à transmettre au * processus FirstAppSolution/PreLoanProcess *. Les valeurs de nom, de téléphone (ou de courrier électronique) et de montant sont spécifiées dans la source de données XML.
  • Appelle le processus FirstAppSolution/PreLoanProcess à l’aide de l’API d’appel AEM Forms.
  • Renvoie la valeur de l’identifiant d’appel au navigateur Web client.

Résumé des étapes

Pour créer une application Web Java qui appelle le processus FirstAppSolution/PreLoanProcess, procédez comme suit :

  1. Créez un projet Web.
  2. Créez une logique d'application Java pour la servlet.
  3. Création de la page Web pour l’application Web
  4. Assemblez l'application Web dans un fichier WAR.
  5. Déployez le fichier WAR sur le serveur d’applications J2EE hébergeant AEM Forms.
  6. Testez votre application Web.
REMARQUE

Certaines de ces étapes dépendent de l’application J2EE sur laquelle AEM Forms est déployé. Par exemple, la méthode que vous utilisez pour déployer un fichier WAR dépend du serveur d’applications J2EE que vous utilisez. AEM Forms est probablement déployé sur JBoss®.

Créer un projet Web

La première étape de la création d’une application Web consiste à créer un projet Web. Eclipse 3.3 est l'IDE Java sur lequel repose ce document. A l'aide de l'IDE Eclipse, créez un projet Web et ajoutez les fichiers JAR requis à votre projet. Ajoutez une page HTML nommée *index.html *et une servlet Java à votre projet.

La liste suivante spécifie les fichiers JAR à inclure dans votre projet Web :

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • J2EE.jar

Pour connaître l’emplacement de ces fichiers JAR, voir Inclusion de fichiers de bibliothèque Java AEM Forms.

REMARQUE

Le fichier J2EE.jar définit les types de données utilisés par une servlet Java. Vous pouvez obtenir ce fichier JAR à partir du serveur d’applications J2EE sur lequel AEM Forms est déployé.

Création d’un projet Web

  1. Début Eclipse et cliquez sur Fichier > Nouveau projet.
  2. Dans la boîte de dialogue Nouveau projet, sélectionnez Web > Projet Web dynamique.
  3. Tapez InvokePreLoanProcess pour le nom de votre projet, puis cliquez sur Terminer.

Ajouter les fichiers JAR requis à votre projet

  1. Dans la fenêtre Explorateur de projets, cliquez avec le bouton droit sur le projet InvokePreLoanProcess et sélectionnez Propriétés.
  2. Cliquez sur Chemin de génération Java, puis sur l'onglet Bibliothèques.
  3. Cliquez sur le bouton Ajouter les fichiers JAR externes et accédez aux fichiers JAR à inclure.

Ajouter une servlet Java à votre projet

  1. Dans la fenêtre Explorateur de projets, cliquez avec le bouton droit sur le projet InvokePreLoanProcess et sélectionnez Nouveau > Autre.
  2. Développez le dossier Web, sélectionnez Servlet, puis cliquez sur Suivant.
  3. Dans la boîte de dialogue Créer un servlet, tapez SubmitXML pour le nom de la servlet, puis cliquez sur Terminer.

Ajouter une page HTML à votre projet

  1. Dans la fenêtre Explorateur de projets, cliquez avec le bouton droit sur le projet InvokePreLoanProcess et sélectionnez Nouveau > Autre.
  2. Développez le dossier Web, sélectionnez HTML, puis cliquez sur Suivant.
  3. Dans la boîte de dialogue Nouveau code HTML, saisissez index.html pour le nom de fichier, puis cliquez sur Terminer.
REMARQUE

Pour plus d’informations sur la création de contenu HTML qui appelle la servlet Java SubmitXML, voir Création de la page Web pour l’application Web.

Créer une logique d'application Java pour la servlet

Créez une logique d’application Java qui appelle le processus FirstAppSolution/PreLoanProcess depuis la servlet Java. Le code suivant illustre la syntaxe de la servlet Java SubmitXML :

     public class SubmitXML extends HttpServlet implements Servlet { 
         public void doGet(HttpServletRequest req, HttpServletResponse resp 
         throws ServletException, IOException { 
         doPost(req,resp); 
          
         } 
         public void doPost(HttpServletRequest req, HttpServletResponse resp 
         throws ServletException, IOException { 
             //Add code here to invoke the FirstAppSolution/PreLoanProcess process 
             }

Normalement, vous ne placez pas de code client dans la méthode doGet ou doPost d'une servlet Java. Une meilleure pratique de programmation consiste à placer ce code dans une classe distincte. Instanciez ensuite la classe à partir de la méthode doPost (ou de la méthode doGet), puis appelez les méthodes appropriées. Toutefois, pour la concision du code, les exemples de code sont conservés au minimum et sont placés dans la méthode doPost.

Pour appeler le processus FirstAppSolution/PreLoanProcess à l’aide de l’API d’appel, effectuez les tâches suivantes :

  1. Incluez des fichiers JAR client, tels que adobe-livecycle-client.jar, dans le chemin de classe de votre projet Java. Pour plus d’informations sur l’emplacement de ces fichiers, voir Inclusion des fichiers de bibliothèque Java AEM Forms.

  2. Récupérez les valeurs de nom, de téléphone et de montant envoyées à partir de la page HTML. Utilisez ces valeurs pour créer de manière dynamique une source de données XML envoyée au processus FirstAppSolution/PreLoanProcess. Vous pouvez utiliser les classes org.w3c.dom pour créer la source de données XML (cette logique d'application est illustrée dans l'exemple de code suivant).

  3. Créez un objet ServiceClientFactory qui contient des propriétés de connexion. (Voir Réglage des propriétés de la connexion.)

  4. Créez un objet ServiceClient en utilisant son constructeur et en transmettant l’objet ServiceClientFactory. Un objet ServiceClient vous permet d’appeler une opération de service. Il gère des tâches telles que la localisation, la répartition et le routage des demandes d’appel.

  5. Créez un objet java.util.HashMap en utilisant son constructeur.

  6. Appelez la méthode java.util.HashMap de l’objet put pour chaque paramètre d’entrée à transmettre au processus de longue durée. Veillez à spécifier le nom des paramètres d’entrée du processus. Comme le processus FirstAppSolution/PreLoanProcess requiert un paramètre d'entrée de type XML (nommé formData), vous ne devez appeler la méthode put qu'une seule fois.

     //Get the XML to pass to the FirstAppSolution/PreLoanProcess process 
     org.w3c.dom.Document inXML = GetDataSource(name,phone,amount); 
                  
     //Create a Map object to store the parameter value 
     Map params = new HashMap(); 
     params.put("formData", inXML);
    
  7. Créez un objet InvocationRequest en appelant la méthode ServiceClientFactory de l'objet createInvocationRequest et en transmettant les valeurs suivantes :

    • Valeur string qui spécifie le nom du processus de longue durée à appeler. Pour appeler le processus FirstAppSolution/PreLoanProcess, spécifiez FirstAppSolution/PreLoanProcess.
    • Une valeur string qui représente le nom de l’opération de processus. Le nom de l’opération de processus de longue durée est invoke.
    • L’objet java.util.HashMap qui contient les valeurs de paramètre requises par l’opération de service.
    • Valeur booléenne qui spécifie false, qui crée une requête asynchrone (cette valeur est applicable pour appeler un processus de longue durée).
    REMARQUE

    Un processus de courte durée peut être appelé en transmettant la valeur true en tant que quatrième paramètre de la méthode createInvocationRequest. La transmission de la valeur true crée une requête synchrone.

  8. Envoyez la demande d’appel à AEM Forms en appelant la méthode ServiceClient de l’objet invoke et en transmettant l’objet InvocationRequest. La méthode invoke renvoie un objet InvocationReponse.

  9. Un processus de longue durée renvoie une valeur de chaîne qui représente une valeur d’identification d’appel. Récupérez cette valeur en appelant la méthode getInvocationId de l’objet InvocationReponse.

     //Send the invocation request to the long-lived process and  
     //get back an invocation response object 
     InvocationResponse lcResponse = myServiceClient.invoke(lcRequest); 
     String invocationId = lcResponse.getInvocationId();
    
  10. Ecrivez la valeur d’identification d’appel au navigateur Web client. Vous pouvez utiliser une instance java.io.PrintWriter pour écrire cette valeur dans le navigateur Web client.

Début rapide : Appel d’un processus de longue durée à l’aide de l’API d’appel

L'exemple de code Java suivant représente la servlet Java qui appelle le processus FirstAppSolution/PreLoanProcess.

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-livecycle-client.jar 
     * 2. adobe-usermanager-client.jar 
     * 
     * (Because this  quick start is implemented as a Java servlet, it is  
     * not necessary to include J2EE specific JAR files - the Java project 
     * that contains this quick start is exported as a WAR file which 
     * is deployed to the J2EE application server) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * For complete details about the location of these JAR files,  
     * see "Including AEM Forms library files" in Programming with AEM forms 
     * */ 
 import java.io.ByteArrayOutputStream; 
 import java.io.File; 
 import java.io.IOException; 
 import java.io.PrintWriter; 
  
 import javax.servlet.ServletException; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import java.util.*; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
 import javax.xml.parsers.DocumentBuilder; 
 import javax.xml.parsers.DocumentBuilderFactory; 
 import javax.xml.transform.Transformer; 
 import javax.xml.transform.TransformerFactory; 
 import javax.xml.transform.dom.DOMSource; 
 import javax.xml.transform.stream.StreamResult; 
  
 import com.adobe.idp.dsc.InvocationRequest; 
 import com.adobe.idp.dsc.InvocationResponse; 
 import com.adobe.idp.dsc.clientsdk.ServiceClient; 
 import org.w3c.dom.Element; 
  
     public class SubmitXML extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { 
       static final long serialVersionUID = 1L; 
      
        public SubmitXML() { 
         super(); 
     }        
      
      
     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
         // TODO Auto-generated method stub 
         doPost(request,response); 
     }       
      
     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
                  
         try{ 
             //Set connection properties required to invoke AEM Forms                                 
             Properties connectionProps = new Properties(); 
             connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "jnp://localhost:1099"); 
             connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_EJB_PROTOCOL);           
             connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
             connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
             connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password"); 
              
             //Create a ServiceClientFactory object 
             ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
              
             //Create a ServiceClient object 
             ServiceClient myServiceClient = myFactory.getServiceClient(); 
              
             //Get the values that are passed from the Loan HTML page 
             String name = (String)request.getParameter("name"); 
             String phone = (String)request.getParameter("phone"); 
             String amount = (String)request.getParameter("amount"); 
                  
             //Create XML to pass to the FirstAppSolution/PreLoanProcess process 
             org.w3c.dom.Document inXML = GetDataSource(name,phone,amount); 
                                  
             //Create a Map object to store the XML input parameter value 
             Map params = new HashMap(); 
             params.put("formData", inXML);  
              
             //Create an InvocationRequest object 
             InvocationRequest lcRequest =  myFactory.createInvocationRequest( 
                 "FirstAppSolution/PreLoanProcess", //Specify the long-lived process name 
                     "invoke",           //Specify the operation name     
                     params,               //Specify input values 
                     false);               //Create an asynchronous request  
              
             //Send the invocation request to the long-lived process and  
             //get back an invocation response object 
             InvocationResponse lcResponse = myServiceClient.invoke(lcRequest); 
             String invocationId = lcResponse.getInvocationId(); 
  
             //Create a PrintWriter instance 
             PrintWriter pp = response.getWriter();      
              
             //Write the invocation identifier value back to the client web browser 
             pp.println("The job status identifier value is: " +invocationId); 
              
         }catch (Exception e) { 
              System.out.println("The following exception occurred: "+e.getMessage()); 
       } 
     } 
      
      
      //Create XML data to pass to the long-lived process 
      private static org.w3c.dom.Document GetDataSource(String name, String phone, String amount) 
      { 
             org.w3c.dom.Document document = null; 
              
             try 
             { 
                 //Create DocumentBuilderFactory and DocumentBuilder objects 
                 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
                 DocumentBuilder builder = factory.newDocumentBuilder(); 
  
                 //Create a new Document object 
                 document = builder.newDocument();  
  
                 //Create MortgageApp - the root element in the XML  
                 Element root = (Element)document.createElement("LoanApp"); 
                 document.appendChild(root); 
                                              
                 //Create an XML element for Name 
                 Element nameElement = (Element)document.createElement("Name"); 
                 nameElement.appendChild(document.createTextNode(name)); 
                 root.appendChild(nameElement); 
                  
                 //Create an XML element for Phone 
                 Element phoneElement = (Element)document.createElement("PhoneOrEmail"); 
                 phoneElement.appendChild(document.createTextNode(phone)); 
                 root.appendChild(phoneElement); 
                  
                 //Create an XML element for amount 
                 Element loanElement = (Element)document.createElement("LoanAmount"); 
                 loanElement.appendChild(document.createTextNode(amount)); 
                 root.appendChild(loanElement); 
  
                 //Create an XML element for ApprovalStatus 
                 Element approveElement = (Element)document.createElement("ApprovalStatus"); 
                 approveElement.appendChild(document.createTextNode("PENDING APPROVAL")); 
                 root.appendChild(approveElement); 
                                  
               } 
          catch (Exception e) { 
                   System.out.println("The following exception occurred: "+e.getMessage()); 
                } 
         return document; 
          } 
         }

Créez la page Web de l’application Web

La * index.html *page Web fournit un point d’entrée à la servlet Java qui appelle le processus FirstAppSolution/PreLoanProcess. Cette page Web est un formulaire HTML de base qui contient un formulaire HTML et un bouton d’envoi. Lorsque l’utilisateur clique sur le bouton d’envoi, les données de formulaire sont publiées sur la servlet Java SubmitXML.

La servlet Java capture les données publiées à partir de la page HTML à l’aide du code Java suivant :

 //Get the values that are passed from the Loan HTML page 
 String name = request.getParameter("name"); 
 String phone = request.getParameter("phone"); 
 String amount = request.getParameter("amount");

Le code HTML suivant représente le fichier index.html créé lors de la configuration de l’environnement de développement. (Voir Création d’un projet Web.)

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd"> 
 <html> 
 <head> 
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
 <title>Insert title here</title> 
 </head> 
 <body> 
 <table> 
     <TBODY> 
         <TR> 
             <td><img src="financeCorpLogo.jpg" width="172" height="62"></TD> 
             <td><FONT size="+2"><strong>Java Loan Application Page</strong></FONT></TD> 
             <td> </TD> 
             <td> </TD> 
         </TR> 
          
     </TBODY> 
 </TABLE> 
     <FORM action="https://hiro-xp:8080/PreLoanProcess/SubmitXML" method="post"> 
        <table> 
          <TBODY> 
                <TR> 
                      <td><LABEL for="name">Name: </LABEL></TD> 
                  <td><INPUT type="text" name="name"></TD> 
                  <td><input type="submit" value="Submit Application"></TD> 
                  </TR> 
            <TR> 
                  <td> <LABEL for="phone">Phone/Email: </LABEL></TD> 
              <td><INPUT type="text" name="phone"></TD> 
                  <td></TD> 
              </TR> 
  
            <TR> 
                  <td><LABEL for="amount">Amount: </LABEL></TD> 
              <td><INPUT type="text" name="amount"></TD> 
                 <td></TD> 
             </TR> 
          </TBODY> 
 </TABLE> 
       </FORM> 
 </body> 
 </html>

Compresser l'application Web dans un fichier WAR

Pour déployer la servlet Java qui appelle le processus FirstAppSolution/PreLoanProcess, incluez votre application Web dans un fichier WAR. Assurez-vous que les fichiers JAR externes dont dépend la logique métier du composant, tels que adobe-livecycle-client.jar et adobe-usermanager-client.jar, sont également inclus dans le fichier WAR.

L’illustration suivante présente le contenu du projet Eclipse, qui est présenté dans un fichier WAR.

REMARQUE

Dans l’illustration précédente, le fichier JPG peut être remplacé par n’importe quel fichier image JPG.

Créez un package d'application Web dans un fichier WAR :

  1. Dans la fenêtre Explorateur de projets, cliquez avec le bouton droit sur le projet InvokePreLoanProcess et sélectionnez Exporter > Fichier WAR.
  2. Dans la zone de texte Module Web, saisissez InvokePreLoanProcess pour le nom du projet Java.
  3. Dans la zone de texte Destination, saisissez PreLoanProcess.warpour le nom du fichier, indiquez l’emplacement de votre fichier WAR, puis cliquez sur Terminer.

Déployez le fichier WAR sur le serveur d’applications J2EE hébergeant AEM Forms.

Déployez le fichier WAR sur le serveur d’applications J2EE sur lequel AEM Forms est déployé. Pour déployer le fichier WAR sur le serveur d’applications J2EE, copiez le fichier WAR du chemin d’exportation vers [AEM Forms Install]\Adobe\Adobe Experience Manager Forms\jboss\server\lc_turnkey\deploy.

REMARQUE

si AEM Forms n’est pas déployé sur JBoss, vous devez déployer le fichier WAR en conformité avec le serveur d’applications J2EE hébergeant AEM Forms.

Testez votre application Web

Après avoir déployé l’application Web, vous pouvez la tester à l’aide d’un navigateur Web. En supposant que vous utilisiez le même ordinateur qui héberge AEM Forms, vous pouvez spécifier l’URL suivante :

  • http://localhost:8080/PreLoanProcess/index.html

    Saisissez des valeurs dans les champs de formulaire HTML, puis cliquez sur le bouton Envoyer la demande. Si des problèmes se produisent, consultez le fichier journal du serveur d’applications J2EE.

    REMARQUE

    Pour confirmer que l’application Java a appelé le processus, début Workspace et accepté le prêt.

Création d'une application Web ASP.NET qui appelle un processus de longue durée axé sur l'humain

Vous pouvez créer une application ASP.NET qui appelle le processus FirstAppSolution/PreLoanProcess. Pour appeler ce processus à partir d'une application ASP.NET, utilisez les services Web. (Voir Appel d’AEM Forms à l’aide des services Web.)

L'illustration suivante montre une application cliente ASP.NET qui obtient des données d'un utilisateur final. Les données sont placées dans une source de données XML et envoyées au processus FirstAppSolution/PreLoanProcess lorsque l’utilisateur clique sur le bouton Envoyer la demande.

Notez qu’une fois le processus appelé, une valeur d’identificateur d’appel s’affiche. Une valeur d’identifiant d’appel est créée dans le cadre d’un enregistrement qui effectue le suivi de l’état du processus de longue durée.

L'application ASP.NET exécute les tâches suivantes :

  • Récupère les valeurs saisies par l’utilisateur dans la page Web.
  • Crée de manière dynamique une source de données XML transmise au * PremierAppSolution/PreLoanProcess *. Les trois valeurs sont spécifiées dans la source de données XML.
  • Appelle le processus FirstAppSolution/PreLoanProcess en utilisant les services Web.
  • Renvoie la valeur de l’identifiant d’appel et l’état de l’opération de longue durée au navigateur Web client.

Résumé des étapes

Pour créer une application ASP.NET capable d'appeler le processus FirstAppSolution/PreLoanProcess, effectuez les étapes suivantes :

  1. Créez une application Web ASP.NET.
  2. Créez une page ASP qui appelle FirstAppSolution/PreLoanProcess.
  3. Exécutez l'application ASP.NET.

Créer une application Web ASP.NET

Créez une Application web Microsoft .NET C# ASP.NET. L'illustration suivante montre le contenu du projet ASP.NET nommé InvokePreLoanProcess.

Avis sous Références du service, il y a deux éléments. Le premier élément est nommé* JobManager*. Cette référence permet à l'application ASP.NET d'appeler le service Job Manager. Ce service renvoie des informations sur l’état d’un processus de longue durée. Par exemple, si le processus est en cours d’exécution, ce service renvoie une valeur numérique qui indique que le processus est en cours d’exécution. La seconde référence est appelée PreLoanProcess. Cette référence de service représente la référence au processus FirstAppSolution/PreLoanProcess. Une fois que vous avez créé une référence de service, les types de données associés au service AEM Forms peuvent être utilisés dans votre projet .NET.

Créez un projet ASP.NET :

  1. Début Microsoft Visual Studio 2008.
  2. Dans le menu Fichier, sélectionnez Nouveau, Site Web.
  3. Dans la liste Modèles, sélectionnez Site Web ASP.NET.
  4. Dans la zone Emplacement, sélectionnez un emplacement pour votre projet. Nommez votre projet InvokePreLoanProcess.
  5. Dans la zone Langage, sélectionnez Visual C#
  6. Cliquez sur OK.

Ajouter les références de service :

  1. Dans le menu Projet, sélectionnez Ajouter le service de référence.

  2. Dans la boîte de dialogue Adresse, spécifiez le fichier WSDL au service Job Manager.

     https://hiro-xp:8080/soap/services/JobManager?WSDL&lc_version=9.0.1
    
  3. Dans le champ Espace de nommage, saisissez JobManager.

  4. Cliquez sur Aller puis sur OK.

  5. Dans le menu Projet, sélectionnez Ajouter le service de référence.

  6. Dans la boîte de dialogue Adresse, spécifiez le fichier WSDL dans le processus FirstAppSolution/PreLoanProcess.

     https://hiro-xp:8080/soap/services/FirstAppSolution/PreLoanProcess?WSDL&lc_version=9.0.1
    
  7. Dans le champ Espace de nommage, saisissez PreLoanProcess.

  8. Cliquez sur Aller puis sur OK.

REMARQUE

Remplacez hiro-xp par l’adresse IP du serveur d’applications J2EE hébergeant AEM Forms. L’option lc_version garantit que la fonctionnalité AEM Forms, telle que MTOM, est disponible. Sans spécifier l’option lc_version, vous ne pouvez pas appeler AEM Forms à l’aide de MTOM. (Voir Appeler AEM Forms à l’aide de MTOM.)

Créer une page ASP qui appelle FirstAppSolution/PreLoanProcess

Dans le projet ASP.NET, ajoutez un formulaire Web (un fichier ASPX) qui est responsable de l'affichage d'une page HTML au demandeur du prêt. Le formulaire Web est basé sur une classe dérivée de System.Web.UI.Page. La logique d'application C# qui appelle FirstAppSolution/PreLoanProcess se trouve dans la méthode Button1_Click (ce bouton représente le bouton Envoyer l'application).

L'illustration suivante montre l'application ASP.NET

Le tableau suivant liste les contrôles qui font partie de cette application ASP.NET.

Nom du contrôle

Description

TextBoxName

Indique le prénom et le nom du client.

TextBoxPhone

Indique le téléphone ou l’adresse électronique du client.

TextBoxAmount

Indique le montant du prêt.

Button1

Représente le bouton Envoyer la demande.

LabelJobID

Contrôle Label qui spécifie la valeur de l’identifiant d’appel.

LabelStatus

Contrôle Label qui spécifie la valeur de l’état de la tâche. Cette valeur est récupérée en appelant le service Job Manager.

La logique d'application qui fait partie de l'application ASP.NET doit créer dynamiquement une source de données XML à transmettre au processus FirstAppSolution/PreLoanProcess. Les valeurs que le demandeur a entrées dans la page HTML doivent être spécifiées dans la source de données XML. Ces valeurs de données sont fusionnées dans le formulaire lorsque le formulaire est affiché dans Workspace. Les classes situées dans l'espace de nommage System.Xml sont utilisées pour créer la source de données XML.

Lors de l'appel d'un processus qui requiert des données XML d'une application ASP.NET, vous pouvez utiliser un type de données XML. Autrement dit, vous ne pouvez pas transmettre une instance System.Xml.XmlDocument au processus. Le nom qualifié complet de cette instance XML à transmettre au processus est InvokePreLoanProcess.PreLoanProcess.XML. Convertissez l'instance System.Xml.XmlDocument en InvokePreLoanProcess.PreLoanProcess.XML. Vous pouvez exécuter cette tâche en utilisant le code suivant.

 //Create the XML to pass to the FirstAppSolution/PreLoanProcess process 
 XmlDocument myXML = CreateXML(userName, phone, amount); 
      
 //Convert the XML to a InvokePreLoanProcess.PreLoanProcess.XML instance 
 StringWriter sw = new StringWriter(); 
 XmlTextWriter xw = new XmlTextWriter(sw); 
 myXML.WriteTo(xw); 
  
 InvokePreLoanProcess.PreLoanProcess.XML inXML = new XML(); 
 inXML.document = sw.ToString();

Pour créer une page ASP qui appelle le processus FirstAppSolution/PreLoanProcess, effectuez les tâches suivantes dans la méthode Button1_Click :

  1. Créez un objet FirstAppSolution_PreLoanProcessClient en utilisant son constructeur par défaut.

  2. Créez un objet FirstAppSolution_PreLoanProcessClient.Endpoint.Address en utilisant le constructeur System.ServiceModel.EndpointAddress. Transférez une valeur de chaîne qui spécifie le WSDL au service AEM Forms et le type de codage :

     https://hiro-xp:8080/soap/services/FirstAppSolution/PreLoanProcess?blob=mtom
    

    Vous n'avez pas besoin d'utiliser l'attribut lc_version. Cet attribut est utilisé lorsque vous créez une référence de service. Veillez toutefois à spécifier ?blob=mtom.

    REMARQUE

    Remplacez hiro-xp* par l’adresse IP du serveur d’applications J2EE hébergeant AEM Forms. *

  3. Créez un objet System.ServiceModel.BasicHttpBinding en obtenant la valeur du membre de données FirstAppSolution_PreLoanProcessClient.Endpoint.Binding. Convertissez la valeur de retour en BasicHttpBinding.

  4. Définissez le membre de données System.ServiceModel.BasicHttpBinding de l'objet MessageEncoding sur WSMessageEncoding.Mtom. Cette valeur garantit l’utilisation de MTOM.

  5. Activez l’authentification HTTP de base en exécutant les tâches suivantes :

    • Affectez le nom d’utilisateur AEM forms au membre de données FirstAppSolution_PreLoanProcessClient.ClientCredentials.UserName.UserName.
    • Affectez la valeur de mot de passe correspondante au membre de données FirstAppSolution_PreLoanProcessClient.ClientCredentials.UserName.Password.
    • Affectez la valeur constante HttpClientCredentialType.Basic au membre de données BasicHttpBindingSecurity.Transport.ClientCredentialType.
    • Affectez la valeur constante BasicHttpSecurityMode.TransportCredentialOnly au membre de données BasicHttpBindingSecurity.Security.Mode.

    L'exemple de code suivant montre ces tâches.

     //Enable BASIC HTTP authentication 
     BasicHttpBinding b = (BasicHttpBinding)mortgageClient.Endpoint.Binding; 
     b.MessageEncoding = WSMessageEncoding.Mtom; 
     mortgageClient.ClientCredentials.UserName.UserName = "administrator"; 
     mortgageClient.ClientCredentials.UserName.Password = "password"; 
     b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; 
     b.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly; 
     b.MaxReceivedMessageSize = 2000000; 
     b.MaxBufferSize = 2000000; 
     b.ReaderQuotas.MaxArrayLength = 2000000;
    
  6. Récupérez les valeurs de nom, de téléphone et de montant saisies par l’utilisateur dans la page Web. Utilisez ces valeurs pour créer de manière dynamique une source de données XML envoyée au processus FirstAppSolution/PreLoanProcess. Créez un System.Xml.XmlDocument qui représente la source de données XML à transmettre au processus (cette logique d'application est illustrée dans l'exemple de code suivant).

  7. Convertissez l'instance System.Xml.XmlDocument en InvokePreLoanProcess.PreLoanProcess.XML (cette logique d'application est illustrée dans l'exemple de code suivant).

  8. Appelez le processus FirstAppSolution/PreLoanProcess en appelant la méthode FirstAppSolution_PreLoanProcessClient de l’objet invoke_Async. Cette méthode renvoie une valeur de chaîne qui représente la valeur de l’identifiant d’appel du processus de longue durée.

  9. Créez un JobManagerClient en utilisant son constructeur. (Vérifiez que vous avez défini une référence de service au service Job Manager.)

  10. Répétez les étapes 1 à 5. Spécifiez l’URL suivante pour l’étape 2 : https://hiro-xp:8080/soap/services/JobManager?blob=mtom.

  11. Créez un objet JobId en utilisant son constructeur.

  12. Définissez le membre de données id de l'objet JobId avec la valeur renvoyée de la méthode FirstAppSolution_PreLoanProcessClient de l'objet invoke_Async.

  13. Affectez la valeur value true au membre de données persistent de l’objet JobId.

  14. Créez un objet JobStatus en appelant la méthode JobManagerService de l'objet getStatus et en transmettant l'objet JobId.

  15. Obtenez la valeur d’état en récupérant la valeur du membre de données statusCode de l’objet JobStatus.

  16. Affectez la valeur d’identificateur d’appel au champ LabelJobID.Text.

  17. Affectez la valeur d’état au champ LabelStatus.Text.

Début rapide : Appel d’un processus de longue durée à l’aide de l’API du service Web

L'exemple de code C# suivant appelle le processus FirstAppSolution/PreLoanProcess.

 ???/** 
     * Ensure that you create a .NET project that uses  
     * MS Visual Studio 2008 and version 3.5 of the .NET 
     * framework. This is required to invoke a  
     * AEM Forms service using MTOM. 
      
  
 using System; 
 using System.Collections; 
 using System.Configuration; 
 using System.Data; 
 using System.Linq; 
 using System.Web; 
 using System.ServiceModel; 
 using System.Web.Security; 
 using System.Web.UI; 
 using System.Web.UI.HtmlControls; 
 using System.Web.UI.WebControls; 
 using System.Web.UI.WebControls.WebParts; 
 using System.Xml.Linq; 
 using System.Xml; 
 using System.IO; 
  
 //A reference to FirstAppSolution/PreLoanProcess 
 using InvokePreLoanProcess.PreLoanProcess; 
  
 //A reference to JobManager service 
 using InvokePreLoanProcess.JobManager; 
  
  
 namespace InvokePreLoanProcess 
 { 
        public partial class _Default : System.Web.UI.Page 
        { 
            //This method is called when the Submit Application button is  
            //Clicked 
            protected void Button1_Click(object sender, EventArgs e) 
            { 
                //Create a FirstAppSolution_PreLoanProcessClient object 
                FirstAppSolution_PreLoanProcessClient mortgageClient = new FirstAppSolution_PreLoanProcessClient(); 
                mortgageClient.Endpoint.Address = new System.ServiceModel.EndpointAddress("https://hiro-xp:8080/soap/services/FirstAppSolution/PreLoanProcess?blob=mtom"); 
  
                //Enable BASIC HTTP authentication 
                BasicHttpBinding b = (BasicHttpBinding)mortgageClient.Endpoint.Binding; 
                b.MessageEncoding = WSMessageEncoding.Mtom; 
                mortgageClient.ClientCredentials.UserName.UserName = "administrator"; 
                mortgageClient.ClientCredentials.UserName.Password = "password"; 
                b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; 
                b.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly; 
                b.MaxReceivedMessageSize = 2000000; 
                b.MaxBufferSize = 2000000; 
                b.ReaderQuotas.MaxArrayLength = 2000000; 
      
                //Retrieve values that user entered into the web page 
                String userName = TextBoxName.Text; 
                String phone = TextBoxPhone.Text; 
                String amount = TextBoxAmount.Text; 
  
                //Create the XML to pass to the FirstAppSolution/PreLoanProcess process 
                XmlDocument myXML = CreateXML(userName, phone, amount); 
      
                StringWriter sw = new StringWriter(); 
                XmlTextWriter xw = new XmlTextWriter(sw); 
                myXML.WriteTo(xw); 
  
                InvokePreLoanProcess.PreLoanProcess.XML inXML = new XML(); 
                inXML.document = sw.ToString();  
  
                //INvoke the FirstAppSolution/PreLoanProcess process 
                String invocationID =  mortgageClient.invoke_Async(inXML); 
  
                //Create a JobManagerClient object to obtain the status of the long-lived operation 
                JobManagerClient jobManager = new JobManagerClient(); 
                jobManager.Endpoint.Address = new System.ServiceModel.EndpointAddress("https://hiro-xp:8080/soap/services/JobManager?blob=mtom"); 
  
                //Enable BASIC HTTP authentication 
                BasicHttpBinding b1 = (BasicHttpBinding)jobManager.Endpoint.Binding; 
                b1.MessageEncoding = WSMessageEncoding.Mtom; 
                jobManager.ClientCredentials.UserName.UserName = "administrator"; 
                jobManager.ClientCredentials.UserName.Password = "password"; 
                b1.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; 
                b1.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly; 
                b1.MaxReceivedMessageSize = 2000000; 
                b1.MaxBufferSize = 2000000; 
                b1.ReaderQuotas.MaxArrayLength = 2000000; 
  
  
                //Create a JobID object that represents the status of the  
                //long-lived operation 
                JobId jobId = new JobId(); 
                jobId.id = invocationID; 
                jobId.persistent = true; 
                JobStatus jobStatus = jobManager.getStatus(jobId); 
                System.Int16 val2 = jobStatus.statusCode; 
                LabelJobID.Text = "The job status identifier value is " + invocationID;   
                LabelStatus.Text = "The status of the long-lived operation is " + getJobDescription(val2);  
      
            } 
  
            private static XmlDocument CreateXML(String name, String phone, String amount) 
            { 
                //This method dynamically creates a DDX document  
                //to pass to the FirstAppSolution/PreLoanProcess process 
                XmlDocument xmlDoc = new XmlDocument(); 
  
                //Create the root element and append it to the XML DOM         
                System.Xml.XmlElement root = xmlDoc.CreateElement("LoanApp"); 
                xmlDoc.AppendChild(root); 
  
                //Create the Name element 
                XmlElement nameElement = xmlDoc.CreateElement("Name"); 
                nameElement.AppendChild(xmlDoc.CreateTextNode(name)); 
                root.AppendChild(nameElement); 
  
                //Create the LoanAmount element 
                XmlElement LoanAmount = xmlDoc.CreateElement("LoanAmount"); 
                LoanAmount.AppendChild(xmlDoc.CreateTextNode(amount)); 
                root.AppendChild(LoanAmount); 
  
                //Create the PhoneOrEmail element 
                XmlElement PhoneOrEmail = xmlDoc.CreateElement("PhoneOrEmail"); 
                PhoneOrEmail.AppendChild(xmlDoc.CreateTextNode(phone)); 
                root.AppendChild(PhoneOrEmail); 
  
                //Create the ApprovalStatus element 
                XmlElement ApprovalStatus = xmlDoc.CreateElement("ApprovalStatus"); 
                ApprovalStatus.AppendChild(xmlDoc.CreateTextNode("PENDING APPROVAL")); 
                root.AppendChild(ApprovalStatus); 
  
                //Return the XmlElement instance 
                return xmlDoc; 
            } 
  
  
            //Returns the String value of the Job Manager status code 
            private String getJobDescription(int val) 
            { 
                switch(val) 
                { 
                    case 0: 
                        return "JOB_STATUS_UNKNOWN"; 
      
                    case 1:  
                        return "JOB_STATUS_QUEUED"; 
  
                    case 2:  
                        return "JOB_STATUS_RUNNING"; 
  
                    case 3:  
                        return "JOB_STATUS_COMPLETED";   
      
                    case 4:  
                        return "JOB_STATUS_FAILED";  
  
                     case 5:  
                        return "JOB_STATUS_COMPLETED";  
      
                    case 6:  
                        return "JOB_STATUS_SUSPENDED"; 
      
                    case 7:  
                        return "JOB_STATUS_COMPLETE_REQUESTED"; 
      
                    case 8:  
                        return "JOB_STATUS_TERMINATE_REQUESTED"; 
  
                     case 9:  
                        return "JOB_STATUS_SUSPEND_REQUESTED"; 
  
                       case 10:  
                        return "JOB_STATUS_RESUME_REQUESTED"; 
                } 
  
                return ""; 
            } 
       } 
 } 
 
REMARQUE

Les valeurs situées dans la méthode définie par l’utilisateur getJobDescription correspondent aux valeurs renvoyées par le service Job Manager.

Exécution de l'application ASP.NET

Après avoir compilé et déployé votre application ASP.NET, vous pouvez l'exécuter à l'aide d'un navigateur Web. En supposant que le nom du projet ASP.NET soit InvokePreLoanProcess, spécifiez l'URL suivante dans un navigateur Web :

*http://localhost:1629/InvokePreLoanProcess/*Default.aspx

où localhost est le nom du serveur Web hébergeant le projet ASP.NET et 1629 est le numéro de port. Lorsque vous compilez et générez votre application ASP.NET, Microsoft Visual Studio la déploie automatiquement.

REMARQUE

Pour confirmer que l'application ASP.NET a appelé le processus, début Workspace et accepté le prêt.

Création d’une application cliente créée avec Flex qui appelle un processus de longue durée axé sur l’être humain

Vous pouvez créer une application cliente créée avec Flex pour appeler le processus FirstAppSolution/PreLoanProcess. Cette application utilise Remoting pour appeler le processus FirstAppSolution/PreLoanProcess. (Voir Appeler AEM Forms à l’aide de (obsolète pour les formulaires AEM) AEM Forms Remoting.)

L’illustration suivante présente une application cliente créée avec Flex pour collecter des données auprès d’un utilisateur final. Les données sont placées dans une source de données XML et envoyées au processus.

Notez qu’une fois le processus appelé, une valeur d’identificateur d’appel s’affiche. Une valeur d’identifiant d’appel est créée dans le cadre d’un enregistrement qui effectue le suivi de l’état du processus de longue durée.

L’application cliente générée avec Flex effectue les tâches suivantes :

  • Récupère les valeurs saisies par l’utilisateur dans la page Web.
  • Créez de manière dynamique une source de données XML transmise au processus FirstAppSolution/PreLoanProcess. Les trois valeurs sont spécifiées dans la source de données XML.
  • Appelle le processus FirstAppSolution/PreLoanProcess en utilisant Remoting.
  • Renvoie la valeur de l’identifiant d’appel du processus de longue durée.

Résumé des étapes

Pour créer une application cliente créée avec Flex qui peut appeler le processus FirstAppSolution/PreLoanProcess, effectuez les étapes suivantes :

  1. Début d'un nouveau projet Flex.

  2. Incluez le fichier adobe-remoting-provider.swc dans le chemin de classe de votre projet. (Voir Inclusion du fichier de bibliothèque Flex AEM Forms.)

  3. Créez une instance mx:RemoteObject par ActionScript ou MXML. (Voir Création d’une instance mx:RemoteObject).

  4. Configurez une instance ChannelSet pour communiquer avec AEM Forms et associez-la à l'instance mx:RemoteObject. (Voir Création d’un Canal à AEM Forms.)

  5. Appelez la méthode login de ChannelSet ou la méthode setCredentials du service pour spécifier la valeur d'identifiant utilisateur et le mot de passe. (Voir Utilisation de la connexion unique.)

  6. Créez la source de données XML à transmettre au processus FirstAppSolution/PreLoanProcess en créant une instance XML. (Cette logique d’application est illustrée dans l’exemple de code suivant.)

  7. Créez un objet de type Objet à l’aide de son constructeur. Affectez le code XML à l’objet en spécifiant le nom du paramètre d’entrée du processus, comme indiqué dans le code suivant :

     //Get the XML data to pass to the AEM Forms process 
     var xml:XML = createXML(); 
     var params:Object = new Object(); 
     params["formData"]=xml;
    
  8. Appelez le processus FirstAppSolution/PreLoanProcess en appelant la méthode mx:RemoteObject de l’instance invoke_Async. Transmettez le Object qui contient le paramètre d'entrée. (Voir Transmission des valeurs d’entrée.)

  9. Récupérez la valeur d’identification d’appel qui est renvoyée à partir d’un processus de longue durée, comme indiqué dans le code suivant :

     // Handles async call that invokes the long-lived process 
     private function resultHandler(event:ResultEvent):void 
     { 
     ji = event.result as JobId; 
     jobStatusDisplay.text = "Job Status ID: " + ji.jobId as String;  
     }
    

Appel d’un processus de longue durée à l’aide de Remoting

L'exemple de code Flex suivant appelle le processus FirstAppSolution/PreLoanProcess.

 <?xml version="1.0" encoding="utf-8"?> 
  
 <mx:Application  xmlns="*" backgroundColor="#FFFFFF"  
      creationComplete="initializeChannelSet();"> 
  
 <mx:Script> 
          <![CDATA[ 
  
             import mx.controls.Alert; 
             import mx.rpc.events.FaultEvent; 
             import mx.rpc.events.ResultEvent; 
             import flash.net.navigateToURL; 
             import mx.messaging.ChannelSet; 
             import mx.messaging.channels.AMFChannel; 
             import mx.collections.ArrayCollection; 
             import mx.rpc.livecycle.JobId; 
             import mx.rpc.livecycle.JobStatus; 
             import mx.rpc.livecycle.DocumentReference; 
             import mx.formatters.NumberFormatter; 
      
             // Holds the job ID returned by LC.JobManager 
             private var ji:JobId;   
      
             private function initializeChannelSet():void  
              { 
              var cs:ChannelSet= new ChannelSet();  
         cs.addChannel(new AMFChannel("remoting-amf", "https://hiro-xp:8080/remoting/messagebroker/amf"));  
         LC_MortgageApp.setCredentials("tblue", "password"); 
         LC_MortgageApp.channelSet = cs; 
              } 
  
            private function submitApplication():void 
             { 
             //Get the XML data to pass to the AEM Forms process 
             var xml:XML = createXML(); 
             var params:Object = new Object(); 
             params["formData"]=xml; 
             LC_MortgageApp.invoke_Async(params); 
             } 
  
             // Handles async call that invokes the long-lived process 
             private function resultHandler(event:ResultEvent):void 
             { 
                ji = event.result as JobId; 
                jobStatusDisplay.text = "Job Status ID: " + ji.jobId as String;  
             } 
  
             private function createXML():XML 
             { 
                //Calculate the Mortgage value to place in the XML data 
                var propertyPrice:String = txtAmount.text ;  
                var name:String = txtName.text ; 
                var phone:String = txtPhone.text ;;  
      
                var model:XML =  
  
                  <LoanApp> 
                           <Name>{name}</Name> 
                           <LoanAmount>{propertyPrice}</LoanAmount> 
                           <PhoneOrEmail>{phone}</PhoneOrEmail>  
                           <ApprovalStatus>PENDING APPROVAL</ApprovalStatus> 
                  </LoanApp> 
      
              return model; 
             } 
      
      
          ]]> 
       </mx:Script> 
      
       <!-- Declare the RemoteObject and set its destination to the mortgage-app remoting endpoint defined in AEM Forms. --> 
       <mx:RemoteObject id="LC_MortgageApp" destination="FirstAppSolution/PreLoanProcess" result="resultHandler(event);"> 
          <mx:method name="invoke_Async" result="resultHandler(event)"/> 
      </mx:RemoteObject> 
  
  
     <mx:Grid x="229" y="186"> 
         <mx:GridRow width="100%" height="100%"> 
             <mx:GridItem width="100%" height="100%"> 
                 <mx:Image> 
                     <mx:source>file:///D|/LiveCycle_9/FirstApp/financeCorpLogo.jpg</mx:source> 
                 </mx:Image> 
             </mx:GridItem> 
             <mx:GridItem width="100%" height="100%"> 
                 <mx:Label text="Flex Loan Application Page" fontSize="20"/> 
             </mx:GridItem> 
             <mx:GridItem width="100%" height="100%"> 
             </mx:GridItem> 
         </mx:GridRow> 
         <mx:GridRow width="100%" height="100%"> 
             <mx:GridItem width="100%" height="100%"> 
                 <mx:Label text="Name:" fontSize="12" fontWeight="bold"/> 
             </mx:GridItem> 
             <mx:GridItem width="100%" height="100%"> 
                 <mx:TextInput id="txtName"/> 
             </mx:GridItem> 
             <mx:GridItem width="100%" height="100%"> 
                 <mx:Button label="Submit Application" click="submitApplication()"/> 
             </mx:GridItem> 
         </mx:GridRow> 
         <mx:GridRow width="100%" height="100%"> 
             <mx:GridItem width="100%" height="100%"> 
                 <mx:Label text="Phone/Email:" fontSize="12" fontWeight="bold"/> 
             </mx:GridItem> 
             <mx:GridItem width="100%" height="100%"> 
                 <mx:TextInput id="txtPhone"/> 
             </mx:GridItem> 
             <mx:GridItem width="100%" height="100%"> 
             </mx:GridItem> 
         </mx:GridRow> 
         <mx:GridRow width="100%" height="100%"> 
             <mx:GridItem width="100%" height="100%"> 
                 <mx:Label text="Amount:" fontSize="12" fontWeight="bold"/> 
             </mx:GridItem> 
             <mx:GridItem width="100%" height="100%"> 
                 <mx:TextInput id="txtAmount"/> 
             </mx:GridItem> 
             <mx:GridItem width="100%" height="100%"> 
             </mx:GridItem> 
         </mx:GridRow> 
         <mx:GridRow width="100%" height="100%"> 
             <mx:GridItem width="100%" height="100%"> 
             </mx:GridItem> 
             <mx:GridItem width="100%" height="100%"> 
                 <mx:Label text="Label" id="jobStatusDisplay" enabled="true" fontSize="12" fontWeight="bold"/> 
             </mx:GridItem> 
             <mx:GridItem width="100%" height="100%"> 
             </mx:GridItem> 
         </mx:GridRow> 
     </mx:Grid> 
      
 </mx:Application> 
 

Sur cette page

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now