Siebel eScript:CountRecords()方法给出" 0"作为每个输入值的结果

时间:2016-09-30 14:29:47

标签: siebel escript

我正在尝试创建一个业务服务,它将根据作为输入的状态返回Action业务组件中的记录(活动)计数。
'状态' field是一个静态选项列表字段。所以,如果我提供“活跃”的话。作为输入,它应该返回一些数字(在我的情况下为210)作为输出。但是对于每个输入结果都是零(0)。可能是什么问题呢?下面是我的Siebel eScript。

function ReturnStatusCount (Inputs, Outputs)
{
    var status="";
    var count;
    try
    {
        status=Inputs.GetProperty("Status"); 
        var bo = TheApplication().GetBusObject("Action");
        var bc = bo.GetBusComp("Action");
        var LOVText = TheApplication().InvokeMethod("LookupValue","EVENT_STATUS",status);
        with (bc)
        {     

            ClearToQuery();
            SetSearchSpec("Status","\'"+LOVText+"\'");
            ExecuteQuery(ForwardOnly);
            count = CountRecords();
        }
      bc = null;
      bo = null;
    }
    catch (e)
    {
        throw (e);
    }
    finally
    {
        Outputs.SetProperty("Count",count);
    }
}

1 个答案:

答案 0 :(得分:1)

根据您的选项列表的构建方式,您可能需要使用此规范:

bc.SetSearchSpec("Status", "='" + status + "'");

它也可能是一个可见性问题。运行代码的用户可能无法查看这210条记录。您可以使用以下方法解决此问题:

bc.SetViewMode(AllView);

如果您想确定发生了什么,可以在专用的胖客户端中enable the SQL spool tracing查看它正在执行的实际查询...或者,您可以转到任何服务请求applet并使用语法[Status] = 'Active'[Status] = 'ActiveLovText'自我查询(替换ActiveLovText以查找LookupValue返回的内容。)

此外,您可以在代码中改进一些内容:

  • 在这种情况下,您无需转义单引号。 "'"没问题。
  • 如果你发现一个异常并再次扔掉它,你就什么都不做了。你也可以删除这些行。
  • 您将count值存储在finally块中的SetProperty块中,甚至可以在变量初始化之前到达。要么使用初始值声明它,要么将finally行放在其他地方。
  • 另一方面,您应使用bc块清除已使用的对象,例如botry。您在function ReturnStatusCount (Inputs, Outputs) { var bo:BusObject; // Remove the ":BusObject" and ":BusComp" parts if var bc:BusComp; // they give you any trouble try { var status = Inputs.GetProperty("Status"); var lovText = TheApplication().InvokeMethod("LookupValue", "EVENT_STATUS", status); bo = TheApplication().GetBusObject("Action"); bc = bo.GetBusComp("Action"); bc.ClearToQuery(); bc.SetViewMode(AllView); bc.SetSearchSpec("Status", "='" + status + "'"); // status, or lovText maybe bc.ExecuteQuery(ForwardOnly); Outputs.SetProperty("Count", bc.CountRecords()); } finally { bc = null; bo = null; } } 区块内进行了操作,这意味着如果存在异常,则无法完成。并不是说在这种情况下会很重要,但它总是很好的做法。

考虑到这一切,这就是代码应该是这样的:

int maxLength = 5;
String jsonReturnedData = "Hello World"