【问题标题】:Is there a way to find out Object Manager's name with eScript?有没有办法用 eScript 找出对象管理器的名称?
【发布时间】:2014-02-24 16:22:37
【问题描述】:

基本需求是确定当前运行任务的对象管理器的名称。如果我们还可以获得任务 ID、组件名称(通常)、组件组名称、服务器名称和企业名称,那么额外的好处将是。

其实here提供了一个解决方案,但是它有严重的局限性。只要它使用纯内存对象且不支持示例查询的 Server Admin buscomps,我们就必须遍历所有记录。这可能会导致具有数百甚至数千个活动任务的生产服务器出现性能问题。我们还有其他方法可以获取这些信息吗?

【问题讨论】:

    标签: oracle siebel server-administration escript


    【解决方案1】:

    我们可以使用 Server Task Persistance 组件来实现这个目标。该组件(在 8.0 版中引入)在启用时会将组件任务信息存储到 S_SRM_TASK_HIST 表中(该表的相应 buscomp 是“Enterprise Task History”)。上面提到的业务组件是基于表的,所以我们可以用通常的方式查询。有几个参数可以设置组件的行为。 IE。参数“DeleteEventHistoryInterval”控制任务信息保留的持续时间(默认为 24​​ 小时),参数“EnableEventHistory”控制是否为各个服务器组件保存任务信息。

    因此,要使以下 eScript 代码正常工作,服务器任务持久性组件应启动并运行,还应为目标组件启用任务历史记录保存。我们在示例中得到了Task Id,稍加修改我们也可以获得Component Name、Component Group Name、Server Name、企业名称和其他有用数据(有关已存储字段的完整列表,请参阅 Siebel Tools 中的相应 buscomp 定义)。

    function Service_PreInvokeMethod (MethodName, psInputs, psOutputs)
    {
         if (MethodName == "Run")
         {
              var ProcessId = 0;
              var ThreadId = 0;
              var TaskId = 0;
              var EntFound = false;
              var SrvFound = false;
              var TaskFound = false;
              //Following two lines assume that Siebel server is running on Solaris OS
              //Change as appropriate for other OS'es
              ProcessId = SElib.dynamicLink("libsys.so", "getpid");
              ThreadId = SElib.dynamicLink("libpthread.so", "pthread_self");
    
              var boServerAdmin = TheApplication().GetBusObject("Server Admin");
              var bcEnterpriseServer = boServerAdmin.GetBusComp("Enterprise Server");
              var bcServerServer = boServerAdmin.GetBusComp("Server Server");
              var bcTaskHistory = boServerAdmin.GetBusComp("Enterprise Task History");
    
              with(bcEnterpriseServer)
              {
                   ClearToQuery();
                   ExecuteQuery(ForwardOnly);
                   EntFound = FirstRecord();
                   while (EntFound)
                   //For all Enterprises
                   {
                        with(bcServerServer)
                        {
                             ClearToQuery();
                             ExecuteQuery(ForwardOnly);
                             SrvFound = FirstRecord();
                             while (SrvFound)
                             //For all Servers
                             {
                                   with(bcTaskHistory)
                                  {
                                       ActivateField("O/S Proc Id");
                                       ActivateField("Thread Id");
                                       ActivateField("Task Id");
                                       ClearToQuery();
                                       SetSearchSpec("O/S Proc Id", ProcessId);
                                       SetSearchSpec("Thread Id", ThreadId);
                                       SetSortSpec("Task Start Time(DESCENDING)");
                                       ExecuteQuery(ForwardOnly);
                                       TaskFound = FirstRecord();
                                       if (TaskFound)
                                       {
                                            //This sample returns TaskId
                                            TaskId = GetFieldValue("Task Id");
                                            psOutputs.SetProperty("TaskId", TaskId);
                                            return (CancelOperation);
                                       }
                                  }
                                  SrvFound = NextRecord();
                             }
                        }
                        EntFound = NextRecord();
                   }
              }
              psOutputs.SetProperty("TaskId", NaN);
              return (CancelOperation);
         }
         return (ContinueOperation);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-24
      • 2017-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-12
      • 2014-07-29
      • 1970-01-01
      相关资源
      最近更新 更多