機械翻訳について

拡張機能を使用したエラーの記録

メッセージを同じアプリケーション・ログ・ファイルに記録し、Oracleアプリケーションで使用されるものと同じアプリケーション設定を使用するオーダー管理拡張を作成します。

ログ中のパフォーマンスの低下を回避します。

  • SEVEREロギング・レベルは、読取りエラー条件などの非常に重要な条件にのみ使用します。 SEVEREとしてすべてのイベントをロギングすると、多数のログ・メッセージが生成され、パフォーマンスが低下します。

  • 詳細なレポートを取得するには、FINESTロギング・レベルを使用します。 エントリおよび終了ロギングにはFINESTを使用します。 Loggerメソッドは、様々なレベルでログを書き込むことができます。

  • 文字列を連結しないようにします。 ログ文で文字列を連結する必要がある場合は、連結する前に、ターゲット・ロギング・レベルのロギングが有効になるようにコードを記述します。

    Loggerメソッドを使用して、ロギング・レベルが有効になっていることを確認するコードを記述するときや、ログ文ごとにこのコードを含めるときに発生する可能性があるコード読取り性の問題を回避します。 Logger Methodは、レベルごとにログを記録する別の方法を提供します。 入力として書式文字列およびパラメータを使用できます。 ログに書き込む前に、ロギングがターゲット・レベルで有効になっている場合にのみ、書式文字列のパラメータを置換できます。 このアプローチは、コードでロギングが有効であることが確認されるまで、文字列操作を延期します。

ログ・レベルの設定方法を学習します。 詳細は、Java Platform, Standard Edition API仕様のjava.util.logging.Levelを参照してください。

このトピックではサンプル値を使用します。 ビジネス要件によっては、別の値が必要になる場合があります。

オーダー管理拡張機能の使用時に、エラー・メッセージをログに書き込みます:

  1. ログに書き込みます。

    コード

    説明

    def logger = context.getLogger();

    コンテキストからロガー・オブジェクトを取得します。 最初の数行は例から省略されています。

    def item = getItem(inventoryItemId, orgId);

    品目を取得します。 getItemメソッドをコールするときに、品目IDおよび組織IDを使用します。

    String hazardous = item.getAttribute("HazardousMaterialFlag");

    品目からHazardousMaterialFlag属性を取得します。

    if( "Y".equals(hazardous) ) {

    品目が危険かどうかを決定します。

    logger.logFinest("Found line with hazardous item %s, %s", inventoryItemId, orgId);

    最も詳細なレベルでログを記録します。 文字列の書式では最初の引数を指定し、後続の引数ではパラメータを指定します。

    def packShipInstruction = line. getOrCreateContextRow("PackShipInstruction");

    PackShipInstructionという拡張可能フレックスフィールド・コンテキストの行を取得します。

    packShipInstruction.setAttribute("_ShippingInstruction", "Hazardous Handling Required.");

    出荷指示のコンテキスト・セグメントを設定します。

  2. パブリック・ビュー・オブジェクトを定義します。

    コード

    説明

    Object getItem(Long itemId, Long orgId, def logger) {

    logger.logFiner("Entering method getItem");

    def itemPVO = context.getViewObject("oracle.apps.scm.productModel.items.publicView.ItemPVO");

    Itemという名前のパブリック・ビュー・オブジェクトのインスタンスを作成します。 FINERレベルでログに記録するように指定します。

    def vc = itemPVO.createViewCriteria();

    ビュー基準オブジェクトを作成します。

    def vcrow = vc.createViewCriteriaRow();

    ビュー基準行を作成します。

    vcrow.setAttribute("InventoryItemId", itemId);

    フィルタ条件に含める在庫品目属性と、この属性との比較時に使用する値を設定します。

    vcrow.setAttribute("OrganizationId", orgId);

    フィルタ条件に含める組織属性と、この属性と比較するときに使用する値を設定します。

    def rowset = itemPVO.findByViewCriteria(vc, -1);

    行をフィルタし、ビュー・オブジェクトを問い合せるためのビュー基準を指定します。

    def item = rowset.first();

    条件に一致する最初の品目行を取得します。

    logger.logFiner("Exiting method getItem: itemNumber %s", item.getAttribute("ItemNumber"));

    FINERレベルでログに記録するように指定します。 ログを終了します。

    コードはパラメータを使用します。

    • param itemId. 品目を識別する在庫品目ID。

    • param orgId. 品目を所有する組織を識別する在庫組織ID。

これはコメントのない同じコードです。

def logger = context.getLogger();                                                                   
def item = getItem(inventoryItemId, orgId);                                                         
String hazardous = item.getAttribute("HazardousMaterialFlag");                                      
if( "Y".equals(hazardous) ) {                                                                       
	logger.logFinest("Found line with hazardous item %s, %s", inventoryItemId, orgId);                
	def packShipInstruction = line. getOrCreateContextRow("PackShipInstruction");                     
	packShipInstruction.setAttribute("_ShippingInstruction", "Hazardous Handling Required.");         
}
Object getItem(Long itemId, Long orgId, def logger) {
	logger.logFiner("Entering method getItem");
	def itemPVO = context.getViewObject("oracle.apps.scm.productModel.items.publicView.ItemPVO");
	def vc = itemPVO.createViewCriteria();                                                               
	def vcrow = vc.createViewCriteriaRow();                                                              
	vcrow.setAttribute("InventoryItemId", itemId);                                                       
	vcrow.setAttribute("OrganizationId", orgId);                                                         
	def rowset = itemPVO.findByViewCriteria(vc, -1);                                                     
	def item = rowset.first();                                                                           
	logger.logFiner("Exiting method getItem: itemNumber %s", item.getAttribute("ItemNumber"));           
	return item;
}