非推奨次世代プラットフォーム

アラートをカスタマイズするためのサンプル・ユース・ケース

このトピックでは、カスタマイズによってサポートされるアラート実装のいくつかのユース・ケースを示します。

すぐに使用可能なアラート・タイプのアラート表示の説明をカスタマイズする

以下の JSON 仕様は、ホット・ピック・アラート・タイプの説明を High priority から Hot pickにオーバーライドするためのものです。
static extensionAlertConfig: IAlertsConfig = {
        alertConfigList: [
            {
                personaName: 'Order_Fulfillment',
                alertTypes: [
                        {
                     tid: 'YCD_HOT_PICK',
                     exceptionType: 'YCD_HOT_PICK',
                     descBundleKey: 'alerts.LABEL_HighPick'
                        }
                ]
            }
        ]
    };

すぐに使用可能なアラート・タイプのアラート表示コンポーネントのカスタマイズ

  • アラート・リストに表示されるアラートの詳細は、 Persona-Alert 構成で定義されたコンポーネントによってレンダリングされます。 このコンポーネントは、アラート・タイプに基づいて動的にレンダリングされます。
  • すぐに使用可能なアラート・コンポーネントをオーバーライドするには、構成内の component プロパティーに新規コンポーネントを指定します。
以下の JSON 仕様は、ホット・ピック (YCD_HOT_PICK) アラート・タイプに新しいカスタム・アラート・コンポーネント CustomHotPickAlertComponent を使用する方法を示しています。
static extensionAlertConfig: IAlertsConfig = {
        alertConfigList: [
            {
                personaName: 'Order_Fulfillment',
                alertTypes: [
                  {
                     tid: 'YCD_HOT_PICK',
                     exceptionType: 'YCD_HOT_PICK',
                    component: CustomHotPickAlertComponent
                  }
                ]
            }
        ]
    };
注:
  • 対応するアラート・コンポーネント、サービス、またはプロバイダー・クラスを必ず alert-extension.module.tsにインポートしてください。
  • store-app-build フォルダーからではなく、 store-extensions-src からインポートしていることを確認します。

ユーザーの組織が所有するアラートを表示します

デフォルトでは、アラートは、現在ログインしているユーザーと、そのユーザーがサブスクライブしているキューに基づいて表示されます。 以下のステップを実行して、ユーザーの組織が所有するアラートを表示できます。
  1. extensionAlertConfig プロパティーで includeAlertsOwnedByUsersOrganizationResponseEnum.Yes として設定します。
  2. 表示するアラート・タイプの新規アラート・タイプ構成を定義します。 新しいアラート・タイプの場合は、以下のいずれかを実行できます。
    • 新規アラート表示コンポーネントを作成し、そのコンポーネント・クラス名をアラート構成で使用します。
    • すぐに使用可能な汎用アラート表示コンポーネント GenericAlertComponentを使用します。 ここには、「オーダー番号」、「出荷番号」、「出荷ステータス」、および「警告の削除」アクションなどの基本的な警告の詳細が表示されます。 この場合、アラート構成で定義されるコンポーネント・クラス名として GenericAlertComponent を使用します。
    注: includeAlertsOwnedByUsersOrganization プロパティーを有効にする場合は、特定のアラート・タイプを定義する必要があります。 extensionAlertConfig で定義されたアラートタイプのみが、 スターリング Store Engagement のユーザーインターフェイスに表示されます。
次の JSON 仕様は、 Sterling Store Engagement のアラートリストで、ユーザーの組織が所有する YCD_BACKORDER_NOTICE アラートを表示する方法を示しています:
static extensionAlertConfig: IAlertsConfig =      {
        alertConfigList: [
       {
            personaName: 'Order_Fulfillment',
            alertTypes: [
                   {
                         tid: 'YCD_BACKORDER_NOTICE',
                         exceptionType: 'YCD_BACKORDER_NOTICE',
                          component: BackOrderNoticeAlertComponent, // Or GenericAlertComponent
                          descBundleKey: 'alerts.LABEL_BackorderNotice'
                    }
               ]
        }
      ],
includeAlertsOwnedByUsersOrganization: ResponseEnum.Yes
}

アラートの追加データの取り込み

ビジネス・ニーズに合わせてカスタム・マッシュアップを作成し、各アラートのユーザー・インターフェースに表示する追加データを渡すことができます。 カスタム・マッシュアップを呼び出して、ユーザー・インターフェース固有のデータを返すことができます。

MashupId 値は、 additionalDataMashupId プロパティーで指定されます。 このプロパティーはオプションです。 additionalDataMashupId プロパティーは、 getExceptionList API によって返される各受信トレイ・レコードで呼び出されます。 このプロパティーが定義されていない場合、 getExceptionList API マッシュアップ用に定義されたテンプレートが UI に返されます。

以下のステップを使用して、アラートの追加データを取り込むために使用できるカスタム・マッシュアップを作成します。
  1. ビジネス・ニーズに基づいて新しいマッシュアップを作成します。 XAPI または REST ベースのマッシュアップを作成できます。 新しいマッシュアップの作成についての詳細は、 マッシュアップの拡張を参照してください。
  2. XAPI マッシュアップを作成する場合は、以下の手順を使用します。
    1. com.ibm.isf.common.mashups.ISFBaseMashupを拡張して、新しいマッシュアップ実装クラスを作成します。
    2. massageInput(Element inputEl, SCUIMashupMetaData mashupMetaData, SCUIContext uiContext) メソッドをオーバーライドします。 このステップは必須です。
    3. 例外の詳細を含む受信トレイ要素は、マッシュアップ入力のルート要素に子要素として追加されます。
      例えば、 exceptionType YCD_BACKORDER_NOTICEのオーダー詳細を返す場合、以下のサンプル alertType 構成に示すように、 getOrderDetails API を呼び出すためのカスタム・マッシュアップ (extn_isf.alerts.getOrderDetaits) を作成できます。
      {
         tid: 'YCD_BACKORDER_NOTICE',
         exceptionType: 'YCD_BACKORDER_NOTICE',
         component: ExtnBackOrderNoticeAlertComponent,
         additionalDataMashupId: 'extn_isf.alerts.getOrderDetaits',
         descBundleKey: 'alerts.LABEL_BackorderNotice'
      }
      以下のサンプルは、 massageInput メソッドで受け取ったマッシュアップ入力を示しています。
      <Order>
             <Inbox Description="" ExceptionType="" ExceptionTypeDescription="" GeneratedOn=""
             InboxKey="" OrderHeaderKey="" OrderNo="" Priority="" ShipmentNo="" ShipmentKey=""/>
      </Order>
    4. Inbox 要素の OrderHeaderKeyShipmentKey などの必須属性を使用して、マッシュアップ入力にスタンプを付け、 massageInput メソッドでマッシュアップ入力を返すことができます。
    5. マッシュアップ入力には、マッシュアップ定義の Input 要素で定義されている属性と要素のみが含まれている必要があります。 追加のエレメントである Inbox エレメントを削除する必要があります。 そうしないと、実行時にマッシュアップ・セキュリティー違反が発生します。
      前の例では、指定されたステップを実行した後、以下のマッシュアップ入力が massageInput メソッドから返されます。
      <Order OrderHeaderKey=""/>
    6. オプションで、ビジネス・ニーズに基づいて massageOutput メソッドをオーバーライドできます。

    このカスタム・マッシュアップ実装クラスから返される出力は、子要素として Inbox 要素に追加され、UI に返されます。

    この例では、オーダーの詳細が exceptionType YCD_BACKORDER_NOTICE の各 Inbox エレメントに追加され、UI に返されます。
    <InboxList TotalNumberOfRecords="2">
    <Inbox Description="Backorder notice" ExceptionType="YCD_BACKORDER_NOTICE" ExceptionTypeDescription="Backorder notice"  InboxKey="098769" OrderHeaderKey="1234567" OrderNo="1244567" Priority="1" ShipmentNo="1234" ShipmentKey="1234">
        <Order OrderHeaderKey="1234567" OrderNo="1234567" EnterpriseCode="Matrx-R"/>
    </Inbox>
    <Inbox Description="Backorder notice" ExceptionType="YCD_BACKORDER_NOTICE" ExceptionTypeDescription="Backorder notice"  InboxKey="09876" OrderHeaderKey="123456" OrderNo="124456" Priority="1" ShipmentNo="123" ShipmentKey="123">
        <Order OrderHeaderKey="123456" OrderNo="123456" EnterpriseCode="Matrx-R"/>
    </Inbox>
    </InboxList>
  3. REST マッシュアップを作成する場合は、以下の手順を使用します。
    1. com.ibm.isf.common.mashups.ISFRestBaseMashupを拡張して、新しいマッシュアップ実装クラスを作成します。
    2. massageInput(Element inputEl, SCUIMashupMetaData mashupMetaData, SCUIContext uiContext) メソッドをオーバーライドします。 このステップは必須です。
    3. 例外の詳細を含む受信トレイ要素は、マッシュアップ入力のルート要素に子要素として追加されます。

      例えば、各警告の出荷番号ごとにピック要求の詳細を取り出し、このデータを UI に渡したいとします。 また、ストア担当者が 「オーダーのピック」 アクションまたは 「続行」 アクションをクリックすると、 pickRequestIdを渡すことによってバックルーム・ピック・フローが起動されます。

      以下のサンプル alertType 構成は、この例を示しています。
      {
         tid: 'YCD_NEAR_SLA',
         exceptionType: 'YCD_NEAR_SLA,
         component: NearSLAAlertComponent,
         additionalDataMashupId: 'isf.alerts.getPickRequestByShipmentNo'
      }
      以下のサンプルは、 massageInput メソッドで受け取ったマッシュアップ入力を示しています。
      <RESTData HTTPMethod="GET"  RestURL="stores/Mtrx_Store_1" RestEndPointConfigProperty="yfs.sim.endpointurl" >
             <Inbox Description="" ExceptionType="" ExceptionTypeDescription="" GeneratedOn=""
             InboxKey="" OrderHeaderKey="" OrderNo="" Priority="" ShipmentNo="" ShipmentKey=""/>
      </RESTData>
    4. Inbox エレメントの OrderHeaderKeyShipmentKey、および ShipmentNo などの必須属性を使用して、それらを RestURLの照会パラメーターとして渡すことができます。
    5. マッシュアップ入力要素で以下の属性を設定する必要があります。
      • HTTPMethod
      • RestURL

        これらの属性に正しい値を設定しないと、実行時にマッシュアップ検証が失敗します。

    6. massageInput メソッドから戻る前に、マッシュアップ入力から Inbox 要素を削除する必要があります。
    7. マッシュアップ入力には、マッシュアップ定義内の Input 要素で定義された属性および要素のみが含まれている必要があります。 追加の要素である受信トレイ要素を削除する必要があります。 そうしないと、実行時にマッシュアップ・セキュリティー違反が発生します。
      例えば、指定された ShipmentNo に対するすべてのピッキングリクエストを取得するには、 Store Inventory Management REST API の GET pick-requests を呼び出す必要があります。 ここで、
      • RestURL - stores/<NodeId>/pick-requests?shipmentNo=<ShipmentNo>
      • HTTPMethod - GET
      • massageInput メソッドから返される MashupInput :
        <RESTData HTTPMethod="GET"  RestURL="stores/<NodeId>/pick-requests?shipmentNo=<ShipmentNo>" RestEndPointConfigProperty="yfs.sim.endpointurl" >
        </RESTData>
    8. オプションで、ビジネス・ニーズに基づいて massageOutput メソッドをオーバーライドできます。
    9. このカスタム・マッシュアップ実装クラスから返される出力は、子要素として受信トレイ要素に追加され、UI に返されます。
      デフォルトでは、 YCD_HOT_PICK および YCD_NEAR_SLA exceptionType の Rest Mashup isf.alerts.getPickRequestByShipmentNo を呼び出して、各出荷のピック要求を取得します。 この REST マッシュアップは、 店舗在庫管理の GET pick-requests API を呼び出し、 Inbox 要素に追加されたピッキング対象のピッキングリクエスト詳細を返します。 以下のサンプルは、UI で受信されるデータを示しています。
      <InboxList TotalNumberOfRecords="2">
      <Inbox Description="Near SLA" ExceptionType="YCD_NEAR_SLA" ExceptionTypeDescription="Near SLA"  InboxKey="098769" OrderHeaderKey="1234567" OrderNo="1244567" Priority="1" ShipmentNo="1234" ShipmentKey="1234">
          <PickRequest pickRequestId="1234567" status="NOT_STARTED" />
      </Inbox>
      <Inbox Description="Hot pick" ExceptionType="YCD_HOT_PICK" ExceptionTypeDescription="Hot pick"  InboxKey="09876" OrderHeaderKey="123456" OrderNo="124456" Priority="1" ShipmentNo="123" ShipmentKey="123">
          <PickRequest pickRequestId="123456" status="IN_PROGRESS" />
      </Inbox>
      </InboxList>

    Rest API用のマッシュアップの書き方については、 マッシュアップの拡張を参照してください。

注: 実行時のマッシュアップ・セキュリティー違反を回避するために、 massageInput メソッドから戻る前に、マッシュアップ入力から Inbox 要素を削除する必要があります。 これは、XAPI と REST の両方のマッシュアップに適用されます。