機械翻訳について

拡張機能が完了するまでにかかる時間を確認

オーダー管理拡張によって、販売オーダーの保存または発行に時間がかかる場合があります。

たとえば、複雑な拡張は、レスポンスが遅いサービスと統合できます。 この問題をトラブルシューティングするには、拡張でこのコードを使用し、実行の完了にかかる時間を測定できます:

logger = context.getLogger();
def startTime = context.getCurrentTime();
try {
  /*your custom code*/
}finally {
  logDuration(startTime);
}
/*your custom functions*/
void logDuration(java.sql.Timestamp startTime) {
  def endTime = context.getCurrentTime();
  long diff = endTime.getTime() - startTime.getTime();
  logger.logSevere( "ExtensionDurationCheck;" +
context.getExtensionName() + " " + header.getAttribute("OrderNumber") + ";" + diff.toString());
}

時間しきい値を超えた場合は、拡張を終了するか、少なくともログを調べて終了までに時間がかかっている拡張(販売オーダー)を特定してから、修正処理を実行できます。

このコードを考えます。

OALOMExtensionDurationCheck;extension_name;extension_runtime_duration.

説明

  • オーダー管理は、extension_nameを拡張機能の名前に置き換えます。

  • オーダー管理は、extension_runtime_durationを時間、分および秒の時間に置き換えます。

このコードによって、SEVEREレベルで拡張を設定した場合でも、オーダー管理で拡張のログが作成されるようになります。

コードによってこれらの詳細がログに追加されるとします。

'OALOMExtensionDurationCheck;CopyOrderFields for Return Orders;122'

これは、CopyOrderFields for Return Ordersという名前の拡張が終了するまでに122ミリ秒かかったことを意味します。

ログの確認

別の方法として、ログを確認できます。 発行リクエストの終了時拡張ポイントで実行される拡張の例を考えてみます。

  1. ロギング・プロファイルをFINERに設定します。

  2. 販売オーダーを作成して送信します。

  3. 拡張用のログを開き、結果を確認します。

    Finished invoking extensions for event ON_END_SUBMIT in 5ms

次に、ログの例を示します。 テキストin 5msを検索します。

scm.doo.common.extensions.model.applicationModule.DooCommonExtensionsAMImpl] [SRC_CLASS: oracle.apps.fnd.applcore.log.AppsODLHandler] [SRC_METHOD: publish] Invoking ON_END_SUBMIT Extensions for headerId: 300100185658909
[2020-03-27T20:24:14.877+00:00] [UIServer_2] [TRACE:16] [] [oracle.apps.appslogger] [tid: 130] [userId: ORDER_ENTRY_SPEC] [ecid: 005cTjY2YVbDg^O5Ijo2yf00055I0001Ye,0:4] [APP: ORA_FSCM_UIAPP#V2.0.n-TV_j4ycNhG-GhU36AdAA] [APPS_USER_NAME: ORDER_ENTRY_SPEC] [APPS_SESSION_ID: A1D8F6426C73FA3CE0530503F40A6116] [APPS_THREAD_NAME: [ACTIVE].ExecuteThread: '20' for queue: 'weblogic.kernel.Default (self-tuning)'] [APPS_TERRITORY: US] [APPS_AUTO_LOG: false] [APPS_USER_ID: 27E079FDC4D0AE55B8F4F424AD9940EA] [APPS_DB_CONNECTION_URL: jdbc:oracle:thin:@FA_DEFAULT] [APPS_SOURCE: scm.doo.orchInfra.protectedModel.extensionsFwk.applicationModule.ExtensionsRuntimeAMImpl] [SRC_CLASS: oracle.apps.fnd.applcore.log.AppsODLHandler] [SRC_METHOD: publish] Entering invokeExtensions - eventCode: ON_END_SUBMIT
[2020-03-27T20:24:14.881+00:00] [UIServer_2] [TRACE] [] [oracle.apps.appslogger] [tid: 130] [userId: ORDER_ENTRY_SPEC] [ecid: 005cTjY2YVbDg^O5Ijo2yf00055I0001Ye,0:4] [APP: ORA_FSCM_UIAPP#V2.0.n-TV_j4ycNhG-GhU36AdAA] [APPS_USER_NAME: ORDER_ENTRY_SPEC] [APPS_SESSION_ID: A1D8F6426C73FA3CE0530503F40A6116] [APPS_THREAD_NAME: [ACTIVE].ExecuteThread: '20' for queue: 'weblogic.kernel.Default (self-tuning)'] [APPS_TERRITORY: US] [APPS_AUTO_LOG: false] [APPS_USER_ID: 27E079FDC4D0AE55B8F4F424AD9940EA] [APPS_DB_CONNECTION_URL: jdbc:oracle:thin:@FA_DEFAULT] [APPS_SOURCE: scm.doo.orchInfra.protectedModel.extensionsFwk.applicationModule.ExtensionsRuntimeAMImpl] [SRC_CLASS: oracle.apps.fnd.applcore.log.AppsODLHandler] [SRC_METHOD: publish] Finished invoking extension Default EFF in 0ms
[2020-03-27T20:24:14.882+00:00] [UIServer_2] [TRACE] [] [oracle.apps.appslogger] [tid: 130] [userId: ORDER_ENTRY_SPEC] [ecid: 005cTjY2YVbDg^O5Ijo2yf00055I0001Ye,0:4] [APP: ORA_FSCM_UIAPP#V2.0.n-TV_j4ycNhG-GhU36AdAA] [APPS_USER_NAME: ORDER_ENTRY_SPEC] [APPS_SESSION_ID: A1D8F6426C73FA3CE0530503F40A6116] [APPS_THREAD_NAME: [ACTIVE].ExecuteThread: '20' for queue: 'weblogic.kernel.Default (self-tuning)'] [APPS_TERRITORY: US] [APPS_AUTO_LOG: false] [APPS_USER_ID: 27E079FDC4D0AE55B8F4F424AD9940EA] [APPS_DB_CONNECTION_URL: jdbc:oracle:thin:@FA_DEFAULT] [APPS_SOURCE: scm.doo.orchInfra.protectedModel.extensionsFwk.applicationModule.ExtensionsRuntimeAMImpl] [SRC_CLASS: oracle.apps.fnd.applcore.log.AppsODLHandler] [SRC_METHOD: publish] Finished invoking extensions for event ON_END_SUBMIT in 5ms
[2020-03-27T20:24:14.882+00:00] [UIServer_2] [TRACE:16] [] [oracle.apps.appslogger] [tid: 130] [userId: ORDER_ENTRY_SPEC] [ecid: 005cTjY2YVbDg^O5Ijo2yf00055I0001Ye,0:4] [APP: ORA_FSCM_UIAPP#V2.0.n-TV_j4ycNhG-GhU36AdAA] [APPS_USER_NAME: ORDER_ENTRY_SPEC] [APPS_SESSION_ID: A1D8F6426C73FA3CE0530503F40A6116] [APPS_THREAD_NAME: [ACTIVE].ExecuteThread: '20' for queue: 'weblogic.kernel.Default (self-tuning)'] [APPS_TERRITORY: US] [APPS_AUTO_LOG: false] [APPS_USER_ID: 27E079FDC4D0AE55B8F4F424AD9940EA] [APPS_DB_CONNECTION_URL: jdbc:oracle:thin:@FA_DEFAULT] [APPS_SOURCE: scm.doo.common.extensions.model.applicationModule.DooCommonExtensionsAMImpl] [SRC_CLASS: oracle.apps.fnd.applcore.log.AppsODLHandler] [SRC_METHOD: publish] Exiting invokeExtensions

警告メッセージの使用

別の方法として、警告メッセージを使用できます。

次に、拡張の実行時間を測定し、メッセージング・フレームワークを使用してOracle警告メッセージに表示する拡張機能の例を示します。

import oracle.apps.scm.doo.common.extensions.ValidationException;
import oracle.apps.scm.doo.common.extensions.Message;
import oracle.apps.scm.doo.common.extensions.Message;
List<Message> messages = new ArrayList<Message>();
 def starttime = context.getCurrentTime();  //get current time
 
//assume you want to get the order lines that are in the sales order
def lines = header.getAttribute("Lines");                                                 
while( lines.hasNext() ) {                                                                         
  def line = lines.next(); 
  
  // do whatever processing you need                                                                   
}
 
def endtime = context.getCurrentTime(); // assuming that this is the end of your macro, register the time
 
 // this example code creates a warning message named TEST_LOGGING_MESSAGE. It uses 3 tokens: start time, end time, and extension name.
 
def tokens = [START_TIME: starttime.toString(), END_TIME: endtime.toString(), EXTENSION_NAME: context.getExtensionName()]; //create
 
Message logMessage =  new Message(Message.MessageType.WARNING, "ORA_MANAGE_EXTENSIONS", "TEST_LOGGING_MESSAGE",tokens);
messages.add(logMessage);
ValidationException ex = new ValidationException(messages);
 
 // if you want to print only the time, do this:
 
 //def printstring = "Start time : " + starttime.toString() +  "\n" + "End time : " + endtime.toString();
//ValidationException ex = new ValidationException(printstring);
//ValidationException ex = new ValidationException("ORA_MANAGE_EXTENSIONS", "TEST_LOGGING_MESSAGE", tokens);
 
throw ex;