アラートをカスタマイズするためのサンプル・ユース・ケース
このトピックでは、カスタマイズによってサポートされるアラート実装のいくつかのユース・ケースを示します。
すぐに使用可能なアラート・タイプのアラート表示の説明をカスタマイズする
- すぐに使用可能なアラートの説明をオーバーライドするには、構成に
descBundleKeyを指定します。 - 新しい翻訳リテラルを追加する方法については、 既存のコンポーネントやモジュールのバンドルエントリを定義するを参照してください。
以下の 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からインポートしていることを確認します。
ユーザーの組織が所有するアラートを表示します
デフォルトでは、アラートは、現在ログインしているユーザーと、そのユーザーがサブスクライブしているキューに基づいて表示されます。 以下のステップを実行して、ユーザーの組織が所有するアラートを表示できます。
extensionAlertConfigプロパティーでincludeAlertsOwnedByUsersOrganizationをResponseEnum.Yesとして設定します。- 表示するアラート・タイプの新規アラート・タイプ構成を定義します。 新しいアラート・タイプの場合は、以下のいずれかを実行できます。
- 新規アラート表示コンポーネントを作成し、そのコンポーネント・クラス名をアラート構成で使用します。
- すぐに使用可能な汎用アラート表示コンポーネント
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 に返されます。
以下のステップを使用して、アラートの追加データを取り込むために使用できるカスタム・マッシュアップを作成します。
- ビジネス・ニーズに基づいて新しいマッシュアップを作成します。 XAPI または REST ベースのマッシュアップを作成できます。 新しいマッシュアップの作成についての詳細は、 マッシュアップの拡張を参照してください。
- XAPI マッシュアップを作成する場合は、以下の手順を使用します。
com.ibm.isf.common.mashups.ISFBaseMashupを拡張して、新しいマッシュアップ実装クラスを作成します。massageInput(Element inputEl, SCUIMashupMetaData mashupMetaData, SCUIContext uiContext)メソッドをオーバーライドします。 このステップは必須です。- 例外の詳細を含む受信トレイ要素は、マッシュアップ入力のルート要素に子要素として追加されます。例えば、 exceptionType
YCD_BACKORDER_NOTICEのオーダー詳細を返す場合、以下のサンプルalertType構成に示すように、getOrderDetailsAPI を呼び出すためのカスタム・マッシュアップ (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> Inbox要素のOrderHeaderKeyやShipmentKeyなどの必須属性を使用して、マッシュアップ入力にスタンプを付け、massageInputメソッドでマッシュアップ入力を返すことができます。- マッシュアップ入力には、マッシュアップ定義の
Input要素で定義されている属性と要素のみが含まれている必要があります。 追加のエレメントであるInboxエレメントを削除する必要があります。 そうしないと、実行時にマッシュアップ・セキュリティー違反が発生します。前の例では、指定されたステップを実行した後、以下のマッシュアップ入力がmassageInputメソッドから返されます。<Order OrderHeaderKey=""/> - オプションで、ビジネス・ニーズに基づいて
massageOutputメソッドをオーバーライドできます。
このカスタム・マッシュアップ実装クラスから返される出力は、子要素として
Inbox要素に追加され、UI に返されます。この例では、オーダーの詳細がexceptionTypeYCD_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> - REST マッシュアップを作成する場合は、以下の手順を使用します。
com.ibm.isf.common.mashups.ISFRestBaseMashupを拡張して、新しいマッシュアップ実装クラスを作成します。massageInput(Element inputEl, SCUIMashupMetaData mashupMetaData, SCUIContext uiContext)メソッドをオーバーライドします。 このステップは必須です。- 例外の詳細を含む受信トレイ要素は、マッシュアップ入力のルート要素に子要素として追加されます。
例えば、各警告の出荷番号ごとにピック要求の詳細を取り出し、このデータを 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> InboxエレメントのOrderHeaderKey、ShipmentKey、およびShipmentNoなどの必須属性を使用して、それらをRestURLの照会パラメーターとして渡すことができます。- マッシュアップ入力要素で以下の属性を設定する必要があります。
HTTPMethodRestURLこれらの属性に正しい値を設定しないと、実行時にマッシュアップ検証が失敗します。
massageInputメソッドから戻る前に、マッシュアップ入力からInbox要素を削除する必要があります。- マッシュアップ入力には、マッシュアップ定義内の
Input要素で定義された属性および要素のみが含まれている必要があります。 追加の要素である受信トレイ要素を削除する必要があります。 そうしないと、実行時にマッシュアップ・セキュリティー違反が発生します。例えば、指定されたShipmentNoに対するすべてのピッキングリクエストを取得するには、 Store Inventory Management REST API の GETpick-requestsを呼び出す必要があります。 ここで、RestURL-stores/<NodeId>/pick-requests?shipmentNo=<ShipmentNo>HTTPMethod-GETmassageInputメソッドから返されるMashupInput:<RESTData HTTPMethod="GET" RestURL="stores/<NodeId>/pick-requests?shipmentNo=<ShipmentNo>" RestEndPointConfigProperty="yfs.sim.endpointurl" > </RESTData>
- オプションで、ビジネス・ニーズに基づいて
massageOutputメソッドをオーバーライドできます。 - このカスタム・マッシュアップ実装クラスから返される出力は、子要素として受信トレイ要素に追加され、UI に返されます。デフォルトでは、
YCD_HOT_PICKおよびYCD_NEAR_SLAexceptionType の Rest Mashupisf.alerts.getPickRequestByShipmentNoを呼び出して、各出荷のピック要求を取得します。 この REST マッシュアップは、 店舗在庫管理の GETpick-requestsAPI を呼び出し、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 の両方のマッシュアップに適用されます。