2014-10-17 56 views
2

我们有一个Siebel 7.8应用程序,并且当用户保存满足特定条件的记录时显示一条消息的要求。事情是这样的:如何在Siebel中显示来自服务器脚本的警报?

function BusComp_WriteRecord() { 
    if (conditions) { 
    TheApplication().RaiseErrorText("Terribly important message"); 
    } 
} 

的问题是,我不能使用RaiseErrorText,因为它阻止了进一步的活动的执行。这使我与alertSWEAlert(除非有另一个我不知道的选项)。

两者都仅在浏览器脚本中受支持,并且没有浏览器版本的BusComp_WriteRecord事件。所有这一切意味着我必须在服务器脚本事件中保留我的验证,并以某种方式调用显示消息的浏览器脚本函数。我想出的唯一办法是这样的:

服务器脚本(业务组件):

function BusComp_WriteRecord() { 
    if (conditions) { 
    TheApplication().SetProfileAttr("MyMessage", "Terribly important message"); 
    } 
} 

浏览器的脚本(在applet它总是在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广播消息不是一种选择。

或者,或者,如果我必须坚持使用警报/ SWAlert:是否有任何其他方式在服务器脚本和浏览器脚本之间进行通信,而无需进行无限轮询?

回答

3

如果仍然可以使用浏览器脚本,则可以在小程序级别编写代码。 Applet已被

功能Applet_PreInvokeMethod(姓名,inputPropSet)

您可以检查名称== “WriteRecord”,做您的验证那里,并弹出提示()提示。

请告诉我们它是否有效。

+0

这可以工作,但我将不得不在每一个基于这个BC的小程序上复制相同的代码,并且*有很多* ... – AJPerez 2014-10-20 07:13:00

+0

嗯..你现有的解决方案还有用户applet浏览器脚本,但更多的线。您可以用较少的线路尝试此解决方案。我注意到的另一件事,你现有的脚本是在BusComp_WriteRecord中,在记录提交到db之后触发。因此,在这里使用RaiseErrorText不应该回滚任何更改。记录保存后会出现该信息。 – 2014-10-21 05:51:39

+0

是的,但我的浏览器脚本只能写入一个小程序中,因为一旦“侦听程序”已设置好,它就可以在任何地方使用。有了你的解决方案(这比我的解决方案更好,至少你的工作原理......),我必须在10-15个小程序上复制相同的代码。 – AJPerez 2014-10-21 06:30:50

1

如果您的应用程序有CTI客户端,这是您的最佳选择。这就是我使用的应用程序处理服务器脚本警报的方式。这个文档对于这个非常有用,所以我不会在这里详细介绍。如果您有任何问题,只需发表评论,我对CTI警报功能非常熟悉。

基本上,您可以添加一个命令(@InvokeSWECommand),您可以从服务器脚本执行该命令,然后执行自定义浏览器脚本方法。

唯一不足的是我能想到的是这个命令是fire and forget(服务器脚本将继续执行)。所以,不要在浏览器脚本中等待confirm()或其他值。

https://docs.oracle.com/cd/E14004_01/books/SiebCTIAdm/SiebCTIAdm_AdvConfig29.html

0

还有另一种解决方案是创建一个新的BS,对BS(BS显示警告)写一个浏览器脚本给警报(确保本基站的读取输入参数的消息重用相同)。 触发/调用此BS(BS 显示警报)与您的留言:在你想要显示警报的服务器脚本输入参数(Inputs.SetProperty("BrowserMsg","Terribly important message"))...

时,称此BS,它会显示一个消息“确定”按钮。点击确定按钮后,所有的后续事件将恢复...

相关问题