機械翻訳について

カスタム・イベント・サブスクリプションおよびVBからの公開

カスタム・イベント公開リクエストはVB内でリスニングでき、VBから公開リクエストを処理できます。

リクエストを解決または却下して、正または負のフィードバックを要求者に返送できます。 同様に、VBからカスタム・イベントをトリガーできるため、サブスクリプションを追加したレシーバは、VBから送信されるイベント・データに関する通知を受け取ります。

Fusion VBアプリケーションでは、uefCustomEventおよびtriggerUefCustomEventというコンテナに2つのイベントがあります。このイベントは、リスナーをcustomEventパブリッシュ・リクエストに追加したり、VBからcustomEventをトリガーするために使用されます:

uefCustomEvent使用方法: VB内のカスタム・イベント公開リクエストのリスニングおよび処理

GlobalContextの上部または同じブラウザ・タブからのTabContextの上部にあるカスタム・イベント公開リクエストは、VB内でtiを聞き、そのリクエストに独自のロジックを記述できます。 このリクエストを解決または拒否すると、customEventリクエストを発行しているパブリッシャに正または負のフィードが戻されます。

uefCustomEventによって呼び出されるevent.eventオブジェクトの構造の例を次に示します。

{
markFailure: () => {},
markSuccess: (data: any) => {},
requestDetails: {
customEventName: string;
payload: any;
},
objectContext: {
objectId: null,
objectType: null,
tabId: string,
msiTabId: null,
msiSubTabId: null
}
}

次にステップを示します。

  1. uefCustomEventにリスナーを追加します。
  2. イベント・オブジェクトで、customEventNameを確認します。
  3. イベント・オブジェクトで使用可能なmarkSuccessまたはmarkFailureコールバックをコールします。
  4. MarkSuccessコールバックを実行すると、customEventパブリッシャに肯定的なフィードバックが得られます。 markSuccessコールバックで渡されたデータは、パブリッシャで受信されます。
  5. MarkFailureコールバックを実行すると、customEventパブリッシャに否定的なフィードバックが得られます。

別のbrowserTab-2からbrowserTab-1のuefCustomEventリスナーを起動する必要がある場合は、browserTab-2からbrowserTab-1のtabContextの上にあるパブリッシュAPIをコールし、このステップで説明するアクションを実行できます。

triggerUefCustomEvent使用方法: VBからのカスタム・イベントのトリガー

VBアプリケーションから任意のcustomEventをトリガーして、同じイベントにサブスクライブされているすべてのアプリケーションでその通知を取得できます。 サブスクリプションが追加された受信側で受信したこのカスタム・イベントを使用して、任意のデータを渡すことができます。

ServiceCenterコンテナ・ページのtriggerUefCustomEventという名前のイベントは、イベント・ペイロード・オブジェクト内のeventNameおよびペイロード・プロパティを受け入れます。

次にステップを示します。

  1. コンテナ・ページのアクション・チェーンから、Fire Eventブロックをコールします(たとえば、ボタン・クリックで、ボタン・クリックのアクション・チェーンにFire Eventブロックをコールするアクション・チェーンを追加します)。
  2. ページ・レベルでeventNameをtriggerUefCustomEventとして選択します(コンテナ・ページ)
  3. イベントのペイロード・オブジェクトの割当てブロックをクリック
  4. イベント・オブジェクトのeventName属性にcustomEventNameを指定します。
  5. イベント・オブジェクトのペイロード属性のオブジェクトとしてデータを指定します。

同じcustomEventNameのサブスクリプションを追加したアプリケーションは、このアクション・チェーン・ブロックが実行されるたびに通知を受け取ります。 ペイロード属性で渡されたデータも受信します。 したがって、VBは任意のcustomEventをトリガーし、同じcustomEventに関心のあるアプリケーションが通知およびVBから渡されるイベント・データを取得できるように、それとともにデータを渡すことができます。

ノート: VBからトリガーされるイベントは、GlobalContextの上でトリガーされるため、globalContextの上にサブスクリプションが追加されたブラウザ・タブからも同じことをリスニングできます。
UIEventsAPPFramework.UefClient.getUEFProvider().then((CX_SVC_UI_EVENTS_FRAMEWORK) => {
  CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('MyFirstExtensionID').then((uefProvider) => {
    uefProvider.getGlobalContext().then((globalContext) => {
      const requestObject = uefProvider.requestHelper.createSubscriptionRequest('cxEventBusTabOpenEvent');
      globalContext.subscribe(requestObject, (response) => {
        console.log('Response from UEF API used in APP Window___', response);
      });
    });
  });
});

例: UEFを使用して、VBアプリケーション・ウィンドウのフィールド値変更をサブスクライブします:

async listenFieldValueChange() {
      const uefProvider = await UIEventsAPPFramework.UefClient.getUEFProvider();  
      const frameworkProvider = await uefProvider.uiEventsFramework.initialize('FVC');  
      const tabContext = await frameworkProvider.getTabContext();
      const recordContext = await tabContext.getActiveRecord();   
      const requestObject =  
      frameworkProvider.requestHelper.createSubscriptionRequest('cxEventBusFieldValueChangeEvent');
      requestObject.setFields(['ServiceRequest.Title','ServiceRequest.ProblemDescription']);

      recordContext.subscribe(requestObject, (response) => {          
          const fieldName = response.getResponseData().getFieldName();
          const newValue = response.getResponseData().getNewValue();
          const oldValue = response.getResponseData().getOldValue();
          console.log(`Field Name: ${fieldName}, oldValue: ${oldValue}, newValue: ${newValue}`);
      });
}