[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; |