Definir Triggers

Um componente pode incluir triggers que executarão ações em outros componentes. Registre os triggers a serem acionados pelos componentes.

O componente fornece um payload para um trigger, que é transmitido a qualquer ação executada quando o trigger é acionado. Você pode selecionar quais ações serão executadas para cada trigger. Os componentes criados para funcionamento conjunto podem acionar triggers automaticamente para executar ações sem a interação do usuário.

Registrar Triggers

Para um componente personalizado, os triggers são registrados como parte dos dados de registro do componente. Para adicionar um trigger, atualize o array de propriedade "triggers" com cada trigger que o componente suporta. Especifique também o payload que o trigger suporta para que a interface do usuário possa ser criada para permitir que os usuários mapeiem os valores dentro do payload para as propriedades suportadas pela ação.

  1. Edite o arquivo appinfo.json e verifique a entrada "triggers":[],:
    "triggers": [{
        "triggerName": "helloWorldWhoAreYou",
        "triggerDescription": "Show Who I Am",
        "triggerPayload": [{
          "name": "whoAreYou",
          "displayName": "Who I Am"
       }]
    }],
  2. Sincronize o arquivo com o servidor de sites.

Nesta entrada de trigger de amostra, você definiu um triggerName ("helloWorldWhoAreYou"). O valor do nome deve ser exclusivo. Você deu ao trigger uma descrição ("Show Who I Am"), que é usada pela caixa de diálogo da interface do usuário para exibir o trigger. Por último, você definiu um payload de valor único para o trigger; os usuários poderão selecionar entradas nesse payload e mapeá-las para campos na ação.

Depois que um trigger for registrado, você deverá vê-lo e selecioná-lo quando acessar a guia Link no painel Definições do seu componente.

Acionar Triggers

É possível acionar triggers em qualquer ponto por um componente. Em geral, um trigger é acionado por uma interação do usuário, como o clique em um botão ou a seleção de uma linha em uma tabela. Um componente pode acionar o trigger com base em qualquer critério, por exemplo, quando dados são alterador por causa de uma chamada de API REST. Você pode executar qualquer número de ações quando um trigger é acionado.

Aqui está um exemplo de como acionar um trigger:
  1. Edite o arquivo render.js e adicione uma função JavaScript no objeto viewModel que chamará o Sites SDK para acionar o trigger.
    self.raiseTrigger = function (triggerName) {
      SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
        'triggerName': 'helloWorldWhoAreYou', 
        'triggerPayload': { "whoAreYou": "This is " + self.whoAreYou() + "!"}
      });
    };
  2. Adicione uma entrada na interface do usuário para chamar a função que acionará o trigger (-edit template.html) e um botão antes de </div>.
    <button data-bind="click raiseTrigger">Who Am I?</button>
  3. Sincronize ou faça upload do arquivo render.js para o servidor de instância do Oracle Content Management.

No objeto ViewModel, você criou uma função JavaScript que é chamada quando alguém clica no botão. Essa função chama o Sites SDK para instruí-lo a acionar todas as ações definidas para este trigger "helloWorldWhoAreYou". Ela também passa por um triggerPayload que tem um único campo, "whoAreYou". Esses valores "helloWorldWhoAreYou" e "whoAreYou" correspondem aos que você digitou quando registrou o trigger na etapa anterior.

Nota:

Não há ordem predefinida para quando uma ação é executada. Embora cada ação seja chamada na ordem em que é listada, não há espera de conclusão antes que a próxima ação seja chamada. Se uma ação fizer uma chamada assíncrona, poderá não ser concluída antes da execução da próxima ação.