Vorheriges Thema: Verwenden von Anwendereingaben für das Vorausfüllen von Auswahlkästchen

Nächstes Thema: So werden Anwendereingaben überprüft


So werden Felder auf Basis von einem Berichtsdatenobjekt und JavaScript-Funktionen vorausgefüllt

Um Felder mit Daten auszufüllen, die nicht über JavaScript-Ausdrücke zugreifbar sind, können Sie ein Berichtsdatenobjekt (Datenobjekt), anwenderdefinierte JavaScript-Funktionen und vordefinierte JavaScript-Funktionen, insbesondere ca_reportQuery(reportId, variables, onSuccess, onFailure) verwenden. Ein repräsentativer Fall wäre die Abfrage der Human Resources-Datenbank Ihrer Organisation (nicht die CA MDB) auf sensible Daten, wie z. B. die Kontodaten plus zugehörige Daten für einen Anwender.

Sie können beispielsweise ein Formular erstellen, um das Bankkonto, auf das das Gehalt eines Anwenders automatisch überwiesen wird, zu ändern. In diesem Formular können die Felder mit dem Namen der aktuellen Bank und der Kontonummer vorausgefüllt werden. Spätere Formularfelder werden für die Eingabe des neuen Banknamens und der neuen Kontonummer verwendet.

Zuerst ruft ca_reportQuery(reportId, variables, onSuccess, onFailure) diejenigen Variablen vom Berichtsdatenobjekt ab, die mit den vom Datenobjekt abgefragten Feldern übereinstimmen. Anschließend wird die Funktion "OnSuccess" aufgerufen; an dieser Stelle können Sie weitere vordefinierte JavaScript-Funktionen verwenden, um mehrere Felder im Formular mit den Ergebnissen der Abfrage vorauszufüllen. Sie können beispielsweise eine anwenderdefinierte Funktion schreiben, die ca_fdSetTextFieldValue(formId, _id, text) mehrfach aufruft, d. h. einmal für jedes Feld, das Sie vorausfüllen möchten. Dieses Szenario ist typischerweise am besten für das Vorausfüllen von Textfeldern geeignet, kann aber auch zum Ausfüllen anderer Felder verwendet werden.

Um Daten in Formularfeldern mit einem Datenobjekt und sowohl anwenderdefinierten als auch vordefinierten JavaScript-Funktionen vorauszufüllen, gehen Sie wie folgt vor:

  1. Entwerfen und erstellen Sie das Formular, sofern nicht bereits geschehen.
  2. Erstellen Sie im Berichts-Generator ein Datenobjekt, das die Datenquelle nach den gewünschten Daten abfragt (die Daten, die in die entsprechenden Formularfelder kopiert werden sollen).

    Zeichnen Sie die ID des Datenobjektes für spätere Verweise auf.

    Das folgende Beispiel führt eine Abfrage in der MDB entsprechend dem Beispiel durch, das weiter vorne in diesem Kapitel begonnen wurde:

    SELECT bank_name,account_number FROM my_hr_db WHERE userid ='%userid% '
    

    CA Service Catalog verarbeitet diese Abfrage wie folgt:

    1. "WHERE userid = '%userid%' legt fest, dass eine Anwender-ID als Eingabe für dieses Datenobjekt notwendig ist.
    2. "SELECT bank_name,account_number" gibt den Wert an, der zurückgegeben werden soll.
  3. "FROM my_hr_db" legt my_hr_db, eine fiktive Datenbank für dieses Beispiel, als Datenbank fest.
  4. Fügen Sie auf dem Formular wie folgt Textfelder (oder andere geeignete Formularelemente) ein, um die abgefragten Daten zu empfangen:
  5. Wählen Sie den Namen des Formulars, um die Formularattribute anzuzeigen.
  6. Geben Sie in den Formularattributen im JavaScript-Attribut "onload" den Namen Ihrer Funktion ein, die "ca_reportQuery" aufruft. Zur Veranschaulichung verwenden diese Schritte "getAcctData()" als Namen für diese Funktion. Setzen Sie den Namen Ihrer Funktion ein, sofern er anders lautet.
  7. Prüfen Sie, ob "getAcctData()" in einer JavaScript-Datei, die für CA Service Catalog zugänglich ist, deklariert ist.

    Es wird empfohlen, diesen Speicherort in der Dateiablage zu verwenden: FileStore/scripts/custom_form_lib.js.

    Wichtig! Bei dem Ordnername FileStore ist Groß-/Kleinschreibung zu beachten. Achten Sie deshalb darauf, dass Sie bei Pfadnamen und bei allen anderen programmgesteuerten Referenzen die richtige Schreibweise verwenden.

    Hinweis: Informationen über die Einrichtung der Dateiablage finden Sie im Implementierungshandbuch.

  8. Im Hauptteil von "getAcctData" geben Sie den Aufruf der Funktion "ca_reportQuery" an, damit das Datenobjekt ausgeführt wird und die Ergebnisse zurückgegeben werden.
  9. Verwenden Sie die Ergebnisse als Eingabewerte für JavaScript-Funktionen wie z. B. "ca_fdSetTextFieldValue", um die Formularfelder zu aktualisieren.

    In diesem Beispiel verwenden Sie die Ergebnisse für zwei Aufrufe: einen, um das Feld "Bankname" zu aktualisieren und den zweiten, um das Feld "Kontonummer" zu aktualisieren.

  10. Passen Sie "ca_reportQuery(reportId, variables, onSuccess, onFailure)" Ihren Anforderungen entsprechend an. Dieser Schritt führt das oben verwendete Beispiel fort.
  11. Stellen Sie das Formular nach Ihren Wünschen fertig.
  12. Testen Sie das Formular, ob es nach Ihren Vorgaben funktioniert.

Es wird empfohlen, dass Sie sich vergewissern, dass der Ausdruck in einem Formular getestet wird, das mit einem Service in einer Testumgebung verwendet wird, ehe Sie das Formular und den Service in einer Produktionsumgebung einsetzen.