Задание триггеров

Компонент может включать триггеры, которые будут выполнять действия в других компонентах. Триггеры, которые должны вызываться компонентами, необходимо зарегистрировать.

Компонент предоставляет полезные данные для триггера, которые передаются любому действию, которое выполняется при срабатывании триггера. Для каждого триггера можно выбрать действия, которые будут выполняться. Компоненты, созданные для совместной работы, могут автоматически вызывать триггеры для выполнения действий без вмешательства пользователя.

Регистрация триггеров

Для пользовательского компонента триггеры регистрируются как часть данных регистрации компонента. Чтобы добавить триггер, обновите массив свойств "triggers" с каждым триггером, поддерживаемым компонентом. Кроме того, необходимо указать полезные данные, поддерживаемые триггером, чтобы можно было создать пользовательский интерфейс, позволяющий пользователям сопоставить значения в полезных данных со свойствами, поддерживаемыми действием.

  1. Измените файл appinfo.json и просмотрите запись "triggers":[],:
    "triggers": [{
        "triggerName": "helloWorldWhoAreYou",
        "triggerDescription": "Show Who I Am",
        "triggerPayload": [{
          "name": "whoAreYou",
          "displayName": "Who I Am"
       }]
    }],
  2. Синхронизируйте файл с сервером сайтов.

В этом примере определена запись триггера triggername ("helloWorldWhoAreYou"). Значение имени должно быть уникальным. Затем дается описание триггера ("Show Who I Am"), которое используется в диалоговом окне пользовательского интерфейса для отображения триггера. Наконец, для триггера определяются полезные данные с отдельными значениями. Пользователи смогут выбирать записи в этих полезных данных и сопоставлять их с полями в действии.

После регистрации триггера при переходе на вкладку Ссылка на панели "Настройки" компонента можно увидеть и выбрать этот триггер.

Вызов триггеров

В любой момент триггеры могут быть вызваны компонентом. Обычно триггер вызывается в результате взаимодействия с пользователем, например при нажатии кнопки или выборе строки в таблице. Компонент может вызвать триггер на основе любого критерия, например, при изменении данных из-за вызова API-интерфейса REST. При срабатывании триггера может быть выполнено любое количество действий.

Вот пример вызова триггера:
  1. Измените файл render.js и добавьте в объект viewModel функцию JavaScript, которая будет обращаться к Sites SDK для вызова триггера.
    self.raiseTrigger = function (triggerName) {
      SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
        'triggerName': 'helloWorldWhoAreYou', 
        'triggerPayload': { "whoAreYou": "This is " + self.whoAreYou() + "!"}
      });
    };
  2. Добавьте в пользовательский интерфейс запись для вызова функции, запускающей триггер (-edit template.html), и кнопку перед </div>.
    <button data-bind="click raiseTrigger">Who Am I?</button>
  3. Синхронизируйте или загрузите файл render.js на сервер своего экземпляра Oracle Content Management.

В объекте ViewModel создана функция JavaScript, вызываемая при нажатии кнопки. Эта функция вызывает комплект Sites SDK, чтобы он инициировал все действия, определенные для триггера "helloWorldWhoAreYou". Она также передается посредством объекта triggerPayload с одним полем — "whoAreYou". Значения "hellowWorldWhoAreYou" и "whoAreYou" соответствуют значениям, введенным при регистрации триггера на предыдущем шаге.

Примечание.:

При выполнении действия предопределенного порядка нет. Несмотря на то, что каждое действие вызывается в том порядке, в котором оно указано в списке, не нужно ждать его завершения, чтобы вызвать следующее действие. Если действие выполняет асинхронный вызов, оно может не завершиться до выполнения следующего действия.