Salesforce For循环:在“For”之后出现奇怪的行为;中断&引用;发生
我在一个函数中遇到了一些奇怪的行为,我无法解释发生了什么。我把它展示给一位同事,他也被它弄糊涂了 在我的代码中,包括在我的问题中Salesforce For循环:在“For”之后出现奇怪的行为;中断&引用;发生,salesforce,apex-code,xmlnode,force.com,Salesforce,Apex Code,Xmlnode,Force.com,我在一个函数中遇到了一些奇怪的行为,我无法解释发生了什么。我把它展示给一位同事,他也被它弄糊涂了 在我的代码中,包括在我的问题中 调试行“Value=”my for循环正确断开后,调试行 “Completed Value=“executes,后跟我的函数“updateBookingRecordWithConfirmationResponse”,后跟调试行“After updatefunctionCalled”。到目前为止,这一切都是正确的。接下来发生的事情很奇怪 调试语句“Completed
- 调试行“Value=”my for循环正确断开后,调试行 “Completed Value=“executes,后跟我的函数“updateBookingRecordWithConfirmationResponse”,后跟调试行“After updatefunctionCalled”。到目前为止,这一切都是正确的。接下来发生的事情很奇怪
- 调试语句“Completed Value=”与函数“updateBookingRecordWithConfirmationResponse”一样再次执行,然后调试行“After updatefunctionCalled”再次执行。这不应该再次发生。不会再次调用我的函数“walkThroughReservationNode”,但调试日志和对UpdateBookRecordWithConfirmationResponse的调用不会再次调用
private void演练ServationNode(DOM.XmlNode信封){
System.debug('在演练中的ServationNode');
ReservationConfirmationWrapper ReservationConfirmationWrapper=
新建reservationConfirmationWrapper();
对于(DOM.XMLNode childNode:envelope.getChildElements()){
system.debug('in-for-loop');
if(childNode.getName()=='UniqueID'){
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\u Value','');
打破
}else if(childNode.getName()=='Warning'){
debug('Warning Exists'+childNode.getText());
reservationConfirmationWrapper.warningMessage=childNode.getText();
打破
}否则{
system.debug(“新演练之前”);
演练ServationNode(子节点);
}
}
System.debug('Completed Value='+reservationConfirmationWrapper.confirmationNumber);
UpdateBookRecordWithConfirmationResponse(reservationConfirmationWrapper);
调试('After updatefunctionCalled');
}
您可以发布调试日志消息的堆栈吗
我的意思是:
dbgMsg1
dbgMsg2
dbgMsg3
....
dbgMsgN
按照它的执行顺序,因为从您的描述来看,它不是完全可以理解的(使用System.debug(LoggingLevel.INFO,'dbgMsg')
过滤所需的dbg消息)
从我的角度来看,代码似乎是正确的,但是:
- 调用的上下文是什么?是VF/trigger/web服务等吗
做什么?任何可能需要再次调用updateBookingRecordWithConfirmationResponse
的DML演练ServationNode
- 多少次
System.debug('在演练中的ServationNode')代码>出现了吗
- 你好,帕维尔谢谢你的帮助。我发现我的错误是由线路引起的
}else{system.debug('new演练之前');演练servationNode(childNode);}
这将导致再次执行完整演练,从而导致UpdateBookRecordWithConfirmationResponse(reservationConfirmationWrapper);每次都要打电话,这不是我应该做的
谢谢你的帮助。嗨,帕维尔,谢谢你的帮助。我发现我的错误是由于行}else{system.debug('before new walkthrough');walkThroughReservationNode(childNode);}这会导致再次执行完整的演练,从而导致updateBookingRecordWithConfirmationResponse(reservationConfirmationWrapper);每次都要调用的行。谢谢你的帮助。