起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: dragonsoft

提交流程弹出流程处理窗体速度很慢!!急!!!**

[复制链接]
发表于 2007-10-22 14:44:20 | 显示全部楼层
请楼主配合我们做以上的工作,以便定位错误,找到解决的方法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-22 15:11:51 | 显示全部楼层
晕死,你随便一句话我要工作两三天,你们不帮助解决,组织机构也发给你们了,你们有空帮我们搞下啊。装你们这一个系统,单单服务端配置都不知要搞多久了。这要我如何去搞。倒
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-22 15:13:24 | 显示全部楼层
别的不扯了,先帮我把这个问题解决了吧:

  strRang := 'OrgChildren(OrgManager(GetProcUnitExecutorPosition('''', True), ''搜查_A'', True), '''', True, True) AND GetProcUnitExecutorDept('''', True)';
  Business.Model.Org.OrgSys.OrgSystem.GetOrgURLsByOrgExpr(strRang,objList);

这样会报错,提示 GetProcUnitExecutorPosition 没办法解析什么的。

那问一下, GetProcUnitExecutorPosition 通过代码要取值回来如何写代码?

急!!!!!
回复 支持 反对

使用道具 举报

发表于 2007-10-22 16:25:05 | 显示全部楼层
function FlowGetTaskParam(AInStates: TTaskStates; AInKinds: TFlowTaskKinds;
  const AInProcUnitIDs: string; AInclude: Boolean;
  AInludeIsAsynchronous: Boolean = False): TFlowGetTaskParam;
begin
  Result.InStates := AInStates;
  Result.InKinds := AInKinds;
  Result.InProcUnitIDs := AInProcUnitIDs;
  Result.Include := AInclude;
  Result.IncludeAsynchronous := AInludeIsAsynchronous;
end;

procedure TMainForm.Button1Click(Sender: TObject);
var
  lTasks: TList;
  lParam: TFlowGetTaskParam;
  i: Integer;
begin
  lTasks := TList.Create;
  try
    lParam := FlowGetTaskParam([TTaskState.tsFinished], [], FlowBroker1.FlowControl.CurrentProcUnit.LeadingUnits[0].ID, True, True);
    FlowBroker1.FlowControl.Flow.GetLeadingTasks(FlowBroker1.FlowControl.CurrentTask, lParam, lTasks);


    for i:=0 to lTasks.Count-1 do
      Memo1.Lines.Add(SysUtils.Format('OrgKey(''%s'', ''%s'', ''%s'')', [TTask(lTasks[0]).TaskMessages[0].ReceiverDeptID, TTask(lTasks[0]).TaskMessages[0].ReceiverPositionID, TTask(lTasks[0]).TaskMessages[0].ReceiverID]));
  finally
    lTasks.Free;
  end;
end;

这样得到的OrgKey就是需要的组织机构表达式了
当然你要根据需要得到的是部门还是岗位来写了
回复 支持 反对

使用道具 举报

发表于 2007-10-22 21:12:43 | 显示全部楼层
我用的是2827,组织机构人员大约有700人,没有配置任务的流程规则或通知规则也是一样的,流转大约20秒左右
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-23 17:42:17 | 显示全部楼层
唉,好累,终于绕过你们的过程,自己做了一个解决了。从14秒解决到 1 秒,真爽!

另一个问题:
登录时一样很慢,跟踪了一下,在系统初始化那个里面有这一段代码:

  lContext := Context.FindParentContext(BizSys.IL_PERSON);
  if lContext <> nil then
    lOperator := lContext.Owner as TOperator;

  if lOperator <> nil then
    TSystemCore.SetOperator(lOperator);

  if TSystemCore.Operator = nil then
  begin
    FLogoned := InternalLogon;
    if not FLogoned then
    begin
      Terminate;
      Exit;
    end;
  end;

  MainForm := TSystemCore.SystemInterface.CreateMainForm(Context);

  FRunning.Running := True;


其中在    InternalLogon;  这个里面速度特慢,跟进去发现在

        Result := (not Opr.IsSystemManager(lUserID) or ExtUtils.ClientAccountExist(BizSys.BizSystem.ClientAccount)) and
          TSystemCore.Logon(lUserID, sPass);

这个里面的  TSystemCore.Logon(lUserID, sPass); 这边有验证身份特慢。

Logon 里面有一个   lOperator := Opr.Logon(ALogonID, APassword);

跟踪了一下,发现在这边要等差不多5秒左右,非常慢。

现在问一下,这边返回的是 TOperator  对象,即当前登录的操作者。
能不能不通过这边登录验证,即在登录框的那个登录按钮的事件中(btnLoginClick),我用自己写代码来验证身份,那要如何做?如何才能够从已知的userid,pws,positionid 等的来给这个 TOperator 对象付值,以便得到从系统验证得到相同的登录环境????

急!!!!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2007-10-24 11:19:50 | 显示全部楼层
以下是Logon方法的实现代码,你可以参考这段代码,自己创建一个TOperator 对象
function Logon(const ID, Password: string): TOperator;
var
  lPerson: TPerson;

begin
  Assert(ID <> '');

  Result := nil;
  if IsSystemManager(ID) then
  begin
    if SystemManagerCanLogon(ID, Password) then
      // 注意:一定要用 cSystemManagerID 常量
      Result := TOperator.Create(GlobalContext, cSystemManagerID, cSystemManagerID);
  end
  else
  begin
    lPerson := OrgSystem.FindPersonByLoginID(ID);
    if lPerson = nil then
      lPerson := OrgSystem.FindPerson(ID);
    if (lPerson <> nil) and (lPerson.Password = Password) then
      // 注意:一定要用 lPerson.ID
      Result := TOperator.Create(GlobalContext, lPerson.ID, ID);
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-24 15:14:19 | 显示全部楼层
没搞明白,TOperator 这个类在哪边? Business.Model.TOperator 这里面的这个不对,参数不对。

还有cSystemManagerID这个参数又在哪里?

给我一段建立生成TOperator 对象的代码吧,只根据已有的用户与密码来建立,不要再扯太多你们里面不公布的内部的东东出来。。。。。。
回复 支持 反对

使用道具 举报

发表于 2007-10-24 15:37:45 | 显示全部楼层
这部分没有办法了,只有升级了
你们一直要用24XX版本,其实我们在26XX版本开始提供了组织机构缓存机制,可以大幅度的减少登陆时间,但是你们一直不作升级,在24XX版本没有办法解决这个问题了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-24 16:08:57 | 显示全部楼层
晕,就是升级不了,升级得了早就做
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-29 04:05 , Processed in 0.041475 second(s), 12 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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