起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: kd_xjx

【结贴】[缓存问题]代码创建人员不能登陆系统!**

[复制链接]
 楼主| 发表于 2007-10-30 10:36:57 | 显示全部楼层
版本2819  , 在Studio中上述代码可以运行,在Business.exe中报告错误运行不成功!!
错误栈:
错误类型:EFileExecuteAction
错误信息:在操作文件:ORG:\ROOT\A.ogn的时候出现异常,操作代码:10,异常信息:无效的命令:TCreateFileAction[10]
错误描述:

环境栈:
错误类型:EFileExecuteAction
无环境信息

调用栈:
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-30 10:40:42 | 显示全部楼层
假设 我在Studio中运行创建,不手工刷新组织机构缓存, 然后在business.exe中运行使用创建的人员登陆系统。报告如下错误:
---------------------------
登录
---------------------------
用户名或密码错误,或者该用户没有分配岗位或已被其他用户代理
---------------------------
确定   
---------------------------
回复 支持 反对

使用道具 举报

发表于 2007-10-30 11:11:17 | 显示全部楼层
你在函数最开始增加一句
fsmngr.OrgSystemManager.UseLocalCache := False
回复 支持 反对

使用道具 举报

发表于 2007-10-30 11:14:19 | 显示全部楼层
在客户端通知服务端刷新组织机构缓存可以用下面的代码(类似在Studio中点 刷新组织机构 的效果)
procedure TMAINFORM.btnEnsureOrgCacheClick(Sender: TObject); //刷组织机构
var
  Server: TFileSystemCacheServer;
begin
  Server := TFileSystemCacheServer.Create;
  try
    Server.AddURL(SysSrv.SysService.ServerURL);
    Server.EnsureOrgSystem(BizSys.BizSystem.ClientAccount);
  finally
    Server.Free;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-30 11:32:42 | 显示全部楼层
加上上面的那句话,创建的成功了,但是注销的登陆的时候报告错误:
---------------------------
登录
---------------------------
没有岗位或所有的岗位都被代理出去了不能登录!要登录先回收相应的被代理的岗位。
---------------------------
确定   
---------------------------

如果刷一下组织机构缓存,才能正常登陆!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-30 11:40:45 | 显示全部楼层
我是这样想的,问题还是在组织机构缓存的刷新上。添加了上面的代码在创建组织机构对象的时候是禁用缓存的,所以创建是成功的。 但是这并没有进行组织机构缓存的刷新,登陆的时候发现当前缓存中没有对应的信息,所以报错了。本质上还是在创建组织机构成员成功后,怎样将组织机构缓存刷新到本地的问题, 早期我通过在服务端不使用组织机构缓存的方式企图绕开这个问题,但是测试的结果令人失望,我觉得还是希望提供一个完整的通过测试的代码贴上来。 起码要在Business.exe上测试通过,至于在IE中是否还有差异,我们来测试好了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-30 11:47:04 | 显示全部楼层
多谢 结贴吧 初步测试可以了 谢谢alang
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-29 07:48 , Processed in 0.039896 second(s), 12 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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