Definir disparadores

Un componente puede incluir disparadores que ejecutarán acciones en otros componentes. Debe registrar los disparadores que emitirán los componentes.

El componente proporciona una carga útil para un disparador que se transfiere a cualquier acción que se ejecuta cuando se emite el disparador. Puede seleccionar las acciones que se ejecutarán para cada disparador. Los componentes que se han creado para que funcionen juntos pueden emitir disparadores de forma automática para ejecutar acciones sin interacción del usuario.

Registro de disparadores

En un componente personalizado, los disparadores se registran como parte de los datos de registro del componente. Para agregar un disparador, actualice la matriz de propiedades "triggers" con cada disparador que admita el componente. También debe especificar la carga útil que admite el disparador para que se pueda crear la interfaz de usuario de modo que los usuarios puedan asignar valores en la carga útil a las propiedades admitidas por la acción.

  1. Edite el archivo appinfo.json y revise la entrada "triggers":[],.
    "triggers": [{
        "triggerName": "helloWorldWhoAreYou",
        "triggerDescription": "Show Who I Am",
        "triggerPayload": [{
          "name": "whoAreYou",
          "displayName": "Who I Am"
       }]
    }],
  2. Sincronice el archivo con el servidor de sitios.

En esta entrada de disparador de ejemplo, ha definido un triggerName ("helloWorldWhoAreYou"). El valor de nombre debe ser único. A continuación, ha proporcionado una descripción ("Show Who I Am") para el disparador , la cual se utilizará en el cuadro de diálogo de interfaz de usuario para mostrar el disparador. Por último, ha definido una carga útil de un solo valor para el disparador; los usuarios podrán seleccionar entradas en esta carga útil y asignarlas a campos en la acción.

Una vez registrado un disparador, podrá verlo y seleccionarlo cuando vaya al separador Enlace del panel Configuración para el componente.

Emisión de disparadores

Un componente puede emitir disparadores en cualquier momento. Normalmente, un disparador lo emite una interacción de usuario, como hacer clic en un botón o seleccionar una fila de una tabla. Un componente puede emitir un disparador basándose en cualquier criterio; por ejemplo, cuando cambian los datos debido a una llamada de la API de REST. Puede ejecutar cualquier número de acciones cuando se emite un disparador.

A continuación se muestra un ejemplo de cómo se emite un disparador:
  1. Edite el archivo render.js y agregue una función JavaScript en el objeto viewModel que llamará al SDK de Sites para emitir el disparador.
    self.raiseTrigger = function (triggerName) {
      SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
        'triggerName': 'helloWorldWhoAreYou', 
        'triggerPayload': { "whoAreYou": "This is " + self.whoAreYou() + "!"}
      });
    };
  2. Agregue una entrada en la interfaz de usuario para llamar a la función para emitir el disparador (-edit template.html), y un botón antes de </div>.
    <button data-bind="click raiseTrigger">Who Am I?</button>
  3. Sincronice o cargue el archivo render.js en el servidor de instancia de Oracle Content Management.

En el objeto ViewModel, ha creado una función JavaScript a la que se llama cuando se hace clic en el botón. Esta función llama al SDK de Sites para decirle que dispare todas las acciones definidas para este disparador "helloWorldWhoAreYou". También se transfiere a través de una triggerPayload que tiene un solo campo, "whoAreYou". Estos valores, "helloWorldWhoAreYou" y "whoAreYou", coinciden con los que ha introducido al registrar el disparador en el paso anterior.

Nota:

No hay ningún orden predefinido en cuanto a cuándo se ejecuta una acción. Aunque se llamará a cada acción en el orden en el que aparece en la lista, no se espera a que se complete antes de que se llame a la siguiente acción. Si una acción realiza una llamada asíncrona, puede que no se complete antes de que se ejecute la siguiente acción.