Show Menu
THEMEN×

An Menschen orientierte langlebige Prozesse aufrufen

Sie können in Workbench erstellte Prozesse mit einer hohen Lebensdauer programmgesteuert aufrufen, indem Sie folgende Clientanwendungen verwenden:
Der Prozess mit langer Lebensdauer, der aufgerufen wird, heißt FirstAppSolution/PreLoanProcess . Sie können diesen Prozess erstellen, indem Sie der unter Erstellen der ersten AEM Forms-Anwendung angegebenen Übung folgen.
Ein menschlich orientierter Prozess umfasst eine Aufgabe, auf die ein Benutzer mithilfe von Workspace reagieren kann. Beispielsweise können Sie mit Workbench einen Prozess erstellen, mit dem ein Bankmanager einen Kreditantrag genehmigen oder ablehnen kann. Die folgende Abbildung zeigt den Prozess FirstAppSolution/PreLoanProcess .
Der FirstAppSolution/PreLoanProcess -Prozess akzeptiert einen Eingabeparameter namens formData , dessen Datentyp XML ist. Die XML-Daten werden mit einem Formularentwurf namens PreLoanForm.xdp zusammengeführt. Die folgende Abbildung zeigt ein Formular, das eine Aufgabe darstellt, die einem Benutzer zum Genehmigen oder Ablehnen eines Kreditantrags zugewiesen wurde. Der Benutzer genehmigt oder verweigert die Anwendung mithilfe von Workspace. Der Workspace-Benutzer kann die Kreditanforderung genehmigen, indem er auf die Schaltfläche Genehmigen klickt, die in der folgenden Abbildung gezeigt wird. Ebenso kann der Benutzer die Kreditanforderung durch Klicken auf die Schaltfläche Ablehnen ablehnen.
Ein Prozess mit langer Lebensdauer wird asynchron aufgerufen und kann aufgrund der folgenden Faktoren nicht synchron aufgerufen werden:
  • Ein Prozess kann eine erhebliche Zeitspanne umfassen.
  • Ein Prozess kann organisatorische Grenzen überschreiten.
  • Ein Prozess benötigt externe Eingaben, damit er abgeschlossen werden kann. Betrachten Sie zum Beispiel eine Situation, in der ein Formular an einen Manager gesendet wird, der nicht im Hause ist. In diesem Fall ist der Prozess erst abgeschlossen, wenn der Manager das Formular zurückgibt und ausfüllt.
Wenn ein Prozess mit langer Lebensdauer aufgerufen wird, erstellt AEM Forms beim Erstellen eines Datensatzes einen Wert für die Aufrufkennung. Der Datensatz verfolgt den Status des Prozesses mit langer Lebensdauer und wird in der AEM Forms-Datenbank gespeichert. Mithilfe des Werts für die Aufrufkennung können Sie den Status des Prozesses mit langer Lebensdauer verfolgen. Darüber hinaus können Sie den Wert für den Prozessaufruf verwenden, um Process Manager-Vorgänge auszuführen, z. B. das Beenden einer ausgeführten Prozessinstanz.
AEM Forms erstellt keinen Wert für die Aufrufkennung oder einen Datensatz, wenn ein Prozess mit kurzer Lebensdauer aufgerufen wird.
Der FirstAppSolution/PreLoanProcess Prozess wird aufgerufen, wenn ein Antragsteller eine Anwendung einreicht, die als XML-Daten dargestellt wird. Der Name der Eingabeprozessvariablen ist formData und der Datentyp ist XML. Für diese Diskussion nehmen Sie an, dass die folgenden XML-Daten als Eingabe für den FirstAppSolution/PreLoanProcess Prozess verwendet werden.
 <?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>

XML-Daten, die an einen Prozess übergeben werden, müssen mit den Feldern im Formular übereinstimmen, das im Prozess verwendet wird. Andernfalls werden keine Daten im Formular angezeigt. Alle Anwendungen, die den FirstAppSolution/PreLoanProcess Prozess aufrufen, müssen diese XML-Datenquelle übergeben. Die in Invoking Human-Centric Long-Lived Processes erstellten Anwendungen erstellen die XML-Datenquelle dynamisch aus Werten, die ein Benutzer in einen Webclient eingegeben hat.
Mithilfe einer Clientanwendung können Sie die erforderlichen XML-Daten an den FirstAppSolution/PreLoanProcess -Prozess senden. Ein Prozess mit langer Lebensdauer gibt einen Wert für die Aufrufkennung als Rückgabewert zurück. Die folgende Abbildung zeigt, wie Clientanwendungen den Prozess*FirstAppSolution/PreLoanProcess mit langer Lebensdauer aufrufen. Die Clientanwendungen senden XML-Daten und rufen einen Zeichenfolgenwert zurück, der den Wert des Aufrufs-IDs darstellt.
Siehe auch

Erstellen einer Java-Web-Anwendung, die einen langlebigen, an Menschen orientierten Prozess aufruft

Sie können eine webbasierte Anwendung erstellen, die zum Aufrufen des FirstAppSolution/PreLoanProcess Prozesses ein Java-Servlet verwendet. Um diesen Prozess über ein Java-Servlet aufzurufen, verwenden Sie die Aufrufungs-API im Java-Servlet. (See Invoking AEM Forms using the Java API .)
Die folgende Abbildung zeigt eine webbasierte Clientanwendung, die Werte für Posts wie Name, Telefon (oder E-Mail) und Betrag enthält. Diese Werte werden an das Java-Servlet gesendet, wenn der Benutzer auf die Schaltfläche "Anwendung senden"klickt.
Das Java-Servlet führt die folgenden Aufgaben aus:
  • Ruft die Werte ab, die von der HTML-Seite zum Java-Servlet veröffentlicht werden.
  • Dynamisches Erstellen einer XML-Datenquelle, die an den FirstAppSolution/PreLoanProcess -Prozess übergeben wird. Die Werte für Name, Telefon (oder E-Mail) und Betrag werden in der XML-Datenquelle angegeben.
  • Ruft den FirstAppSolution/PreLoanProcess -Prozess mithilfe der AEM Forms-AufrufAPI auf.
  • Gibt den Wert für die Aufrufkennung an den Client-Webbrowser zurück.

Zusammenfassung der Schritte

So erstellen Sie eine webbasierte Java-Anwendung, die den FirstAppSolution/PreLoanProcess Prozess aufruft:
Einige dieser Schritte hängen von der J2EE-Anwendung ab, auf der AEM Forms bereitgestellt wird. Die Methode zum Bereitstellen einer WAR-Datei hängt beispielsweise vom J2EE-Anwendungsserver ab, den Sie verwenden. Es wird davon ausgegangen, dass AEM Forms auf JBoss® bereitgestellt wird.

Webprojekt erstellen

Der erste Schritt zum Erstellen einer Webanwendung besteht darin, ein Webprojekt zu erstellen. Die Java-IDE, auf der dieses Dokument basiert, ist Eclipse 3.3. Erstellen Sie mit der Eclipse-IDE ein Webprojekt und fügen Sie dem Projekt die erforderlichen JAR-Dateien hinzu. Hinzufügen Sie eine HTML-Seite mit dem Namen index.html und ein Java-Servlet für Ihr Projekt.
Die folgende Liste gibt die JAR-Dateien an, die in Ihr Webprojekt eingeschlossen werden sollen:
  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • J2EE.jar
For the location of these JAR files, see Including AEM Forms Java library files .
Die Datei J2EE.jar definiert Datentypen, die von einem Java-Servlet verwendet werden. Sie können diese JAR-Datei vom J2EE-Anwendungsserver abrufen, auf dem AEM Forms bereitgestellt wird.
Webprojekt erstellen
  1. Beginn Eclipse und klicken Sie auf Datei > Neues Projekt .
  2. Wählen Sie im Dialogfeld " Neues Projekt " Web > Dynamisches Webprojekt .
  3. Geben Sie InvokePreLoanProcess den Namen des Projekts ein und klicken Sie auf Fertig stellen .
Hinzufügen der erforderlichen JAR-Dateien für Ihr Projekt
  1. Klicken Sie im Fenster "Project Explorer"mit der rechten Maustaste auf das InvokePreLoanProcess Projekt und wählen Sie Eigenschaften .
  2. Klicken Sie auf Java-Buildpfad und dann auf die Registerkarte Bibliotheken .
  3. Klicken Sie auf die Schaltfläche Hinzufügen Externe JARs und navigieren Sie zu den einzuschließenden JAR-Dateien.
Hinzufügen eines Java-Servlets zu Ihrem Projekt
  1. Klicken Sie im Fenster Project Explorer mit der rechten Maustaste auf das InvokePreLoanProcess Projekt und wählen Sie Neu > Sonstige .
  2. Erweitern Sie den Web -Ordner, wählen Sie Servlet und klicken Sie dann auf Weiter .
  3. Geben Sie im Dialogfeld "Servlet erstellen" SubmitXML den Namen des Servlets ein und klicken Sie dann auf Fertig stellen .
Hinzufügen einer HTML-Seite für Ihr Projekt
  1. Klicken Sie im Fenster Project Explorer mit der rechten Maustaste auf das InvokePreLoanProcess Projekt und wählen Sie Neu > Sonstige .
  2. Erweitern Sie den Web -Ordner, wählen Sie HTML und klicken Sie auf Weiter .
  3. Geben Sie im Dialogfeld "Neue HTML" index.html den Dateinamen ein und klicken Sie auf " Fertig stellen ".
Informationen zum Erstellen von HTML-Inhalten, die das SubmitXML Java-Servlet aufrufen, finden Sie unter Erstellen der Webseite für die Webanwendung .

Java-Anwendungslogik für das Servlet erstellen

Erstellen Sie eine Java-Anwendungslogik, die den FirstAppSolution/PreLoanProcess Prozess aus dem Java-Servlet heraus aufruft. Der folgende Code zeigt die Syntax des SubmitXML Java-Servlets:
     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
             }

Normalerweise platzieren Sie keinen Clientcode innerhalb einer Java-Servlet-Methode doGet oder - doPost Methode. Eine bessere Programmierpraxis besteht darin, diesen Code in einer separaten Klasse zu platzieren. Instanziieren Sie dann die Klasse innerhalb der doPost Methode (oder doGet -Methode) und rufen Sie die entsprechenden Methoden auf. Codebeispiele werden jedoch für eine kürzere Code-Länge auf ein Minimum beschränkt und in die doPost Methode eingefügt.
So rufen Sie den FirstAppSolution/PreLoanProcess Prozess mit der Aufrufungs-API auf:
  1. Schließen Sie Client-JAR-Dateien wie "adobe-livecycle-client.jar"im Klassenpfad Ihres Java-Projekts ein. Weitere Informationen über den Speicherort dieser Dateien finden Sie unter Einbeziehung von AEM Forms Java-Bibliotheksdateien .
  2. Rufen Sie die Werte für Name, Telefon und Betrag ab, die von der HTML-Seite gesendet werden. Verwenden Sie diese Werte, um dynamisch eine XML-Datenquelle zu erstellen, die an den FirstAppSolution/PreLoanProcess Prozess gesendet wird. Sie können org.w3c.dom Klassen verwenden, um die XML-Datenquelle zu erstellen (diese Anwendungslogik ist im folgenden Codebeispiel dargestellt).
  3. Erstellen Sie ein ServiceClientFactory -" -Objekt, das Verbindungseigenschaften enthält. (Siehe Einstellung von Verbindungseigenschaften .)
  4. Erstellen Sie ein ServiceClient -Objekt, indem Sie seinen Konstruktor verwenden und das ServiceClientFactory -Objekt übergeben. Mit einem ServiceClient -Objekt können Sie einen Dienstvorgang aufrufen. Es erledigt Aufgaben wie das Auffinden, Versenden und Weiterleiten von Aufrufanforderungen.
  5. Erstellen Sie ein Objekt java.util.HashMap , indem Sie den Konstruktor verwenden.
  6. Rufen Sie die Methode java.util.HashMap des put -Objekts für jeden Eingabeparameter auf, der an den langlebigen Prozess übergeben erden soll. Stellen Sie sicher, dass Sie den Namen der Eingabeparameter des Prozesses angeben. Da für den FirstAppSolution/PreLoanProcess Prozess ein Eingabeparameter des Typs XML (benannt formData ) erforderlich ist, müssen Sie die put Methode nur einmal aufrufen.
     //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. Create an InvocationRequest object by invoking the ServiceClientFactory object’s createInvocationRequest method and passing the following values:
    • Ein string-Wert, der den Namen des langlebigen aufzurufenden Prozesses angibt. Um den FirstAppSolution/PreLoanProcess Prozess aufzurufen, geben Sie an FirstAppSolution/PreLoanProcess .
    • Ein string-Wert, der den Prozessvorgangsnamen darstellt. Der Name des Prozesses mit langer Lebensdauer lautet invoke .
    • Das java.util.HashMap -Objekt, das die Parameterwerte enthält, die für den Dienstvorgang erforderlich sind.
    • A Boolean value that specifies false , which creates an asynchronous request (this value is applicable to invoke a long-lived process).
    Ein Prozess mit kurzer Lebensdauer kann aufgerufen werden, indem der Wert true als vierter Parameter der createInvocationRequest-Methode übergeben wird. Durch Übergeben des Werts "true"wird eine synchrone Anforderung erstellt.
  8. Send the invocation request to AEM Forms by invoking the ServiceClient object’s invoke method and passing the InvocationRequest object. The invoke method returns an InvocationReponse object.
  9. Ein Prozess mit langer Lebensdauer gibt einen Zeichenfolgenwert zurück, der einen Aufrufidentifizierungswert darstellt. Rufen Sie diesen Wert ab, indem Sie die InvocationReponse Objektmethode getInvocationId aufrufen.
     //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. Schreiben Sie den Wert für die Aufrufkennung an den Client-Webbrowser. Sie können eine java.io.PrintWriter Instanz verwenden, um diesen Wert in den Client-Webbrowser zu schreiben.

Quick Start: Invoking a long-lived process using the Invocation API

Das folgende Java-Codebeispiel stellt das Java-Servlet dar, das den FirstAppSolution/PreLoanProcess Prozess aufruft.
 /*
     * 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;
          }
         }

Erstellen der Webseite für die Webanwendung

Die Webseite "index.html "bietet einen Einstiegspunkt zum Java-Servlet, der den FirstAppSolution/PreLoanProcess Prozess aufruft. Diese Webseite ist ein einfaches HTML-Formular, das ein HTML-Formular und eine Senden-Schaltfläche enthält. Wenn der Benutzer auf die Senden-Schaltfläche klickt, werden die Formulardaten an das SubmitXML Java-Servlet gesendet.
Das Java-Servlet erfasst die Daten, die von der HTML-Seite veröffentlicht werden, unter Verwendung des folgenden Java-Codes:
 //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");

Der folgende HTML-Code stellt die Datei "index.html"dar, die beim Einrichten der Development-Umgebung erstellt wurde. (Siehe Webprojekt erstellen .)
 <!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>

Verpacken der Webanwendung in eine WAR-Datei

Um das Java-Servlet bereitzustellen, das den FirstAppSolution/PreLoanProcess Prozess aufruft, verpacken Sie Ihre Webanwendung in einer WAR-Datei. Stellen Sie sicher, dass externe JAR-Dateien, von denen die Geschäftslogik der Komponente abhängt, wie z. B. adobe-livecycle-client.jar und adobe-usermanager-client.jar, ebenfalls in der WAR-Datei enthalten sind.
Die folgende Abbildung zeigt den Inhalt des Eclipse-Projekts, der in eine WAR-Datei gepackt wird.
In der vorherigen Abbildung kann die JPG-Datei durch eine beliebige JPG-Bilddatei ersetzt werden.
Verpacken einer Webanwendung in eine WAR-Datei:
  1. Klicken Sie im Fenster Project Explorer mit der rechten Maustaste auf das InvokePreLoanProcess Projekt und wählen Sie Exportieren > WAR-Datei .
  2. Geben Sie in das Textfeld Webmodul den Namen InvokePreLoanProcess des Java-Projekts ein.
  3. Geben Sie im Textfeld Ziel den Dateinamen PreLoanProcess.war ein, geben Sie den Speicherort für die WAR-Datei an und klicken Sie auf Fertig stellen. ​Geben Sie dann den gewünschten Speicherort an.

Stellen Sie die WAR-Datei auf dem J2EE-Anwendungsserver bereit, auf dem AEM Forms gehostet wird.

Stellen Sie die WAR-Datei auf dem J2EE-Anwendungsserver bereit, auf dem AEM Forms bereitgestellt wird. Um die WAR-Datei auf dem J2EE-Anwendungsserver bereitzustellen, kopieren Sie die WAR-Datei aus dem Exportpfad in [AEM Forms Install]\Adobe\Adobe Experience Manager Forms\jboss\server\lc_turnkey\deploy .
Wenn AEM Forms nicht auf JBoss bereitgestellt wird, müssen Sie die WAR-Datei gemäß dem J2EE-Anwendungsserver bereitstellen, auf dem AEM Forms gehostet wird.

Webanwendung testen

Nach der Bereitstellung der Webanwendung können Sie sie mithilfe eines Webbrowsers testen. Wenn Sie denselben Computer verwenden, auf dem AEM Forms gehostet wird, können Sie die folgende URL angeben:
  • http://localhost:8080/PreLoanProcess/index.html
    Geben Sie Werte in die HTML-Formularfelder ein und klicken Sie auf die Schaltfläche "Anwendung senden". Falls Probleme auftreten, lesen Sie die Protokolldatei des J2EE-Anwendungsservers.
Um zu bestätigen, dass die Java-Anwendung den Vorgang aufgerufen hat, akzeptieren Sie Beginn Workspace und akzeptieren Sie den Kredit.

Creating an ASP.NET web application that invokes a human-centric long-lived process

Sie können eine ASP.NET-Anwendung erstellen, die den FirstAppSolution/PreLoanProcess Prozess aufruft. Um diesen Prozess von einer ASP.NET-Anwendung aus aufzurufen, verwenden Sie Webdienste. (See Invoking AEM Forms using Web Services .)
Die folgende Abbildung zeigt eine ASP.NET-Clientanwendung, die Daten von einem Endbenutzer abruft. Die Daten werden in eine XML-Datenquelle platziert und an den FirstAppSolution/PreLoanProcess Prozess gesendet, wenn der Benutzer auf die Schaltfläche "Anwendung senden"klickt.
Beachten Sie, dass nach dem Aufrufen des Prozesses ein Wert für die Aufrufkennung angezeigt wird. Ein Wert für die Aufrufkennung wird als Teil eines Datensatzes erstellt, der den Status des Prozesses mit langer Lebensdauer verfolgt.
Die ASP.NET-Anwendung führt die folgenden Aufgaben aus:
  • Ruft die Werte ab, die der Benutzer auf der Webseite eingegeben hat.
  • Dynamische Erstellung einer XML-Datenquelle, die an den* FirstAppSolution/PreLoanProcess *Prozess übergeben wird. Die drei Werte werden in der XML-Datenquelle angegeben.
  • Ruft den Prozess* FirstAppSolution/PreLoanProcess *mithilfe der Webdienste auf.
  • Gibt den Wert für die Aufrufkennung und den Status der Operation mit langer Lebensdauer an den Client-Webbrowser zurück.

Zusammenfassung der Schritte

So erstellen Sie eine ASP.NET-Anwendung, die den FirstAppSolution/PreLoanProcess-Prozess aufrufen kann:

Erstellen einer ASP.NET-Webanwendung

Erstellen Sie eine Microsoft .NET C# ASP.NET-Webanwendung. Die folgende Abbildung zeigt den Inhalt des ASP.NET-Projekts InvokePreLoanProcess .
Unter "Dienstverweise"werden zwei Elemente angezeigt. Das erste Element trägt den Namen* JobManager*. Mit dieser Referenz kann die ASP.NET-Anwendung den Job Manager-Dienst aufrufen. Dieser Dienst gibt Informationen zum Status eines Prozesses mit langer Lebensdauer zurück. Wenn der Prozess beispielsweise derzeit ausgeführt wird, gibt dieser Dienst einen numerischen Wert zurück, der angibt, dass der Prozess gerade ausgeführt wird. Der zweite Verweis heißt PreLoanProcess . Diese Dienstreferenz stellt den Verweis auf den* FirstAppSolution/PreLoanProcess *Prozess dar. Nachdem Sie eine Dienstreferenz erstellt haben, stehen mit dem AEM Forms-Dienst verknüpfte Datentypen zur Verwendung in Ihrem .NET-Projekt zur Verfügung.
Erstellen eines ASP.NET-Projekts:
  1. Beginn Microsoft Visual Studio 2008.
  2. Wählen Sie im Menü Datei die Option Neu , Website .
  3. Wählen Sie in der Liste Vorlagen die Option ASP.NET-Website .
  4. Wählen Sie im Feld Speicherort einen Speicherort für Ihr Projekt aus. Benennen Sie Ihr Projekt InvokePreLoanProcess .
  5. Wählen Sie im Feld Sprache die Option Visual C#
  6. Klicken Sie auf OK.
Hinzufügen:
  1. Wählen Sie im Menü Projekt die Option Hinzufügen Service Reference .
  2. Geben Sie im Dialogfeld " Adresse "die WSDL für den Job Manager-Dienst an.
     https://hiro-xp:8080/soap/services/JobManager?WSDL&lc_version=9.0.1
    
    
  3. Geben Sie in das Feld Namensraum JobManager .
  4. Click Go and then click OK .
  5. Wählen Sie im Menü Projekt die Option Hinzufügen Dienstreferenz .
  6. Geben Sie im Dialogfeld " Adresse "die WSDL zum Prozess "FirstAppSolution/PreLoanProcess"an.
     https://hiro-xp:8080/soap/services/FirstAppSolution/PreLoanProcess?WSDL&lc_version=9.0.1
    
    
  7. Geben Sie in das Feld Namensraum PreLoanProcess .
  8. Click Go and then click OK .
Ersetzen Sie hiro-xp dies durch die IP-Adresse des J2EE-Anwendungsservers, auf dem AEM Forms gehostet wird. Die lc_version Option stellt sicher, dass AEM Forms-Funktionen wie MTOM verfügbar sind. Ohne Angabe der lc_version Option können Sie AEM Forms nicht mit MTOM aufrufen. (Siehe Aufrufen von AEM Forms mithilfe von MTOM .)

Erstellen einer ASP-Seite, die FirstAppSolution/PreLoanProcess aufruft

Fügen Sie im ASP.NET-Projekt ein Webformular (eine ASPX-Datei) hinzu, das für die Anzeige einer HTML-Seite für den Kreditantragsteller zuständig ist. Das Webformular basiert auf einer Klasse, von der System.Web.UI.Page es abgeleitet wurde. Die aufzurufende C#-Anwendungslogik FirstAppSolution/PreLoanProcess befindet sich in der Button1_Click -Methode (diese Schaltfläche entspricht der Schaltfläche "Anwendung senden").
Die folgende Abbildung zeigt die ASP.NET-Anwendung
In der folgenden Tabelle werden die Steuerelemente Liste, die Bestandteil dieser ASP.NET-Anwendung sind.
Kontrollname
Beschreibung
TextBoxName
Gibt den Vor- und Nachnamen des Kunden an.
TextBoxPhone
Gibt die Telefon- oder E-Mail-Adresse des Kunden an.
TextBoxAmount
Gibt den Darlehensbetrag an.
Button1
Stellt die Schaltfläche Anwendung senden dar.
LabelJobID
Ein Label-Steuerelement, das den Wert des Aufrufkennungswerts angibt.
LabelStatus
Ein Label-Steuerelement, das den Wert des Auftragsstatus angibt. Dieser Wert wird durch Aufrufen des Job Manager-Dienstes abgerufen.
Die Anwendungslogik, die Teil der ASP.NET-Anwendung ist, muss dynamisch eine XML-Datenquelle erstellen, die an den FirstAppSolution/PreLoanProcess Prozess übergeben wird. Die Werte, die der Antragsteller auf der HTML-Seite eingegeben hat, müssen in der XML-Datenquelle angegeben werden. Diese Datenwerte werden beim Anzeigen des Formulars in Workspace in das Formular zusammengeführt. Die Klassen im System.Xml Namensraum werden zum Erstellen der XML-Datenquelle verwendet.
Beim Aufrufen eines Prozesses, der XML-Daten aus einer ASP.NET-Anwendung erfordert, steht Ihnen ein XML-Datentyp zur Verfügung. Das heißt, Sie können eine System.Xml.XmlDocument Instanz nicht an den Prozess übergeben. Der vollständig qualifizierte Name dieser XML-Instanz, die an den Prozess übergeben werden soll, ist InvokePreLoanProcess.PreLoanProcess.XML vorhanden. Konvertieren Sie die System.Xml.XmlDocument Instanz in InvokePreLoanProcess.PreLoanProcess.XML . Sie können diese Aufgabe mithilfe des folgenden Codes durchführen.
 //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();

Um eine ASP-Seite zu erstellen, die den FirstAppSolution/PreLoanProcess Prozess aufruft, führen Sie die folgenden Aufgaben in der Button1_Click Methode aus:
  1. Create a FirstAppSolution_PreLoanProcessClient object by using its default constructor.
  2. Create a FirstAppSolution_PreLoanProcessClient.Endpoint.Address object by using the System.ServiceModel.EndpointAddress constructor. Übergeben Sie einen Zeichenfolgenwert, der die WSDL an den AEM Forms-Dienst und den Kodierungstyp angibt:
     https://hiro-xp:8080/soap/services/FirstAppSolution/PreLoanProcess?blob=mtom
    
    
    Sie müssen das lc_version Attribut nicht verwenden. Dieses Attribut wird verwendet, wenn Sie eine Dienstreferenz erstellen. Achten Sie jedoch darauf, dies anzugeben ?blob=mtom .
    Ersetzen Sie hiro-xp * durch die IP-Adresse des J2EE-Anwendungsservers, auf dem AEM Forms gehostet wird. *
  3. Erstellen Sie ein System.ServiceModel.BasicHttpBinding Objekt, indem Sie den Wert des FirstAppSolution_PreLoanProcessClient.Endpoint.Binding Datenelements abrufen. Wandeln Sie den Rückgabewert in BasicHttpBinding um.
  4. Stellen Sie den System.ServiceModel.BasicHttpBinding Datenmember des MessageEncoding Objekts auf WSMessageEncoding.Mtom . Dieser Wert stellt sicher, dass MTOM verwendet wird.
  5. Aktivieren Sie die einfache HTTP-Authentifizierung, indem Sie die folgenden Aufgaben ausführen:
    • Weisen Sie dem Datenmember den AEM Forms-Benutzernamen zu FirstAppSolution_PreLoanProcessClient.ClientCredentials.UserName.UserName .
    • Weisen Sie dem Datenmember den entsprechenden Kennwortwert zu FirstAppSolution_PreLoanProcessClient.ClientCredentials.UserName.Password .
    • Weisen Sie den Konstantenwert HttpClientCredentialType.Basic dem Datenmember zu BasicHttpBindingSecurity.Transport.ClientCredentialType .
    • Weisen Sie den Konstantenwert BasicHttpSecurityMode.TransportCredentialOnly dem Datenmember zu BasicHttpBindingSecurity.Security.Mode .
    Das folgende Codebeispiel zeigt diese Aufgaben.
     //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. Rufen Sie die Werte für Name, Telefon und Betrag ab, die der Benutzer auf der Webseite eingegeben hat. Verwenden Sie diese Werte, um dynamisch eine XML-Datenquelle zu erstellen, die an den FirstAppSolution/PreLoanProcess Prozess gesendet wird. Erstellen Sie eine System.Xml.XmlDocument Datei, die die XML-Datenquelle darstellt, die an den Prozess übergeben werden soll (diese Anwendungslogik wird im folgenden Codebeispiel gezeigt).
  7. Konvertieren Sie die System.Xml.XmlDocument Instanz in InvokePreLoanProcess.PreLoanProcess.XML (diese Anwendungslogik wird im folgenden Codebeispiel gezeigt).
  8. Rufen Sie den FirstAppSolution/PreLoanProcess Prozess auf, indem Sie die FirstAppSolution_PreLoanProcessClient Objektmethode invoke_Async aufrufen. Diese Methode gibt einen Zeichenfolgenwert zurück, der den Wert des Aufrufs-IDs des Prozesses mit langer Lebensdauer darstellt.
  9. Erstellen Sie einen JobManagerClient mithilfe des Konstruktors. (Stellen Sie sicher, dass Sie einen Dienstverweis auf den Job Manager-Dienst festgelegt haben.)
  10. Wiederholen Sie die Schritte 1-5. Geben Sie die folgende URL für Schritt 2 an: https://hiro-xp:8080/soap/services/JobManager?blob=mtom .
  11. Erstellen Sie ein Objekt JobId , indem Sie den Konstruktor verwenden.
  12. Legen Sie den JobId Datenmember des id Objekts mit dem Rückgabewert der FirstAppSolution_PreLoanProcessClient Objektmethode invoke_Async fest.
  13. Weisen Sie dem value Datenmember des Objekts den Wert " JobId true"zu persistent .
  14. Erstellen Sie ein JobStatus Objekt, indem Sie die JobManagerService Methode des getStatus Objekts aufrufen und das JobId Objekt übergeben.
  15. Rufen Sie den Statuswert ab, indem Sie den Wert des JobStatus Objektdatenelements statusCode abrufen.
  16. Weisen Sie dem LabelJobID.Text Feld den Wert für die Aufrufkennung zu.
  17. Weisen Sie dem LabelStatus.Text Feld den Statuswert zu.

Quick Beginn: Aufrufen eines Prozesses mit langer Lebensdauer mithilfe der Webdienst-API

Im folgenden C#-Codebeispiel wird der FirstAppSolution/PreLoanProcess Prozess aufgerufen.
 ???/**
     * 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 "";
            }
       }
 }
 

Die Werte in der benutzerdefinierten Methode getJobDescription entsprechen den vom Job Manager-Dienst zurückgegebenen Werten.

Ausführen der ASP.NET-Anwendung

Nachdem Sie die ASP.NET-Anwendung kompiliert und bereitgestellt haben, können Sie sie mithilfe eines Webbrowsers ausführen. Wenn der Name des ASP.NET-Projekts InvokePreLoanProcess lautet, geben Sie die folgende URL in einem Webbrowser an:
*http://localhost:1629/InvokePreLoanProcess/*Default.aspx
wobei localhost der Name des Webservers ist, auf dem das ASP.NET-Projekt ausgeführt wird, und 1629 die Anschlussnummer. Wenn Sie die ASP.NET-Anwendung kompilieren und erstellen, stellt Microsoft Visual Studio sie automatisch bereit.
Um zu bestätigen, dass die ASP.NET-Anwendung den Vorgang aufgerufen hat, akzeptieren Sie Beginn Workspace und den Kredit.

Erstellen einer Client-Anwendung, die mit Flex erstellt wurde und einen menschenorientierten Prozess mit langer Lebensdauer aufruft

Sie können eine Clientanwendung erstellen, die mit Flex erstellt wurde, um den FirstAppSolution/PreLoanProcess -Prozess aufzurufen. Diese Anwendung verwendet Remoting, um den FirstAppSolution/PreLoanProcess -Prozess aufzurufen. (Siehe Aufrufen von AEM Forms mithilfe von (für AEM Forms nicht mehr unterstützt) AEM Forms Remoting .)
Die folgende Abbildung zeigt eine Clientanwendung, die mit Flex erstellt wurde und Daten von einem Endbenutzer erfasst. Die Daten werden in eine XML-Datenquelle platziert und an den Prozess gesendet.
Beachten Sie, dass nach dem Aufrufen des Prozesses ein Wert für die Aufrufkennung angezeigt wird. Ein Wert für die Aufrufkennung wird als Teil eines Datensatzes erstellt, der den Status des Prozesses mit langer Lebensdauer verfolgt.
Die mit Flex erstellte Clientanwendung führt die folgenden Aufgaben aus:
  • Ruft die Werte ab, die der Benutzer auf der Webseite eingegeben hat.
  • Dynamisches Erstellen einer XML-Datenquelle, die an den FirstAppSolution/PreLoanProcess -Prozess übergeben wird. Die drei Werte werden in der XML-Datenquelle angegeben.
  • Ruft den FirstAppSolution/PreLoanProcess -Prozess unter Verwendung von Remoting auf.
  • Gibt den Wert für die Aufrufkennung des Prozesses mit langer Lebensdauer zurück.

Zusammenfassung der Schritte

So erstellen Sie eine Client-Anwendung, die mit Flex erstellt wurde und den FirstAppSolution/PreLoanProcess-Prozess aufrufen kann:
  1. Beginn eines neuen Flex-Projekts.
  2. Schließen Sie die Datei "adobe-remoting-provider.swc"in den Klassenpfad Ihres Projekts ein. (Siehe Einschließen der AEM Forms Flex-Bibliotheksdatei .)
  3. Erstellen Sie eine mx:RemoteObject Instanz entweder mit ActionScript oder MXML. (Siehe Erstellen einer mx:RemoteObject-Instanz )
  4. Richten Sie eine ChannelSet Instanz für die Kommunikation mit AEM Forms ein und verknüpfen Sie sie mit der mx:RemoteObject Instanz. (Siehe Erstellen eines Kanals für AEM Forms .)
  5. Rufen Sie die login Methode des ChannelSet oder die setCredentials Methode des Dienstes auf, um den Wert und das Kennwort des Benutzers anzugeben. (Siehe Single Sign-On verwenden .)
  6. Erstellen Sie die XML-Datenquelle, die an den FirstAppSolution/PreLoanProcess Prozess übergeben wird, indem Sie eine XML-Instanz erstellen. (Diese Anwendungslogik wird im folgenden Codebeispiel gezeigt.)
  7. Erstellen Sie ein Objekt des Typs "Object"mit dem Konstruktor. Weisen Sie dem Objekt die XML zu, indem Sie den Namen des Eingabeparameters des Prozesses angeben, wie im folgenden Code gezeigt:
     //Get the XML data to pass to the AEM Forms process
     var xml:XML = createXML();
     var params:Object = new Object();
     params["formData"]=xml;
    
    
  8. Rufen Sie den FirstAppSolution/PreLoanProcess Prozess durch Aufruf der mx:RemoteObject Instanzmethode invoke_Async auf. Übergeben Sie die Object , die den Eingabeparameter enthält. (Siehe Übergeben von Eingabewerten .)
  9. Rufen Sie den Aufrufidentifizierungswert ab, der von einem Prozess mit langer Lebensdauer zurückgegeben wird, wie im folgenden Code gezeigt:
     // 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;
     }
    
    

Aufrufen eines Prozesses mit langer Lebensdauer mithilfe von Remoting

Das folgende Flex-Codebeispiel ruft den FirstAppSolution/PreLoanProcess Prozess auf.
 <?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>