Trigger festlegen

Eine Komponente kann Trigger umfassen, die Aktionen in anderen Komponenten ausführen. Sie müssen Trigger registrieren, damit sie von Komponenten ausgelöst werden können.

Die Komponente stellt eine Payload für einen Trigger bereit, die an jede Aktion übergeben wird, die bei Auslösung des Triggers ausgeführt wird. Sie können festlegen, welche Aktionen bei jedem Trigger ausgeführt werden. Entsprechend konfigurierte Komponenten können automatisch Trigger für die Ausführung von Aktionen auslösen, ohne dass Benutzer eingreifen müssen.

Trigger registrieren

Bei einer benutzerdefinierten Komponente werden Trigger als Teil der Registrierungsdaten für die Komponente registriert. Um einen Trigger hinzuzufügen, aktualisieren Sie das "triggers"-Eigenschaftsarray mit jedem von der Komponente unterstützten Trigger. Sie müssen zudem die vom Trigger unterstützte Payload angeben, damit die Benutzeroberfläche erstellt werden kann, in der Benutzer Werte in der Payload den von der Aktion unterstützten Eigenschaften zuordnen können.

  1. Bearbeiten Sie die Datei appinfo.json, und prüfen Sie den Eintrag "triggers":[],:
    "triggers": [{
        "triggerName": "helloWorldWhoAreYou",
        "triggerDescription": "Show Who I Am",
        "triggerPayload": [{
          "name": "whoAreYou",
          "displayName": "Who I Am"
       }]
    }],
  2. Synchronisieren Sie die Datei mit dem Siteserver.

In diesem Beispieltriggereintrag wurde ein triggerName ("helloWorldWhoAreYou") definiert. Der Namenswert muss eindeutig sein. Dann wurde eine Beschreibung für den Trigger angegeben ("Show Who I Am"), die bei der Anzeige des Triggers im Dialogfeld in der Benutzeroberfläche verwendet wird. Schließlich wurde eine Einzelwert-Payload für den Trigger definiert. Benutzer können Einträge in dieser Payload auswählen und Feldern in der Aktion zuordnen.

Nach der Registrierung eines Triggers sollte der Trigger auf der Registerkarte Link im Einstellungsbereich für die Komponente sichtbar und auswählbar sein.

Trigger auslösen

Trigger können zu jedem Zeitpunkt von einer Komponente ausgelöst werden. Normalerweise wird ein Trigger durch eine Benutzerinteraktion ausgelöst, wie das Klicken auf eine Schaltfläche oder die Auswahl einer Tabellenzeile. Eine Komponente kann den Trigger basierend auf beliebigen Kriterien auslösen, z.B. wenn Daten aufgrund eines REST-API-Aufrufs geändert werden. Sie können beliebig viele Aktionen mit einem Trigger ausführen.

Beispiel für die Auslösung eines Triggers:
  1. Bearbeiten Sie die Datei render.js, und fügen Sie eine JavaScript-Funktion im viewModel-Objekt hinzu, die das Sites-SDK zum Auslösen des Triggers aufruft.
    self.raiseTrigger = function (triggerName) {
      SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
        'triggerName': 'helloWorldWhoAreYou', 
        'triggerPayload': { "whoAreYou": "This is " + self.whoAreYou() + "!"}
      });
    };
  2. Fügen Sie einen Eintrag in der Benutzeroberfläche hinzu, um die Funktion zur Auslösung des Triggers aufzurufen (-edit template.html), sowie eine Schaltfläche vor dem </div>-Element.
    <button data-bind="click raiseTrigger">Who Am I?</button>
  3. Synchronisieren Sie die Datei render.js, bzw. laden Sie diese auf den Oracle Content Management-Instanzserver hoch.

Im ViewModel-Objekt haben Sie eine JavaScript-Funktion erstellt, die beim Klicken auf die Schaltfläche aufgerufen wird. Diese Funktion ruft das Sites-SDK auf, damit dieses alle für den Trigger "helloWorldWhoAreYou" definierten Aktionen auslöst. Sie übergibt auch eine triggerPayload mit dem einzelnen Feld "whoAreYou". Die Werte "helloWorldWhoAreYou" und "whoAreYou" stimmen mit denen überein, die Sie beim Registrieren des Triggers im vorherigen Schritt eingegeben haben.

Hinweis:

Es gibt keine vordefinierte Reihenfolge für den Ausführungszeitpunkt einer Aktion. Obwohl die einzelnen Aktionen in der Reihenfolge ihrer Auflistung aufgerufen werden, wird vor dem Aufrufen der nächsten Aktion nicht auf den Abschluss der vorherigen Aktion gewartet. Wenn eine Aktion einen asynchronen Aufruf sendet, kann es sein, dass dieser nicht abgeschlossen wird, bevor die nächste Aktion ausgeführt wird.