起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 375|回复: 1

[分享]直接通过一个http连接打开平台,并且运行一个任务

[复制链接]
发表于 2008-5-7 14:55:43 | 显示全部楼层 |阅读模式
[B]问题描述:
如何通过以下连接,以ZS的身份登陆平台,并且运行起来制定的任务
http://127.0.0.1:8081/x3/Business.jsp?taskguid=EBBB353201E348FAAD0112A6B49282FC&userid=ZS

解决方法
1 修改网页文件,能够把URL的参数传递给平台 Business.jsp
  function getParameter()  {
    var url=location.href;
    if (url.indexOf("?")<=0)
      return ("");

    var parameters=url.substr(url.indexOf("?")+1);

    return (url.substr(url.indexOf("?")+1));
  }

  document.title = X3X.DisplayName;
  X3X.ServerURL = "<%= url%>"
  X3X.ShowSplash();
  X3X.UpdateVersion();
  X3X.Init();
  X3X.CloseSplash();
  X3X.Run("", getParameter(), "", "");
  document.body.onbeforeunload=BeforeClose;
  document.title = X3X.DisplayName;

2 在Studio中,修改以接收传递过来的参数
2.1 修改 系统空间\系统运行库\自动登录
static function TAUTOLOGON.AutoLogon(ALogon: String; var AID: String; var AMessage: String; var AClientAccount: String): Boolean;
var
  lAA: TAutoLogonA;
  ls: TStrings;
begin
  ls := TStringList.Create;
  ls.Delimiter := '&';
  ls.DelimitedText := ALogon;
  AID := ls.Values['UserID'];
  ls.Free;
  Result := True;
  AClientAccount := 'JUSTEP.COM';
  AMessage := '会不成功吗?';
  Exit;


2.2 修改 系统空间\系统运行库\系统初始化
函数 procedure TINIT.DoRun;
  if not FLogoned then
  begin                     //SMP 200611219  Parameters
    FLogoned := InternalLogon(Parameters);  //此处原来是 FLogoned := InternalLogon();
    if not FLogoned then
    begin
      Terminate;
      Exit;
    end;
  end;

2.3 修改 系统空间\简洁风格\界面库\窗体库\标准风格主窗体
2.3.1 在 TSTANDARDSTYLEMAINFORM 增加一个方法
procedure TSTANDARDSTYLEMAINFORM.AfterLogon(AParam: String);  //alang
var
  ls: TStrings;
  lTaskGUID: string;
  lTask: TTask;
  lTaskMessage: TTaskMessageArray;
  lStorage: TTaskDBStorage;
begin
  if Length(AParam)=0 then Exit;
  // to do 需要考虑强岗位的情况,需要支持指定任务消息,需要支持任务批处理
  ls := TStringList.Create;
  ls.Delimiter := '&';
  ls.DelimitedText := AParam;
  lTaskGUID := ls.Values['taskguid'];
  ls.Free;
  if Length(lTaskGUID)=0 then Exit;

  lStorage := TTaskDBStorage.Create;
  lStorage.GUID := lTaskGUID;
  lTask := lStorage.Load;
  if lTask.FuncURL = '' then
    raise Exception.Create('任务不可打开');
  lTaskMessage := TTaskServices.GetCanRunTaskMessages(TSystemCore.Operator.Context, lTask);
  TTaskServices.RunTask(TSystemCore.FuncManager, TTaskServices.FindTaskRunContext(TSystemCore.Operator.Context, lTask, lTaskMessage[0]), [lTask], True);
end;
2.3.2 修改函数 BizFormShow
procedure TSTANDARDSTYLEMAINFORM.BizFormShow(Sender: TObject);
begin
  FRelevancyNavBarMessageHandler :=  TShowRelevancyNavBarMessageHandler.Create(Self);
  // TODO: 这里挂接到了全局环境
  Context.GetParentContext(BizSys.IL_GLOBAL).AddMessageHandler(TShowRelevancyNavBarMessage.GetName, FRelevancyNavBarMessageHandler);

  RunFirstFuncTimer.Enabled := True;

  if not Opr.IsSystemManager(TSystemCore.Operator.ID) then
    DelayRunFuncsTimer.Enabled := True;

  RunIM;
  AfterLogon(TFunc(Context.Owner).Parameters);  //此处为新增代码
2.3.3 修改事件代码 RunFirstFuncTimerTimer
procedure TSTANDARDSTYLEMAINFORM.RunFirstFuncTimerTimer(Sender: TObject);
begin
  RunFirstFuncTimer.Enabled := False;
  if FConfig.ActiveFunc <> '' then
    //RunFunc(FConfig.ActiveFunc, False)
  else if (Length(TFunc(Context.Owner).Parameters)>0) and (FFuncContainers.Count > 2) then
      ShowContainer(FFuncContainers[FFuncContainers.Count-1] as TFuncContainer)
  else if FFuncContainers.Count > 0 then
      ShowContainer(FFuncContainers[0] as TFuncContainer);

  TransferUtils.TransferManager.Start;
// TODO:  FTransferStatusThread.Resume;

  ConfigChange; // 功能运行后通知,让全局功能能够得到通知
end;
回复

使用道具 举报

发表于 2008-10-24 13:38:17 | 显示全部楼层
procedure TSTANDARDSTYLEMAINFORM.ConfigChange;
begin
  RunFirstFuncTimer.Enabled := False;
  if FConfig.ActiveFunc <> '' then
    //RunFunc(FConfig.ActiveFunc, False)
  else if (Length(TFunc(Context.Owner).Parameters)>0) and (FFuncContainers.Count > 2) then
      ShowContainer(FFuncContainers[FFuncContainers.Count-1] as TFuncContainer)
  else if FFuncContainers.Count > 0 then
      ShowContainer(FFuncContainers[0] as TFuncContainer);
end;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-24 07:34 , Processed in 0.043712 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表