コンポーネントには、他のコンポーネントでアクションを実行するトリガーを含めることができます。コンポーネントによって呼び出されるトリガーを登録する必要があります。
コンポーネントは、トリガーにペイロードを提供します。このペイロードは、トリガーが呼び出されたときに実行される任意のアクションに渡されます。各トリガーに対して実行されるアクションを選択できます。連携して動作するよう構築されたコンポーネントは、ユーザー操作なしでアクションを実行するためにトリガーを自動的に呼び出すことができます。
トリガーの登録
カスタム・コンポーネントの場合、トリガーは、コンポーネントの登録データの一部として登録されます。トリガーを追加するには、コンポーネントによってサポートされている各トリガーを使用して"triggers"プロパティ配列を更新します。また、トリガーがサポートしているペイロードを指定し、アクションによってサポートされるプロパティにユーザーがペイロード内の値をマップできるようユーザー・インタフェースを作成できるようにする必要があります。
appinfo.jsonファイルを編集し、"triggers":[],エントリをレビューします:
"triggers": [{
"triggerName": "helloWorldWhoAreYou",
"triggerDescription": "Show Who I Am",
"triggerPayload": [{
"name": "whoAreYou",
"displayName": "Who I Am"
}]
}],ファイルをサイト・サーバーに同期化します。
このサンプルのトリガー・エントリでは、triggerName ("helloWorldWhoAreYou")を定義しました。名前値は一意である必要があります。次に、トリガーに説明("Show Who I Am")を付けました。これは、トリガーを表示するためにユーザー・インタフェース・ダイアログで使用されます。最後に、トリガーの単一値のペイロードを定義しました。ユーザーは、このペイロード内のエントリを選択し、これらをアクション内のフィールドにマップします。
トリガーが登録されたら、コンポーネントの「設定」パネルの「リンク」タブに移動したときにトリガーを表示して選択できるようになります。
トリガーの呼出し
トリガーは、コンポーネントが任意の時点で呼び出すことができます。通常、トリガーは、ボタンのクリックや表内の行の選択などのユーザー操作によって呼び出されます。REST APIコールが原因でデータが変更された場合など、コンポーネントが任意の基準に基づいてトリガーを呼び出すことができます。トリガーが呼び出された場合、任意の数のアクションを実行できます。
render.jsファイルを編集し、トリガーを呼び出すためにサイトSDKをコールするJavaScript関数をviewModelオブジェクトに追加します。
self.raiseTrigger = function (triggerName) {
SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
'triggerName': 'helloWorldWhoAreYou',
'triggerPayload': { "whoAreYou": "This is " + self.whoAreYou() + "!"}
});
};-edit template.html)およびボタンを</div>の前に追加します。
<button data-bind="click raiseTrigger">Who Am I?</button>
render.jsファイルをOracle Content Managementインスタンス・サーバーに同期またはアップロードします。
ViewModelオブジェクトで、ボタンがクリックされたときに呼び出されるJavaScript関数を作成しました。この関数は、サイトSDKを呼び出し、このトリガー"helloWorldWhoAreYou"に定義されているすべてのアクションをトリガーするよう命じます。これはまた、単一のフィールド"whoAreYou"を持つtriggerPayloadを経ます。これらの値"helloWorldWhoAreYou"および"whoAreYou"は、前の手順でトリガーを登録したときに入力した値と一致します。
注:
アクションが実行されるタイミングに関して事前定義済の順序はありません。各アクションはリストされている順序でコールされますが、現在のアクションが完了するまで待機しないと次のアクションがコールされないわけではありません。アクションによって非同期コールが行われる場合、次のアクションが実行される前に完了しない可能性があります。