如何在Siebel中显示来自服务器脚本的警报?

时间:2014-10-17 15:14:52

标签: siebel

我们有一个Siebel 7.8应用程序,并且要求在用户保存满足特定条件的记录时显示消息。像这样:

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");
  }
}

浏览器脚本(在始终在BC之前加载的applet中):

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广播消息不是一种选择。

或者,如果我必须坚持使用alert / SWEAlert:服务器脚本和浏览器脚本之间是否还有其他方式进行通信,而无需进行无休止的轮询?

4 个答案:

答案 0 :(得分:3)

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

function Applet_PreInvokeMethod(name,inputPropSet)

您可以查看姓名==&#34; WriteRecord&#34; ,在那里进行验证,并弹出Alert()提示。

请告诉我们是否有效。

答案 1 :(得分:1)

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

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

我唯一能想到的缺点就是这个命令很难忘了(服务器脚本会继续执行)。因此,不要在浏览器脚本中等待从confirm()或其他任何内容返回值。

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

答案 2 :(得分:0)

还有另一种解决方案是创建一个新的BS,在该BS( BS显示警报)上写一个浏览器脚本来发出警报(确保这个BS从Input参数中读取消息以重用它)。 触发/调用此BS( BS显示警报),并在您要显示警报的服务器脚本中将消息作为输入参数(Inputs.SetProperty("BrowserMsg","Terribly important message"))...

当这个BS呼叫时,它将显示一条消息&#34; OK&#34;按钮。单击确定按钮后,所有后续事件将恢复...

答案 3 :(得分:0)

在下面用于在siebel中显示来自服务器端的警报

BS名称:LS Pharma签名UI服务

MethodName:ShowConfirmDialog