拡張機能を使用したメッセージの管理のガイドライン
拡張機能を使用してメッセージを定義します。
メッセージの設定
ノート
-
messageType. messageTypeをWARNINGまたはERRORとして定義します。 オーダー管理作業領域では、タイプごとに異なるアイコンが使用されます。
-
参照 設定およびメンテナンス作業領域の「オーダー参照の管理」ページを使用してメッセージを分類し、コードからメッセージを参照します。
事前定義済参照を使用するか、独自の参照を作成します。 カテゴリ化は、オーダー入力スペシャリストがメッセージを検索し、アナリティク・チャートで表示するのに役立ちます。
エラーがエラー・タイプ属性で作業領域オーダー管理に表示されるため、エラーを使用して検索および表示を改善します。
この例では、内容を顧客関係不一致として定義するとします。
-
「ヘッダーまたは明細」. エラーの発生場所を指定します。 次の値のいずれかを使用します。
-
「ヘッダー」. オーダー・ヘッダーで発生するエラーにメッセージを適用します。
-
「メロディ」. オーダー明細で発生するエラーにメッセージを適用します。
画面印刷の例では、
line
を使用します。 この例には、line
を変数として定義し、これを使用して販売オーダー内のすべての明細を反復処理し、エラーが発生したオーダー明細番号(3行目など)を保存するthrow new ValidationException
の上のコード(簡潔にするために表示されない)が含まれています。 実行時に、オーダー管理では、オーダー入力スペシャリストがメッセージ詳細を確認するためにクリックできるアイコンが3行目に表示されます。
-
-
メッセージの管理 設定およびメンテナンス作業領域の「メッセージの管理」ページを使用します。
-
メッセージを参照すると、メッセージをハード・コーディングすることよりも利点があります。
-
別の拡張機能からメッセージを参照し、拡張機能とは無関係にメッセージを管理し、メッセージを英語以外の言語に翻訳します。
-
「メッセージの管理」ページを使用すると、メッセージ管理を簡略化できます。他の開発者や管理者は、拡張機能の
hard coded
メッセージを変更するかわりに「メッセージの管理」を使用できるため、Groovyでの書込みに関する知識が必要です。 -
開発中の拡張機能のトラブルシューティングに役立つメッセージを定義することもできます。 様々なオブジェクトの状態を表示するメッセージに詳細を含めると、問題領域を特定しやすくなります。 拡張機能を本番環境にデプロイする準備ができたら、メッセージを削除します。
-
-
トークンを変数コンテンツのプレースホルダーとして使用します。
オーダー入力スペシャリストは、エラー・タイプまたはメッセージ・タイプに従って、オーダー管理作業領域でデータを表示および検索できます。 この例では、Overview(概要)ページにCustomer Relationship Mismatch(顧客関係不一致)がDraft Orders in Error(エラーの下書きオーダー)ダイアグラムのラベルとして表示されています。
オーダー入力スペシャリストは処理を実行できます。
-
円のオレンジ色の部分をクリックして、不一致のためにエラーが発生した販売オーダーにドリルします。
-
「顧客関係不一致」の「オーダーの管理」ページで「エラー・タイプ」属性を検索します。
エラー・メッセージの累計および表示
メッセージを累計し、オーダー管理作業領域に一度にまとめて表示します。
たとえば、エラー状態をチェックする3行を含む拡張子x、y、zを記述するとします。 実行時に、x、yおよびzがすべてエラー条件を満たしていると仮定します。ただし、xが検出されると、拡張子はただちに停止し、エラーxのメッセージが表示されます。
かわりに、yおよびzを経由して実行し続けるように拡張を記述し、各メッセージを一時リストに保存し、x、yおよびzのメッセージを1つのダイアログにまとめて表示します。 この手法により、オーダー・エントリ・スペシャリストは、すべてのエラーをまとめて確認し、それらを修正してから、xの修正、発行、修正、発行、修正および発行ではなく、販売オーダーを再発行できます。
たとえば:
販売実績の収益率が30%未満の場合、拡張によってメッセージが作成され、ローカル・リストに格納されます。 拡張はすべての販売実績を処理します。 販売実績の処理が終了した後にローカル・リストにメッセージが含まれている場合は、オーダー管理作業領域のダイアログに拡張に表示されます。
この例で各販売実績を確認するために使用するコードを次に示します。
コード |
摘要 |
---|---|
|
ValidationExceptionメソッドをインポートして、コードで使用できるようにします。 |
|
Messageメソッドをインポートして、コードで使用できるようにします。 |
|
salesCreditsというローカル変数を定義し、getAttributeメソッドを使用してオーダー・ヘッダーからSalesCredits属性の値を取得し、この変数の値をgetAttributeが返す値に設定します。 getAttrbute("SalesCredits")は、販売実績行へのアクセスに使用できるイテレータを返します。 たとえば、コードはこのトピックの後半でsalesCreditsを参照して、SalesCreditTypeCode、パーセントおよび営業担当を取得します。 |
|
このコードを使用します。
|
|
すべての販売実績の処理が終了するまで、各販売実績を繰り返します。 各販売実績の属性SalesCreditTypeCode、パーセントおよび営業担当を確認します。 |
|
|
|
条件がTrueの場合は、メッセージを作成し、ローカルの |
|
これらのトークンを定義します。
|
|
|
|
このコードを使用します。
|
|
単一のメッセージを含むローカル変数 |
|
ローカル・リスト whileループがすべての販売実績の処理を終了した後に、このチェックを実行します。 |
コメントのない完全なコードを次に示します。
import oracle.apps.scm.doo.common.extensions.ValidationException;
import oracle.apps.scm.doo.common.extensions.Message;
def salesCredits = header.getAttribute("SalesCredits");
List<Message> msgs = new ArrayList<Message>();
while( salesCredits.hasNext() ) {
def salesCredit = salesCredits.next();
if( "1".equals(salesCredit.getAttribute("SalesCreditTypeCode")) ) {
def percent = salesCredit.getAttribute("Percent");
if ( percent < 30 ) {
def tokens = [SALESPERSON: salesCredit.getAttribute("Salesperson"), PERCENT: percent];
Message msg = new Message(Message.MessageType.ERROR, "SALES_CREDIT_TOO_LOW_MSG", tokens);
msgs.add(msg);
}
}
}
if( !msgs.isEmpty() ) {
throw new ValidationException(msgs);
}
オーダー・インポート動作の考慮
インポートの動作は、拡張によって警告メッセージまたはエラー・メッセージが作成されるかどうかによって異なります。
ノート
-
「オーダー管理作業領域に入力された販売オーダー」. 作業領域の警告ダイアログ・オーダー管理では、オーダー入力スペシャリストが警告を確認してから、販売オーダーを送信するか、取り消すことができます。
-
「ソース・システムからインポートされたソース・オーダー」. エラーが発生した場合のみ、オーダー処理は停止します。 警告のみが発生した場合はメッセージを表示できますが、インポートによって販売オーダーがオーダー履行に送信されます。 ユーザーの介入は許可されません。