Definir Triggers

Um componente pode incluir triggers que executarão ações noutros componentes. Deve registar os triggers que serão gerados pelos componentes.

O componente fornece um payload para um trigger, que é transmitido a qualquer ação executada quando o trigger é gerado. Pode selecionar as ações que serão executadas para cada trigger. Os componentes criados para funcionar em conjunto podem gerar automaticamente triggers para executar ações sem interação do utilizador.

Registar Triggers

Para um componente customizado, os triggers são registados como parte dos dados de registo do componente. Para acrescentar um trigger, atualize a matriz da propriedade "triggers" com cada um dos triggers que o componente suporta. Também deve especificar o payload que o trigger suporta, de modo a ser possível criar a interface do utilizador para permitir que os utilizadores efetuem a correspondência dos valores no payload com as propriedades suportadas pela ação.

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

Nesta entrada de trigger de exemplo, definiu um triggerName ("helloWorldWhoAreYou"). O valor do nome deve ser exclusivo. Em seguida, atribuiu ao trigger uma descrição ("Show Who I Am"), que é utilizada pela caixa de diálogo da interface do utilizador para apresentar o seu trigger. Por último, definiu um payload de valor único para o trigger; os utilizadores poderão selecionar as entradas neste payload e efetuar a correspondência das mesmas com os campos na ação.

Depois de um trigger ser registado, deverá conseguir vê-lo e selecioná-lo quando aceder ao separador Ligação no painel Definições do seu componente.

Gerar Triggers

Os triggers podem ser gerados em qualquer altura por um componente. Normalmente, um trigger é gerado por uma interação do utilizador, como clicar num botão ou selecionar uma linha numa tabela. Um componente pode gerar um trigger com base em qualquer critério como, por exemplo, quando os dados são alterados devido a uma chamada da API REST. Pode executar qualquer número de ações quando um trigger é gerado.

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

No objeto ViewModel, criou uma função de JavaScript que é chamada quando se clica no botão. Esta função chama o Sites SDK indicando-lhe que deve desencadear todas as ações definidas para este trigger "helloWorldWhoAreYou". Também transmite um triggerPayload que tem um campo único, "whoAreYou". Estes valores "helloWorldWhoAreYou" e "whoAreYou" correspondem aos que introduziu quando registou o trigger no passo anterior.

Nota:

Não existe nenhuma ordem predefinida quanto ao momento de execução de uma ação. Cada ação será chamada pela ordem em que é listada, mas não se aguarda pela respetiva conclusão antes de chamar a ação seguinte. Se uma ação efetuar uma chamada assíncrona, poderá não ser concluída antes de a ação seguinte ser executada.