【发布时间】:2016-08-12 18:13:37
【问题描述】:
我在我们的 Siebel 7.8 应用程序中发现了一个非常奇怪的行为。这是业务服务的一部分:
var bo:BusObject;
var bc:BusComp;
try {
bo = TheApplication().GetBusObject("Service Request");
bc = bo.GetBusComp("Action");
bc.InvokeMethod("SetAdminMode", "TRUE");
bc.SetViewMode(AllView);
bc.ClearToQuery();
bc.SetSearchSpec("Status", "='Unscheduled' OR ='Scheduled' OR ='02'");
bc.ExecuteQuery(ForwardOnly);
var isRecord = bc.FirstRecord();
while (isRecord) {
log("Processing activity '" + bc.GetFieldValue("Id") + "'");
bc.SetFieldValue("Status", "03");
bc.WriteRecord();
isRecord = bc.NextRecord();
}
} catch (e) {
log("Exception: " + e.message);
} finally {
bc = null;
bo = null;
}
在日志文件中,我们得到如下内容:
Processing activity '1-23456'
Processing activity '1-56789'
Processing activity '1-ABCDE'
Processing activity '1-ABCDE'
Exception: The selected record has been modified by another user since it was retrieved.
Please continue. (SBL-DAT-00523)
因此,基本上,它会处理来自 BC 的一些记录,然后,显然是随机的,它“卡住”了。这就像 NextRecord 调用没有执行,而是再次处理相同的记录。
如果我删除 SetFieldValue 和 WriteRecord 以避免 SBL-DAT-00523 错误,它仍然会在日志文件中显示某些活动两次(仅两次)。
什么可能导致这种行为?
【问题讨论】:
标签: siebel