【发布时间】:2014-12-13 05:18:32
【问题描述】:
我们有一个 Siebel 7.8 应用程序,并且要求在用户保存满足特定条件的记录时显示一条消息。像这样的:
function BusComp_WriteRecord () {
if (conditions) {
TheApplication().RaiseErrorText("Terribly important message");
}
}
问题是我不能使用RaiseErrorText,因为它会阻止进一步的事件执行。这让我只能选择alert 或SWEAlert(除非有我不知道的其他选项)。
两者都只在浏览器脚本中受支持,BusComp_WriteRecord 事件没有浏览器版本。所有这一切意味着我必须在服务器脚本事件中保留我的验证,并以某种方式调用显示消息的浏览器脚本函数。我想出的唯一方法是这样的:
服务器脚本(在业务组件中):
function BusComp_WriteRecord () {
if (conditions) {
TheApplication().SetProfileAttr("MyMessage", "Terribly important message");
}
}
浏览器脚本(在一个总是在 BC 之前加载的小程序中):
function Applet_Load () {
listenerAlert();
}
function listenerAlert () {
var message = TheApplication().GetProfileAttr("MyMessage");
if ((message != null) && (message != "")) {
TheApplication().SetProfileAttr("MyMessage", "");
alert(message);
}
// Keep checking for messages each 0,5 seconds, forever...
setTimeout("listenerAlert()", 500);
}
它确实有效,但它对服务器性能的影响过大。我们每台服务器大约有 60 个用户,显然,为每个用户每秒检查两次配置文件属性太多了(CPU 使用率上升到 100%)。
那么,在 Siebel 7.8 中是否有任何其他方式向用户显示警报?它必须是警报或类似的,即 Siebel 广播消息不是一个选项。
或者,如果我必须坚持使用警报/SWEAlert:是否有任何其他方式可以在服务器脚本和浏览器脚本之间进行通信,而无需无休止的轮询?
【问题讨论】:
标签: siebel