Richiamo di processi a lunga durata basati sull'uomo

È possibile invocare a livello di programmazione i processi longevi incentrati sull'uomo creati in Workbench utilizzando le seguenti applicazioni client:

Il processo di lunga durata richiamato è denominato FirstAppSolution/PreLoanProcess. È possibile creare questo processo seguendo l'esercitazione specificata in Creazione della prima applicazione AEM Forms .

Un processo incentrato sull’uomo implica un’attività a cui l’utente può rispondere utilizzando Workspace. Ad esempio, utilizzando Workbench è possibile creare un processo che consente a un manager bancario di approvare o rifiutare una richiesta di prestito. L'illustrazione seguente mostra il processo FirstAppSolution/PreLoanProcess.

Il processo* FirstAppSolution/PreLoanProcess* accetta un parametro di input denominato* formData* il cui tipo di dati è XML. I dati XML vengono uniti con una struttura del modulo denominata PreLoanForm.xdp. Nell'illustrazione seguente è illustrato un modulo che rappresenta un'attività assegnata a un utente per approvare o rifiutare una richiesta di prestito. L’utente approva o nega l’applicazione utilizzando Workspace. L’utente di Workspace può approvare la richiesta di prestito facendo clic sul pulsante Approva illustrato nell’illustrazione seguente. Analogamente, l'utente può negare la richiesta di prestito facendo clic sul pulsante di rifiuto.

Un processo longevo viene richiamato in modo asincrono e non può essere invocato in modo sincrono a causa dei seguenti fattori:

  • Un processo può durare un periodo di tempo significativo.
  • Un processo può estendersi oltre i limiti organizzativi.
  • Per completare un processo, è necessario un input esterno. Si consideri, ad esempio, una situazione in cui un modulo viene inviato a un manager che non è in ufficio. In questa situazione, il processo non è completo finché il manager non restituisce e compila il modulo.

Quando viene richiamato un processo di lunga durata, AEM Forms crea un valore identificativo di chiamata come parte della creazione di un record. Il record tiene traccia dello stato del processo di lunga durata e viene memorizzato nel database AEM Forms . Utilizzando il valore dell’identificatore di chiamata, potete tenere traccia dello stato del processo di lunga durata. Inoltre, potete utilizzare il valore dell'identificatore di chiamata del processo per eseguire operazioni di Process Manager, ad esempio la terminazione di un'istanza di processo in esecuzione.

NOTA

AEM Forms non crea un valore di identificatore di chiamata o un record quando viene richiamato un processo di breve durata.

Il processo FirstAppSolution/PreLoanProcess viene invocato quando un richiedente invia una domanda, rappresentata come dati XML. Il nome della variabile del processo di input è formData e il relativo tipo di dati è XML. Ai fini di questa discussione, si supponga che i seguenti dati XML siano utilizzati come input per il processo 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>

I dati XML passati a un processo devono corrispondere ai campi presenti nel modulo utilizzato nel processo. In caso contrario, i dati non vengono visualizzati all'interno del modulo. Tutte le applicazioni che richiamano il processo FirstAppSolution/PreLoanProcess devono trasmettere questa origine dati XML. Le applicazioni create in Invoking Human-Centric Long-Lived Processes creano dinamicamente l'origine dati XML dai valori immessi da un utente in un client Web.

Utilizzando un'applicazione client, è possibile inviare la *FirstAppSolution/PreLoanProcess elaborare i dati XML richiesti. Un processo di lunga durata restituisce come valore restituito un identificatore di chiamata. L'illustrazione seguente mostra le applicazioni client che richiamano il processo FirstAppSolution/PreLoanProcess *a lunga durata. Le applicazioni client inviano dati XML e restituiscono un valore di stringa che rappresenta il valore dell'identificatore di chiamata.

Consulta anche

Creazione di un'applicazione Web Java che richiama un processo longevo incentrato sull'uomo

Creazione di un'applicazione Web ASP.NET che richiama un processo longevo incentrato sull'uomo

Creazione di un'applicazione client integrata con Flex che richiama un processo longevo incentrato sull'uomo

Creazione di un'applicazione Web Java che richiama un processo longevo incentrato sull'uomo

È possibile creare un'applicazione basata su Web che utilizza un servlet Java per richiamare il processo FirstAppSolution/PreLoanProcess. Per richiamare questo processo da un servlet Java, utilizzate l'API di vocazione all'interno del servlet Java. (Vedere Chiamata AEM Forms tramite Java API.)

L'illustrazione seguente mostra un'applicazione client basata sul Web che pubblica nome, telefono (o e-mail) e valori di importo. Questi valori vengono inviati al servlet Java quando l'utente fa clic sul pulsante Invia applicazione.

Il servlet Java esegue le seguenti attività:

  • Recupera i valori inviati dalla pagina HTML al servlet Java.
  • Crea dinamicamente un'origine dati XML da trasmettere al processo* FirstAppSolution/PreLoanProcess *. I valori di nome, telefono (o e-mail) e importo sono specificati nell'origine dati XML.
  • Richiama il processo FirstAppSolution/PreLoanProcess utilizzando l'API AEM Forms Invocation .
  • Restituisce il valore dell'identificatore di chiamata al browser Web del client.

Riepilogo dei passaggi

Per creare un'applicazione Java basata su Web che richiama il processo FirstAppSolution/PreLoanProcess, eseguire le operazioni seguenti:

  1. Creare un progetto Web.
  2. Creare una logica di applicazione Java per il servlet.
  3. Creare la pagina Web per l’applicazione Web
  4. Creare un pacchetto dell'applicazione Web in un file WAR.
  5. Distribuire il file WAR sul server applicazione J2EE che ospita AEM Forms.
  6. Eseguite il test dell'applicazione Web.
NOTA

Alcuni di questi passaggi dipendono dall’applicazione J2EE da cui AEM Forms è distribuito. Ad esempio, il metodo utilizzato per distribuire un file WAR dipende dal server applicazione J2EE in uso. Si presume che AEM Forms sia implementato su JBoss®.

Creare un progetto Web

Il primo passo per creare un'applicazione Web è creare un progetto Web. L'IDE Java su cui si basa il presente documento è Eclipse 3.3. Utilizzando Eclipse IDE, create un progetto Web e aggiungete i file JAR richiesti al progetto. Aggiungete una pagina HTML denominata *index.html *e un servlet Java al progetto.

Il seguente elenco specifica i file JAR da includere nel progetto Web:

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

Per la posizione di questi file JAR, vedere Inclusione file libreria Java AEM Forms.

NOTA

Il file J2EE.jar definisce i tipi di dati utilizzati da un servlet Java. È possibile ottenere questo file JAR dal server applicazioni J2EE su cui AEM Forms è distribuito.

Creazione di un progetto Web

  1. Avviare Eclipse e fare clic su File > Nuovo progetto.
  2. Nella finestra di dialogo Nuovo progetto, selezionare Web > Progetto Web dinamico.
  3. Digitare InvokePreLoanProcess per il nome del progetto, quindi fare clic su Fine.

Aggiungere i file JAR richiesti al progetto

  1. Dalla finestra Esplora progetti, fare clic con il pulsante destro del mouse sul progetto InvokePreLoanProcess e selezionare Proprietà.
  2. Fare clic su Percorso build Java, quindi fare clic sulla scheda Librerie.
  3. Fare clic sul pulsante Aggiungi JAR esterni e individuare i file JAR da includere.

Aggiungere un servlet Java al progetto

  1. Dalla finestra Esplora progetti, fare clic con il pulsante destro del mouse sul progetto InvokePreLoanProcess e selezionare Nuovo > Altro.
  2. Espandere la cartella Web, selezionare Servlet, quindi fare clic su Next.
  3. Nella finestra di dialogo Crea servlet, digitare SubmitXML per il nome del servlet, quindi fare clic su Fine.

Aggiungere una pagina HTML al progetto

  1. Dalla finestra Esplora progetti, fare clic con il pulsante destro del mouse sul progetto InvokePreLoanProcess e selezionare Nuovo > Altro.
  2. Espandete la cartella Web, selezionate HTML e fate clic su Next.
  3. Nella finestra di dialogo Nuovo HTML, digitare index.html per il nome del file, quindi fare clic su Fine.
NOTA

Per informazioni sulla creazione di contenuto HTML che richiama il servlet Java SubmitXML, vedere Creare la pagina Web per l'applicazione Web.

Crea logica dell'applicazione Java per il servlet

Creare una logica di applicazione Java che richiama il processo FirstAppSolution/PreLoanProcess dall'interno del servlet Java. Il codice seguente mostra la sintassi del SubmitXML Servlet Java:

     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 
             }

Normalmente, il codice client non viene inserito all'interno del metodo doGet o doPost di un servlet Java. Una procedura di programmazione migliore consiste nell'inserire questo codice all'interno di una classe separata. Create quindi un'istanza della classe dall'interno del metodo doPost (o del metodo doGet) e richiamate i metodi appropriati. Tuttavia, per la brevità del codice, gli esempi di codice vengono mantenuti al minimo e inseriti nel metodo doPost.

Per richiamare il processo FirstAppSolution/PreLoanProcess utilizzando l'API di vocazione, eseguire le operazioni seguenti:

  1. Includete file JAR client, ad esempio adobe-livecycle-client.jar, nel percorso di classe del progetto Java. Per informazioni sulla posizione di questi file, vedere Inclusione file libreria Java AEM Forms.

  2. Recuperate i valori di nome, telefono e importo inviati dalla pagina HTML. Utilizzare questi valori per creare in modo dinamico un'origine dati XML inviata al processo FirstAppSolution/PreLoanProcess. È possibile utilizzare le classi org.w3c.dom per creare l'origine dati XML (la logica dell'applicazione è illustrata nell'esempio di codice seguente).

  3. Creare un oggetto ServiceClientFactory che contiene le proprietà di connessione. (Vedere Impostazione delle proprietà di connessione.)

  4. Creare un oggetto ServiceClient utilizzando il relativo costruttore e passando l'oggetto ServiceClientFactory. Un oggetto ServiceClient consente di richiamare un'operazione di servizio. Gestisce attività quali l'individuazione, l'invio e il routing delle richieste di chiamata.

  5. Creare un oggetto java.util.HashMap utilizzando il relativo costruttore.

  6. Richiamare il metodo java.util.HashMap dell'oggetto put affinché ogni parametro di input passi al processo longevo. Accertatevi di specificare il nome dei parametri di input del processo. Poiché il processo FirstAppSolution/PreLoanProcess richiede un parametro di input di tipo XML (denominato formData), è necessario richiamare il metodo put solo una volta.

     //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. Creare un oggetto InvocationRequest richiamando il metodo ServiceClientFactory dell'oggetto createInvocationRequest e passando i seguenti valori:

    • Un valore di stringa che specifica il nome del processo longevo da richiamare. Per richiamare il processo FirstAppSolution/PreLoanProcess, specificare FirstAppSolution/PreLoanProcess.
    • Un valore di stringa che rappresenta il nome dell'operazione di processo. Il nome dell'operazione di processo di lunga durata è invoke.
    • L'oggetto java.util.HashMap che contiene i valori dei parametri richiesti dall'operazione del servizio.
    • Un valore booleano che specifica false, che crea una richiesta asincrona (questo valore è applicabile per richiamare un processo di lunga durata).
    NOTA

    Un processo di breve durata può essere invocato trasmettendo il valore true come quarto parametro del metodo createInvocationRequest. Passando il valore true si crea una richiesta sincrona.

  8. Inviate la richiesta di chiamata a AEM Forms richiamando il metodo invoke dell'oggetto InvocationRequest e passando l'oggetto ServiceClient. Il metodo invoke restituisce un oggetto InvocationReponse.

  9. Un processo di lunga durata restituisce un valore di stringa che rappresenta un valore identificativo della chiamata. Recuperare questo valore richiamando il metodo InvocationReponse dell'oggetto getInvocationId.

     //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. Scrivete il valore di identificazione della chiamata nel browser Web del client. Potete utilizzare un'istanza java.io.PrintWriter per scrivere questo valore nel browser Web del client.

Avvio rapido: Richiamo di un processo di lunga durata tramite l'API di incitamento

Il seguente esempio di codice Java rappresenta il servlet Java che richiama il processo 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; 
          } 
         }

Creare la pagina Web per l'applicazione Web

La pagina* index.html *web fornisce un punto di ingresso al servlet Java che richiama il processo FirstAppSolution/PreLoanProcess. Questa pagina Web è un modulo HTML di base che contiene un modulo HTML e un pulsante di invio. Quando l'utente fa clic sul pulsante di invio, i dati del modulo vengono inviati al servlet Java SubmitXML.

Il servlet Java acquisisce i dati inviati dalla pagina HTML utilizzando il seguente codice Java:

 //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");

Il seguente codice HTML rappresenta il file index.html creato durante l'impostazione dell'ambiente di sviluppo. (Vedere Creare un progetto 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>

Creare il pacchetto dell'applicazione Web in un file WAR

Per distribuire il servlet Java che richiama il processo FirstAppSolution/PreLoanProcess, creare un pacchetto dell'applicazione Web in un file WAR. Assicurati che nel file WAR siano inclusi anche i file JAR esterni da cui dipende la logica aziendale del componente, ad esempio adobe-livecycle-client.jar e adobe-usermanager-client.jar.

L'illustrazione seguente mostra il contenuto del progetto Eclipse, che viene compresso in un file WAR.

NOTA

Nell'illustrazione precedente, il file JPG può essere sostituito da qualsiasi file immagine JPG.

Creare un pacchetto di un'applicazione Web in un file WAR:

  1. Dalla finestra Esplora progetti, fare clic con il pulsante destro del mouse sul progetto InvokePreLoanProcess e selezionare Esporta > File WAR.
  2. Nella casella di testo Modulo Web, digitare InvokePreLoanProcess per il nome del progetto Java.
  3. Nella casella di testo Destinazione, digitare PreLoanProcess.warper il nome del file specificare il percorso del file WAR, quindi fare clic su Fine.

Distribuire il file WAR sul server applicazioni J2EE che ospita AEM Forms

Distribuire il file WAR sul server applicazioni J2EE su cui è distribuito AEM Forms. Per distribuire il file WAR al server applicazione J2EE, copiate il file WAR dal percorso di esportazione a [AEM Forms Install]\Adobe\Adobe Experience Manager Forms\jboss\server\lc_turnkey\deploy.

NOTA

se AEM Forms non è distribuito su JBoss, è necessario distribuire il file WAR in conformità con il server applicazione J2EE che ospita AEM Forms.

Verificare l'applicazione Web

Dopo aver implementato l'applicazione Web, potete verificarla utilizzando un browser Web. Presupponendo di utilizzare lo stesso computer in cui è installato AEM Forms, potete specificare il seguente URL:

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

    Immettete i valori nei campi del modulo HTML e fate clic sul pulsante Invia applicazione. Se si verificano dei problemi, consultare il file di registro del server applicazione J2EE.

    NOTA

    Per confermare che l'applicazione Java ha richiamato il processo, avviare Workspace e accettare il prestito.

Creazione di un'applicazione Web ASP.NET che richiama un processo longevo incentrato sull'uomo

È possibile creare un'applicazione ASP.NET che richiama il processo FirstAppSolution/PreLoanProcess. Per richiamare questo processo da un'applicazione ASP.NET, utilizzare i servizi Web. (Vedere Chiamata AEM Forms tramite servizi Web.)

Nell'illustrazione seguente è illustrata un'applicazione client ASP.NET che ottiene dati da un utente finale. I dati vengono inseriti in un'origine dati XML e inviati al processo FirstAppSolution/PreLoanProcess quando l'utente fa clic sul pulsante Invia applicazione.

Una volta richiamato il processo, viene visualizzato un valore di identificatore di chiamata. Il valore dell’identificatore di chiamata viene creato come parte di un record che tiene traccia dello stato del processo di lunga durata.

L'applicazione ASP.NET esegue le seguenti attività:

  • Recupera i valori immessi dall'utente nella pagina Web.
  • Crea in modo dinamico un'origine dati XML passata al processo* FirstAppSolution/PreLoanProcess *process. I tre valori sono specificati nell'origine dati XML.
  • Richiama il processo* FirstAppSolution/PreLoanProcess *utilizzando i servizi Web.
  • Restituisce il valore dell'identificatore di chiamata e lo stato dell'operazione di lunga durata al browser Web del client.

Riepilogo dei passaggi

Per creare un'applicazione ASP.NET in grado di richiamare il processo FirstAppSolution/PreLoanProcess, effettuare le seguenti operazioni:

  1. Creare un'applicazione Web ASP.NET.
  2. Creare una pagina ASP che richiama FirstAppSolution/PreLoanProcess.
  3. Eseguire l'applicazione ASP.NET.

Creare un'applicazione Web ASP.NET

Creare un'applicazione Web Microsoft .NET C# ASP.NET. L'illustrazione seguente mostra il contenuto del progetto ASP.NET denominato InvokePreLoanProcess.

In Riferimenti ai servizi sono disponibili due elementi. Il primo elemento è denominato* JobManager*. Questo riferimento consente all'applicazione ASP.NET di richiamare il servizio Job Manager. Questo servizio restituisce informazioni sullo stato di un processo di lunga durata. Ad esempio, se il processo è in esecuzione, il servizio restituisce un valore numerico che specifica che il processo è in esecuzione. Il secondo riferimento è denominato PreLoanProcess. Questo riferimento al servizio rappresenta il riferimento al processo* FirstAppSolution/PreLoanProcess *. Dopo aver creato un riferimento a un servizio, i tipi di dati associati al servizio AEM Forms sono disponibili per l'utilizzo all'interno del progetto .NET.

Creare un progetto ASP.NET:

  1. Avviare Microsoft Visual Studio 2008.
  2. Dal menu File, selezionare Nuovo, Sito Web.
  3. Nell'elenco Modelli, selezionare Sito Web ASP.NET.
  4. Nella casella Posizione, selezionare una posizione per il progetto. Denominate il progetto InvokePreLoanProcess.
  5. Nella casella Lingua selezionare Visual C#
  6. Fai clic su OK.

Aggiungi riferimenti al servizio:

  1. Nel menu Progetto, selezionare Aggiungi riferimento servizio.

  2. Nella finestra di dialogo Address, specificare il WSDL nel servizio Job Manager.

     https://hiro-xp:8080/soap/services/JobManager?WSDL&lc_version=9.0.1
    
  3. Nel campo Spazio dei nomi, digitare JobManager.

  4. Fare clic su Vai e quindi su OK.

  5. Nel menu Progetto, selezionare Aggiungi riferimento servizio.

  6. Nella finestra di dialogo Address, specificare il WSDL per il processo FirstAppSolution/PreLoanProcess.

     https://hiro-xp:8080/soap/services/FirstAppSolution/PreLoanProcess?WSDL&lc_version=9.0.1
    
  7. Nel campo Spazio dei nomi, digitare PreLoanProcess.

  8. Fare clic su Vai e quindi su OK.

NOTA

Sostituire hiro-xp con l'indirizzo IP del server applicazione J2EE che ospita AEM Forms. L'opzione lc_version garantisce la disponibilità funzionalità AEM Forms, come MTOM. Senza specificare l'opzione lc_version, non è possibile richiamare AEM Forms utilizzando MTOM. (Vedere Chiamata AEM Forms tramite MTOM.)

Creare una pagina ASP che richiama FirstAppSolution/PreLoanProcess

All'interno del progetto ASP.NET, aggiungere un modulo Web (un file ASPX) responsabile per la visualizzazione di una pagina HTML al richiedente del prestito. Il modulo Web si basa su una classe derivata da System.Web.UI.Page. La logica dell'applicazione C# richiamata da FirstAppSolution/PreLoanProcess si trova nel metodo Button1_Click (questo pulsante rappresenta il pulsante Invia applicazione).

Nell'illustrazione seguente è illustrata l'applicazione ASP.NET

Nella tabella seguente sono elencati i controlli che fanno parte di questa applicazione ASP.NET.

Nome controllo

Descrizione

TextBoxName

Specifica il nome e il cognome del cliente.

TextBoxPhone

Specifica l'indirizzo e-mail del cliente.

TextBoxAmount

Specifica l'importo del prestito.

Pulsante1

Rappresenta il pulsante Invia applicazione.

LabelJobID

Un controllo Label che specifica il valore dell'identificatore di chiamata.

LabelStatus

Un controllo Label che specifica il valore dello stato del processo. Questo valore viene recuperato richiamando il servizio Job Manager.

La logica dell'applicazione che fa parte dell'applicazione ASP.NET deve creare in modo dinamico un'origine dati XML da passare al processo FirstAppSolution/PreLoanProcess. I valori immessi dal richiedente nella pagina HTML devono essere specificati all'interno dell'origine dati XML. Questi valori dati vengono uniti nel modulo quando il modulo viene visualizzato in Workspace. Le classi situate nello spazio dei nomi System.Xml vengono utilizzate per creare l'origine dati XML.

Quando si richiama un processo che richiede dati XML da un'applicazione ASP.NET, è possibile utilizzare un tipo di dati XML. In altre parole, non è possibile passare un'istanza System.Xml.XmlDocument al processo. Il nome completo dell'istanza XML da passare al processo è InvokePreLoanProcess.PreLoanProcess.XML. Convertite l'istanza System.Xml.XmlDocument in InvokePreLoanProcess.PreLoanProcess.XML. È possibile eseguire questa operazione utilizzando il seguente codice.

 //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();

Per creare una pagina ASP che richiama il processo FirstAppSolution/PreLoanProcess, eseguire le operazioni seguenti nel metodo Button1_Click:

  1. Creare un oggetto FirstAppSolution_PreLoanProcessClient utilizzando il relativo costruttore predefinito.

  2. Creare un oggetto FirstAppSolution_PreLoanProcessClient.Endpoint.Address utilizzando il costruttore System.ServiceModel.EndpointAddress. Passa un valore di stringa che specifica il WSDL al servizio AEM Forms e il tipo di codifica:

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

    Non è necessario utilizzare l'attributo lc_version. Questo attributo viene utilizzato quando create un riferimento a un servizio. Tuttavia, accertatevi di specificare ?blob=mtom.

    NOTA

    Sostituire hiro-xp* con l'indirizzo IP del server applicazione J2EE che ospita AEM Forms. *

  3. Creare un oggetto System.ServiceModel.BasicHttpBinding ottenendo il valore del membro di dati FirstAppSolution_PreLoanProcessClient.Endpoint.Binding. Inserite il valore restituito in BasicHttpBinding.

  4. Impostare il membro di dati System.ServiceModel.BasicHttpBinding dell'oggetto MessageEncoding su WSMessageEncoding.Mtom. Questo valore assicura che venga utilizzato MTOM.

  5. Abilitate l'autenticazione HTTP di base eseguendo le seguenti operazioni:

    • Assegnare il nome utente del modulo AEM al membro di dati FirstAppSolution_PreLoanProcessClient.ClientCredentials.UserName.UserName.
    • Assegnare il valore della password corrispondente al membro di dati FirstAppSolution_PreLoanProcessClient.ClientCredentials.UserName.Password.
    • Assegnare il valore costante HttpClientCredentialType.Basic al membro di dati BasicHttpBindingSecurity.Transport.ClientCredentialType.
    • Assegnare il valore costante BasicHttpSecurityMode.TransportCredentialOnly al membro di dati BasicHttpBindingSecurity.Security.Mode.

    L'esempio di codice seguente mostra queste attività.

     //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. Recuperate i valori di nome, telefono e importo immessi dall’utente nella pagina Web. Utilizzare questi valori per creare in modo dinamico un'origine dati XML inviata al processo FirstAppSolution/PreLoanProcess. Creare un System.Xml.XmlDocument che rappresenti l'origine dati XML da trasmettere al processo (la logica dell'applicazione è illustrata nell'esempio di codice seguente).

  7. Convertite l'istanza System.Xml.XmlDocument in InvokePreLoanProcess.PreLoanProcess.XML (la logica dell'applicazione è illustrata nell'esempio di codice seguente).

  8. Richiamare il processo FirstAppSolution/PreLoanProcess richiamando il metodo FirstAppSolution_PreLoanProcessClient dell'oggetto invoke_Async. Questo metodo restituisce un valore di stringa che rappresenta il valore dell’identificatore di chiamata del processo longevo.

  9. Create un JobManagerClient utilizzando il costruttore is. (Assicurarsi di aver impostato un riferimento al servizio Job Manager.)

  10. Ripetere i passaggi da 1 a 5. Specificate il seguente URL per il passaggio 2: https://hiro-xp:8080/soap/services/JobManager?blob=mtom.

  11. Creare un oggetto JobId utilizzando il relativo costruttore.

  12. Impostare il membro di dati JobId dell'oggetto id con il valore restituito dal metodo FirstAppSolution_PreLoanProcessClient dell'oggetto invoke_Async.

  13. Assegnare il valore value true al membro di dati JobId dell'oggetto persistent.

  14. Creare un oggetto JobStatus richiamando il metodo JobManagerService dell'oggetto getStatus e passando l'oggetto JobId.

  15. Ottenere il valore dello stato recuperando il valore del membro di dati JobStatus dell'oggetto statusCode.

  16. Assegnare il valore dell'identificatore di chiamata al campo LabelJobID.Text.

  17. Assegnare il valore di stato al campo LabelStatus.Text.

Avvio rapido: Richiamo di un processo di lunga durata tramite l'API del servizio Web

Il seguente esempio di codice C# richiama il processo 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 ""; 
            } 
       } 
 } 
 
NOTA

I valori che si trovano nel metodo getJobDescription definito dall'utente corrispondono ai valori restituiti dal servizio Job Manager.

Eseguire l'applicazione ASP.NET

Dopo aver compilato e implementato l'applicazione ASP.NET, è possibile eseguirla utilizzando un browser Web. Presupponendo che il nome del progetto ASP.NET sia InvokePreLoanProcess, specificate il seguente URL all'interno di un browser Web:

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

dove localhost è il nome del server Web che ospita il progetto ASP.NET e 1629 è il numero di porta. Quando si compila e si crea l'applicazione ASP.NET, Microsoft Visual Studio la distribuisce automaticamente.

NOTA

Per confermare che l'applicazione ASP.NET ha richiamato il processo, avviare Workspace e accettare il prestito.

Creazione di un'applicazione client integrata con Flex che richiama un processo longevo incentrato sull'uomo

È possibile creare un'applicazione client creata con Flex per richiamare il processo FirstAppSolution/PreLoanProcess. Questa applicazione utilizza Remoting per richiamare il processo FirstAppSolution/PreLoanProcess. (Vedere Richiamo AEM Forms utilizzando (obsoleto per AEM moduli) AEM Forms Remoting.)

L'illustrazione seguente mostra un'applicazione client creata con Flex che raccoglie dati da un utente finale. I dati vengono inseriti in un'origine dati XML e inviati al processo.

Una volta richiamato il processo, viene visualizzato un valore di identificatore di chiamata. Il valore dell’identificatore di chiamata viene creato come parte di un record che tiene traccia dello stato del processo di lunga durata.

L'applicazione client integrata con Flex esegue le seguenti attività:

  • Recupera i valori immessi dall'utente nella pagina Web.
  • Crea in modo dinamico un'origine dati XML passata al processo FirstAppSolution/PreLoanProcess. I tre valori sono specificati nell'origine dati XML.
  • Richiama il processo FirstAppSolution/PreLoanProcess utilizzando Remoting.
  • Restituisce il valore dell'identificatore di chiamata del processo longevo.

Riepilogo dei passaggi

Per creare un'applicazione client integrata con Flex in grado di richiamare il processo FirstAppSolution/PreLoanProcess, eseguire le operazioni seguenti:

  1. Avviate un nuovo progetto Flex.

  2. Includete il file adobe-remoting-provider.swc nel percorso di classe del progetto. (Vedere Inclusione del file libreria AEM Forms Flex.)

  3. Create un'istanza mx:RemoteObject tramite ActionScript o MXML. (Vedere Creazione di un'istanza mx:RemoteObject)

  4. Configurate un'istanza ChannelSet per comunicare con AEM Forms e associatela all'istanza mx:RemoteObject. (Vedere Creare un canale per AEM Forms.)

  5. Chiama il metodo login di ChannelSet o il metodo setCredentials del servizio per specificare il valore dell'identificatore utente e la password. (Vedere Utilizzo del single sign-on.)

  6. Creare l'origine dati XML da trasmettere al processo FirstAppSolution/PreLoanProcess creando un'istanza XML. (Questa logica dell'applicazione è illustrata nel seguente esempio di codice.)

  7. Creare un oggetto di tipo Object utilizzando il relativo costruttore. Assegnare l'XML all'oggetto specificando il nome del parametro di input del processo, come illustrato nel codice seguente:

     //Get the XML data to pass to the AEM Forms process 
     var xml:XML = createXML(); 
     var params:Object = new Object(); 
     params["formData"]=xml;
    
  8. Richiamare il processo FirstAppSolution/PreLoanProcess chiamando il metodo mx:RemoteObject dell'istanza invoke_Async. Passare la Object che contiene il parametro di input. (Vedere Trasmissione di valori di input.)

  9. Recuperate il valore di identificazione della chiamata restituito da un processo di lunga durata, come illustrato nel codice seguente:

     // 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;  
     }
    

Richiamo di un processo di lunga durata tramite Remoting

Il seguente esempio di codice Flex richiama il processo 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> 
 

In questa pagina