0

私が持っている機能で奇妙な動作に遭遇しましたが、何が起こっているのか説明できません。私はそれを当惑している同僚に見せました。

ここに私の質問に含まれている私のコードで。

  • デバッグ行 "Value=" の後、for ループが正しく壊れ、デバッグ行 "Completed Value=" が実行され、その後に関数 "updateBookingRecordWithConfirmationResponse" が続き、デバッグ行 "After updatefunctionCalled" が続きます。これまでのところ、すべて正しいです。次に何が起こっているのかは奇妙です。
  • 関数 "updateBookingRecordWithConfirmationResponse" と同様に、デバッグ ステートメント "Completed Value=" が再び実行され、次にデバッグ行 "After updatefunctionCalled" が再び実行されます。これは二度と起こらないはずです。関数「walkThroughReservationNode」は再度呼び出されませんが、デバッグ ログと updateBookingRecordWithConfirmationResponse の呼び出しは実行されます。

ここで詳述されているコードから、私のコードのエラーがどこにあるのか、または for ループの後にプロセスが再度実行される原因となっている可能性があるものを誰かが確認できる場合は、これに関するヘルプをいただければ幸いです。

前もって感謝します。

 private void walkThroughReservationNode(DOM.XmlNode envelope) {
     System.debug('in walkThroughReservationNode');
     ReservationConfirmationWrapper reservationConfirmationWrapper =
                                        new reservationConfirmationWrapper();
     for (DOM.XMLNode childNode : envelope.getChildElements()) {
         system.debug('in for loop');
         if (childNode.getName() == 'UniqueID') {
             System.debug('uniqueIDNodeVal=' + childNode.getAttribute('ID', ''));
             reservationConfirmationWrapper.bookingId = childNode.getAttribute('ID', '');
         } else if (childNode.getName() == 'ReservationID') {
             System.debug('Value=' + childNode.getAttribute('ID_Value', ''));
             reservationConfirmationWrapper.confirmationNumber = childNode.getAttribute('ID_Value', '');
             break;
         } else if (childNode.getName() == 'Warning') {
             System.debug('Warning Exists ' + childNode.getText());
             reservationConfirmationWrapper.warningMessage = childNode.getText();
             break;
         } else {
             system.debug('before new walkthrough');
             walkThroughReservationNode(childNode);
         }
     }
     System.debug('Completed Value=' + reservationConfirmationWrapper.confirmationNumber);
     updateBookingRecordWithConfirmationResponse(reservationConfirmationWrapper);
     System.debug('After updatefunctionCalled');
 }
4

2 に答える 2

0

デバッグ ログ メッセージのスタックを投稿していただけますか?

私はそのようなことを意味します:

dbgMsg1
dbgMsg2
dbgMsg3
....
dbgMsgN

あなたの説明からは完全に理解できないため、実行された順序で(System.debug(LoggingLevel.INFO, 'dbgMsg')必要なdbgメッセージのフィルタリングに使用)

私の側のコードからは正しいようですが、

  • 呼び出しのコンテキストとは何walkThroughReservationNodeですか? VF/トリガー/Webサービス/などですか?
  • 何をしupdateBookingRecordWithConfirmationResponseますか?再度呼び出す可能性のある DML はありwalkThroughReservationNodeますか?
  • 登場回数System.debug('in walkThroughReservationNode');は?
于 2013-07-25T04:51:39.810 に答える
0

こんにちはパベル、助けてくれてありがとう。エラーが行によるものであることがわかりました

} else { system.debug('新しいチュートリアルの前'); walkThroughReservationNode(childNode); }

これにより、完全なウォークスルーが再び発生し、updateBookingRecordWithConfirmationResponse(reservationConfirmationWrapper); が発生します。毎回呼び出される行は、私がすべきことではありません。

ご協力いただきありがとうございます。

于 2013-07-29T09:26:22.683 に答える