FAQ > 金融建模 > 第三方交互 > 其他

Q:如何通过代码的方式使用任务管理命令    

  • A:任务管理主要是对登录的账号、执行的在线任务或委托执行的任务进行查看或者终止任务等操作。
    详细说明:FAQ:Q:任务管理说明
     天软提供模型TSTaskAdmin可直接发送任务管理命令
    函数说明:
    定义:TSTaskAdmin(Command:String;CmdReturn,BroadCastMsg,ErrMsg:String;[WaitMs,DataRecvedWaitMs:Integer]):Integer
    说明:向天软平台发送管理命令。本地函数调用时需要加上RDO2
    参数:
     Command:字符串类型,送入的命令串
     CmdReturn:返回字符串类型的命令返回。
     BroadCastMsg:返回在命令期间接收到的广播消息。
     ErrMsg:如果发生错误,返回错误的信息串。
     WaitMs:等待信息的毫秒数,可省略。
     DataRecvedWaitMs:当数据已经有接收到,等多多少毫秒则结束等待。
    返回:0,参数CmdReturn、BroadCastMsg返回相关命令的结果。

    使用范例:
    调用ou命令查看当前登陆情况
      ret:= rdo2 TSTaskAdmin("ou",CmdReturn,BroadCastMsg,ErrMsg,3000,1000);
      return CmdReturn;


    调用oa命令查看当前并发情况(程序执行)情况
      ret:= rdo2 TSTaskAdmin("oa",CmdReturn,BroadCastMsg,ErrMsg,3000,1000);
      return CmdReturn;


    调用info命令查看当前账号使用情况
      ret:= rdo2 TSTaskAdmin("info",CmdReturn,BroadCastMsg,ErrMsg,3000,1000);
      return CmdReturn;


    获取当前账号的登录数及并发数的使用情况
    执行代码:
      ret:= rdo2 TSTaskAdmin("ou",CmdReturn,BroadCastMsg,ErrMsg,3000,1000);
      info :=CmdReturn;
      return array("已登录用户数":getusers(info),
             "在线执行个数/可在线执行个数":getConcurrency(info)["OLTASK"]);
    执行结果:


    调用子函数1:getusers
    function getusers(info);
    begin
      ParseRegExpr("(\\d+).*online",info,"",result,MPos,Mlen);
      for i in result do users+=StrToInt(result[i,1]);
      return users;
    end

    调用子函数2:getConcurrency
    function getConcurrency(info);
    begin
      info_t:=str2array(info,"\r\n");
      key:=str2array(info_t[0]," ");
      value:=str2array(info_t[1]," ");
      k:=array();
      v:=array();
      for i in key do
        if key[i] <> "" then
          AppendArray(k,key[i]);
      for i in value do
        if value[i] <> "" then
          AppendArray(v,value[i]);

      s:=0;
      len:=length(v);
      for i:=0 to len-1 do
      begin
        NI:=i-s;
        if rightStr(v[NI],1)="/" then
        begin
          v[NI]+=v[NI+1];
          deleteindex(v,NI+1);
          s+=1;
        end
      end
      
      rt:= array();
      for i in k do
        rt[k[i]]:=v[i];
      return rt;
    end