Show Menu
THEMEN×

Formulardaten berechnen

Der Forms-Dienst kann die Werte berechnen, die ein Benutzer in ein Formular eingibt, und die Ergebnisse anzeigen. Zur Berechnung der Formulardaten müssen Sie zwei Aufgaben ausführen. Zunächst erstellen Sie ein Formularentwurfsskript, das die Formulardaten berechnet. Ein Formularentwurf unterstützt drei Skripttypen. Ein Skripttyp wird auf dem Client ausgeführt, ein anderer auf dem Server und der dritte auf dem Server und auf dem Client. Der in diesem Thema beschriebene Skripttyp wird auf dem Server ausgeführt. Serverseitige Berechnungen werden für HTML-, PDF- und Formularleitfadentransformationen (nicht mehr unterstützt) unterstützt.
Im Rahmen des Formularentwurfsprozesses können Sie Berechnungen und Skripten verwenden, um eine bessere Benutzerfreundlichkeit zu gewährleisten. Berechnungen und Skripten können den meisten Formularfeldern und -objekten hinzugefügt werden. Sie müssen ein Formularentwurfsskript erstellen, um Berechnungsvorgänge für Daten durchzuführen, die ein Benutzer in ein interaktives Formular eingibt.
Der Benutzer gibt Werte in das Formular ein und klickt auf die Schaltfläche Berechnen, um die Ergebnisse Ansicht. Der folgende Vorgang beschreibt eine Beispielanwendung, mit der ein Benutzer Daten berechnen kann:
  • Der Benutzer greift auf eine HTML-Seite mit dem Namen StartLoan.html zu, die als Beginn der Webanwendung fungiert. Diese Seite ruft ein Java-Servlet mit dem Namen GetLoanForm auf.
  • Das GetLoanForm Servlet rendert ein Darlehensformular. Dieses Formular enthält ein Skript, interaktive Felder, eine Berechnungsschaltfläche und eine Senden-Schaltfläche.
  • Der Benutzer gibt Werte in die Felder des Formulars ein und klickt auf die Schaltfläche "Berechnen". Das Formular wird an das CalculateData Java-Servlet gesendet, in dem das Skript ausgeführt wird. Das Formular wird mit den im Formular angezeigten Berechnungsergebnissen an den Benutzer zurückgesendet.
  • Der Benutzer fährt mit der Eingabe und Berechnung der Werte fort, bis ein zufriedenstellendes Ergebnis angezeigt wird. Wenn der Benutzer zufrieden ist, klickt er auf die Schaltfläche "Senden", um das Formular zu verarbeiten. Das Formular wird an ein anderes Java-Servlet mit dem Namen ProcessForm gesendet, das für das Abrufen der gesendeten Daten zuständig ist. (Siehe Verarbeiten gesendeter Formulare .)
Das folgende Diagramm zeigt den logischen Ablauf der Anwendung.
Die folgende Tabelle beschreibt die Schritte in diesem Diagramm.
Schritt
Beschreibung
1
Das GetLoanForm Java-Servlet wird auf der Seite "HTML-Beginn"aufgerufen.
2
Das GetLoanForm Java-Servlet verwendet die Forms-Dienst-Client-API, um das Darlehensformular an den Client-Webbrowser zu rendern. Der Unterschied zwischen der Wiedergabe eines Formulars, das ein für die Ausführung auf dem Server konfiguriertes Skript enthält, und der Wiedergabe eines Formulars ohne Skript besteht darin, dass Sie den Speicherort der Zielgruppe angeben müssen, mit dem das Skript ausgeführt wird. Wenn kein Speicherort für die Zielgruppe angegeben ist, wird kein Skript ausgeführt, das für die Ausführung auf dem Server konfiguriert ist. Betrachten Sie zum Beispiel die Anwendung, die in diesem Abschnitt eingeführt wurde. Das CalculateData Java-Servlet ist der Speicherort der Zielgruppe, an dem das Skript ausgeführt wird.
3
Der Benutzer gibt Daten in interaktive Felder ein und klickt auf die Schaltfläche Berechnen. Das Formular wird an das CalculateData Java-Servlet gesendet, wo das Skript ausgeführt wird.
4
Das Formular wird mit den im Formular angezeigten Berechnungsergebnissen an den Webbrowser zurückgegeben.
5
Der Benutzer klickt auf die Senden-Schaltfläche, wenn die Werte zufriedenstellend sind. Das Formular wird an ein anderes Java-Servlet mit dem Namen ProcessForm gesendet.
In der Regel enthält ein Formular, das als PDF-Inhalt übermittelt wird, Skripten, die auf dem Client ausgeführt werden. Serverseitige Berechnungen können jedoch auch ausgeführt werden. Skripten können nicht mit einer Senden-Schaltfläche berechnet werden. In diesem Fall werden keine Berechnungen ausgeführt, da der Forms-Dienst die Interaktion für abgeschlossen hält.
Um die Verwendung eines Formularentwurfsskripts zu veranschaulichen, wird in diesem Abschnitt ein einfaches interaktives Formular mit einem Skript untersucht, das für die Ausführung auf dem Server konfiguriert ist. Das folgende Diagramm zeigt einen Formularentwurf mit einem Skript, das Werte hinzufügt, die ein Benutzer in die ersten beiden Felder eingibt, und das Ergebnis im dritten Feld anzeigt.
A. Ein Feld mit dem Namen NumericField1 B. Ein Feld mit dem Namen NumericField2 C. Ein Feld mit dem Namen NumericField3
Die Syntax des Skripts in diesem Formularentwurf lautet wie folgt:
     NumericField3 = NumericField2 + NumericField1

In diesem Formularentwurf ist die Schaltfläche "Berechnen"eine Befehlsschaltfläche und das Skript befindet sich im Click Ereignis dieser Schaltfläche. Wenn ein Benutzer Werte in die ersten beiden Felder (NumericField1 und NumericField2) eingibt und auf die Schaltfläche Berechnen klickt, wird das Formular an den Forms-Dienst gesendet, wo das Skript ausgeführt wird. Der Forms-Dienst rendert das Formular wieder auf das Clientgerät, wobei die Ergebnisse der Berechnung im Feld NumericField3 angezeigt werden.
Informationen zum Erstellen eines Formularentwurfsskripts finden Sie unter Forms Designer .
For more information about the Forms service, see Services Reference for AEM Forms .

Zusammenfassung der Schritte

So berechnen Sie Formulardaten:
  1. Schließen Sie Projektdateien ein.
  2. Erstellen Sie ein Forms Client-API-Objekt.
  3. Rufen Sie ein Formular mit einem Berechnungsskript ab.
  4. Den Formulardatenstream zurück in den Client-Webbrowser schreiben
Projektdateien einschließen
Schließen Sie die erforderlichen Dateien in Ihr Entwicklungsprojekt ein. Wenn Sie eine Clientanwendung mit Java erstellen, schließen Sie die erforderlichen JAR-Dateien ein. Wenn Sie Webdienste verwenden, stellen Sie sicher, dass Sie die Proxydateien einschließen.
Erstellen eines Forms Client-API-Objekts
Bevor Sie einen Forms-Dienst-Client-API-Vorgang programmgesteuert durchführen können, müssen Sie einen Forms-Dienstclient erstellen. Wenn Sie die Java-API verwenden, erstellen Sie ein FormsServiceClient Objekt. Wenn Sie die Forms-Webdienst-API verwenden, erstellen Sie ein FormsServiceService Objekt.
Abrufen eines Formulars mit einem Berechnungsskript
Mit der Forms-Dienst-Client-API können Sie eine Anwendungslogik erstellen, die ein Formular verarbeitet, das ein Skript enthält, das für die Ausführung auf dem Server konfiguriert wurde. Der Prozess ähnelt der Bearbeitung eines gesendeten Formulars. (Siehe Verarbeiten gesendeter Formulare .)
Vergewissern Sie sich, dass der mit dem gesendeten Formular verknüpfte Verarbeitungsstatus 1 (Calculate) ist. Das bedeutet, dass der Forms-Dienst eine Berechnung der Formulardaten durchführt und die Ergebnisse an den Benutzer zurückgeschrieben werden müssen. In diesem Fall wird automatisch ein Skript ausgeführt, das für die Ausführung auf dem Server konfiguriert ist.
Den Formulardatenstream zurück in den Client-Webbrowser schreiben
Nachdem Sie überprüft haben, ob der Verarbeitungsstatus, der mit einem gesendeten Formular verknüpft ist, 1 vorliegt, müssen Sie die Ergebnisse zurück in den Client-Webbrowser schreiben. Wenn das Formular angezeigt wird, wird der berechnete Wert in den entsprechenden Feldern angezeigt.
Siehe auch

Formulardaten mit der Java-API berechnen

Berechnen von Formulardaten mithilfe der Forms API (Java):
  1. Projektdateien einschließen
    Schließen Sie Client-JAR-Dateien wie "adobe-forms-client.jar"in den Klassenpfad Ihres Java-Projekts ein.
  2. Erstellen eines Forms Client-API-Objekts
    • Erstellen Sie ein ServiceClientFactory -" -Objekt, das Verbindungseigenschaften enthält.
    • Create an FormsServiceClient object by using its constructor and passing the ServiceClientFactory object.
  3. Abrufen eines Formulars mit einem Berechnungsskript
    • Um Formulardaten abzurufen, die ein Berechnungsskript enthalten, erstellen Sie ein com.adobe.idp.Document Objekt, indem Sie den Konstruktor des Objekts verwenden und die javax.servlet.http.HttpServletResponse Methode des getInputStream Objekts im Konstruktor aufrufen.
    • Rufen Sie die FormsServiceClient Objektmethode processFormSubmission auf und übergeben Sie die folgenden Werte:
      • Das com.adobe.idp.Document Objekt, das die Formulardaten enthält.
      • Ein Zeichenfolgenwert, der die Umgebung einschließlich aller relevanten HTTP-Header angibt. Sie müssen den zu verarbeitenden Inhaltstyp angeben, indem Sie einen oder mehrere Werte für die Variable " CONTENT_TYPE Umgebung"angeben. Um beispielsweise XML- und PDF-Daten zu verarbeiten, geben Sie den folgenden Zeichenfolgenwert für diesen Parameter an: CONTENT_TYPE=application/xml&CONTENT_TYPE=application/pdf
      • Ein Zeichenfolgenwert, der den HTTP_USER_AGENT Kopfzeilenwert angibt; zum Beispiel Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) .
      • Ein RenderOptionsSpec Objekt, das Laufzeitoptionen speichert.
      Die processFormSubmission Methode gibt ein FormsResult Objekt zurück, das die Ergebnisse der Formularübermittlung enthält.
    • Vergewissern Sie sich, dass der Verarbeitungsstatus, der mit einem gesendeten Formular verknüpft ist, 1 durch Aufrufen der FormsResult Objektmethode getAction erreicht wird. Wenn diese Methode den Wert zurückgibt, 1 wurde die Berechnung durchgeführt und die Daten können an den Client-Webbrowser zurückgeschrieben werden.
  4. Den Formulardatenstream zurück in den Client-Webbrowser schreiben
    • Erstellen Sie ein javax.servlet.ServletOutputStream Objekt, das zum Senden eines Formulardatenstreams an den Client-Webbrowser verwendet wird.
    • Erstellen Sie ein com.adobe.idp.Document Objekt, indem Sie die FormsResult "s"- getOutputContent Methode des Objekts aufrufen.
    • Erstellen Sie ein java.io.InputStream Objekt, indem Sie die com.adobe.idp.Document Objektmethode getInputStream aufrufen.
    • Erstellen Sie ein Byte-Array und füllen Sie es mit dem Formulardatenstream, indem Sie die InputStream read Objektmethode aufrufen und das Bytearray als Argument übergeben.
    • Rufen Sie die javax.servlet.ServletOutputStream Methode des write Objekts auf, um den Formulardatenstream an den Client-Webbrowser zu senden. Übergeben Sie das Bytearray an die write Methode.
Siehe auch

Formulardaten mithilfe der Webdienst-API berechnen

Berechnen von Formulardaten mithilfe der Forms API (Webdienst):
  1. Projektdateien einschließen
    • Erstellen Sie Java-Proxyklassen, die die Forms-Dienst-WSDL verwenden.
    • Schließen Sie die Java-Proxyklassen in Ihren Klassenpfad ein.
  2. Erstellen eines Forms Client-API-Objekts
    Erstellen Sie ein FormsService Objekt und legen Sie Authentifizierungswerte fest.
  3. Abrufen eines Formulars mit einem Berechnungsskript
    • Um Formulardaten abzurufen, die an ein Java-Servlet gesendet wurden, erstellen Sie ein BLOB Objekt mit dessen Konstruktor.
    • Erstellen Sie ein java.io.InputStream Objekt mithilfe der javax.servlet.http.HttpServletResponse Objektmethode getInputStream .
    • Create a java.io.ByteArrayOutputStream object by using its constructor and passing the length of the java.io.InputStream object.
    • Kopieren Sie den Inhalt des java.io.InputStream Objekts in das java.io.ByteArrayOutputStream Objekt.
    • Erstellen Sie ein Bytearray, indem Sie die java.io.ByteArrayOutputStream Objektmethode toByteArray aufrufen.
    • Füllen Sie das BLOB Objekt, indem Sie seine setBinaryData Methode aufrufen und das Bytearray als Argument übergeben.
    • Erstellen Sie ein Objekt RenderOptionsSpec , indem Sie den Konstruktor verwenden. Legen Sie den Wert für das Gebietsschema fest, indem Sie die RenderOptionsSpec Methode des setLocale Objekts aufrufen und einen Zeichenfolgenwert übergeben, der den Gebietsschemawert angibt.
    • Rufen Sie die FormsServiceClient Objektmethode processFormSubmission auf und übergeben Sie die folgenden Werte:
      • Das BLOB Objekt, das die Formulardaten enthält.
      • Ein Zeichenfolgenwert, der angibt, welche Umgebung alle relevanten HTTP-Header enthalten. Sie können beispielsweise den folgenden Zeichenfolgenwert angeben: HTTP_REFERER=referrer&HTTP_CONNECTION=keep-alive&CONTENT_TYPE=application/xml
      • Ein Zeichenfolgenwert, der den HTTP_USER_AGENT Kopfzeilenwert angibt; zum Beispiel Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) .
      • Ein RenderOptionsSpec Objekt, das Laufzeitoptionen speichert. Für weitere Informationen, .
      • Ein leeres BLOBHolder Objekt, das von der Methode gefüllt wird.
      • Ein leeres javax.xml.rpc.holders.StringHolder Objekt, das von der Methode gefüllt wird.
      • Ein leeres BLOBHolder Objekt, das von der Methode gefüllt wird.
      • Ein leeres BLOBHolder Objekt, das von der Methode gefüllt wird.
      • Ein leeres javax.xml.rpc.holders.ShortHolder Objekt, das von der Methode gefüllt wird.
      • Ein leeres MyArrayOf_xsd_anyTypeHolder Objekt, das von der Methode gefüllt wird. Dieser Parameter wird zum Speichern von Dateianlagen verwendet, die zusammen mit dem Formular gesendet werden.
      • Ein leeres FormsResultHolder Objekt, das von der Methode mit dem gesendeten Formular gefüllt wird.
      Die processFormSubmission Methode füllt den FormsResultHolder Parameter mit den Ergebnissen der Formularübermittlung. Die processFormSubmission Methode gibt ein FormsResult Objekt zurück, das die Ergebnisse der Formularübermittlung enthält.
    • Vergewissern Sie sich, dass der Verarbeitungsstatus, der mit einem gesendeten Formular verknüpft ist, 1 durch Aufrufen der FormsResult Objektmethode getAction erreicht wird. Wenn diese Methode den Wert zurückgibt, 1 wurde die Berechnung durchgeführt und die Daten können an den Client-Webbrowser zurückgeschrieben werden.
  4. Den Formulardatenstream zurück in den Client-Webbrowser schreiben
    • Erstellen Sie ein javax.servlet.ServletOutputStream Objekt, das zum Senden eines Formulardatenstreams an den Client-Webbrowser verwendet wird.
    • Erstellen Sie ein BLOB Objekt, das Formulardaten enthält, indem Sie die FormsResult Objektmethode getOutputContent aufrufen.
    • Erstellen Sie ein Bytearray und füllen Sie es durch Aufrufen der BLOB Objektmethode getBinaryData . Diese Aufgabe weist den Inhalt des FormsResult Objekts dem Bytearray zu.
    • Rufen Sie die javax.servlet.http.HttpServletResponse Methode des write Objekts auf, um den Formulardatenstream an den Client-Webbrowser zu senden. Übergeben Sie das Bytearray an die write Methode.