트리거 설정

한 구성요소에는 다른 구성요소에 작업을 실행할 트리거가 포함될 수 있습니다. 구성요소에서 발생시킬 트리거를 등록해야 합니다.

구성요소는 트리거에 대한 페이로드를 제공하며, 이는 트리거가 발생할 때 실행되는 작업으로 전달됩니다. 각 트리거에 대해 실행할 작업을 선택할 수 있습니다. 함께 작동하도록 제작된 구성요소들은 사용자 상호작용 없이 자동으로 트리거를 발생시켜 작업을 실행할 수 있습니다.

트리거 등록

사용자정의 구성요소의 경우 트리거는 구성요소 등록 데이터의 일부로 등록됩니다. 트리거를 추가하려면 구성요소가 지원하는 각 트리거로 "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")을 제공했습니다. 마지막으로, 트리거에 대한 단일 값 페이로드를 정의했습니다. 사용자는 이 페이로드의 항목을 선택하여 작업의 필드에 매핑할 수 있습니다.

트리거가 등록되면 구성요소의 설정 패널에서 링크 탭으로 이동할 때 트리거를 보고 선택할 수 있어야 합니다.

트리거 발생

트리거는 언제든지 구성요소에 의해 발생할 수 있습니다. 일반적으로 트리거는 단추 누르기 또는 테이블의 행 선택과 같은 사용자 상호작용에 의해 발생합니다. 구성요소는 REST API 호출로 인해 데이터가 변경될 때와 같은 조건에 준하여 트리거를 발생시킬 수 있습니다. 트리거가 발생할 때 원하는 수의 작업을 실행할 수 있습니다.

다음은 트리거 발생 방법의 예입니다.
  1. render.js 파일을 편집하고 Sites SDK를 호출하여 트리거를 발생시키는 JavaScript 함수를 viewModel 객체에 추가합니다.
    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"에 대해 정의된 모든 작업을 트리거합니다. 또한 단일 필드 "whoAreYou"가 있는 triggerPayload를 통과합니다. "helloWorldWhoAreYou""whoAreYou" 값은 이전 단계에서 트리거를 등록할 때 입력한 값과 일치합니다.

주:

작업을 실행할 때 미리 정의된 순서는 없습니다. 각 작업은 나열된 순서대로 호출되지만, 다음 작업을 호출하기 전에 현재 작업이 완료되기를 기다리지는 않습니다. 작업이 비동기로 호출되는 경우 다음 작업을 실행하기 전에 현재 작업이 완료되지 않을 수 있습니다.