起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 238|回复: 4

[分享]对组织机构的维护**

[复制链接]
发表于 2008-9-3 09:49:04 | 显示全部楼层 |阅读模式
对组织机构的维护,包括
1 增删改移动各种组织单元
2 打开关闭组织机构缓存
3 刷新服务端组织机构缓存
回复

使用道具 举报

 楼主| 发表于 2008-9-3 09:56:13 | 显示全部楼层
出于性能方面的考虑,客户端采用了缓存,文件系统可以缓存(各个功能、流程等都缓存到客户端),组织机构也可以缓存,这样当需要访问组织机构中的组织单元时候就可以只访问客户端本地,而不用每次都向服务端发请求。
组织机构缓存以后,带来一个问题,在客户端需要修改组织机构时候,客户端不能只修改本地的缓存文件,而是直接修改服务端的组织机构,因此在对组织机构进行维护之前,需要首先关闭组织机构缓存
关闭组织机构缓存:
  FSMNGR.OrgSystemManager.UseLocalCache := False

一旦关闭组织机构缓存,以后的功能再访问组织机构时候,都是访问服务器,而不是客户端,只有关闭客户端以后,再次登录才会重新下载组织机构缓存,然后用本地缓存的组织机构了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-3 10:04:58 | 显示全部楼层
组织机构缓存是在服务器上生成的,因此,修改完组织机构以后,需要通知服务器来刷新组织机构缓存,在客户端再取组织机构缓存时候,才会得到最新的缓存文件。

通知服务器刷新组织机构缓存的代码
var
  Server: TFileSystemCacheServer;
begin
  Server := TFileSystemCacheServer.Create;
  try
    Server.AddURLs(';', SysSrv.SysService.ServerURL);
    Server.EnsureOrgSystem(BizSys.BizSystem.ClientAccount);
  finally
    Server.Free;
  end;

AddURLs 指定服务器的连接方式,可以指定多个服务器,用Spliter指定的字符隔开
EnsureOrgSystem 刷新Account指定多公司的组织机构缓存
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-3 10:08:41 | 显示全部楼层
注意,以下代码执行之前,需先执行2楼代码关闭组织机构缓存
Business.Model.Org.OrgSys.OrgSystem
创建组织单元
  function CreateDept(Parent: Business.Model.TBizURL; AID: string; ADisplayName: string): TDept;
  function CreateOrgan(Parent: Business.Model.TBizURL; AID: string; ADisplayName: string): TDept;
  function CreatePerson(ADept: Business.Model.TBizURL; AID: string; ADisplayName: string): TPerson;
  function CreatePosition(Parent: Business.Model.TBizURL; AID: string; ADisplayName: string): TPosition;
  function CreateUnit(Parent: Business.Model.TBizURL; AID: string; AKind: Business.Model.TBizObjectKind; ADisplayName: string): TOrgUnit;
  function CreateWorkGroup(Parent: Business.Model.TBizURL; AID: string; ADisplayName: string): TOrgUnit;
分配组织单元
  function AssignPerson(APositionMember: Business.Model.TBizURL; APerson: Business.Model.TBizURL): TOrgUnit;
  function AssignPosition(ADept: Business.Model.TBizURL; APosition: Business.Model.TBizURL): TOrgUnit;
删除组织单元
  procedure DeleteUnit(AURL: Business.Model.TBizURL);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-3 10:14:38 | 显示全部楼层
注意,以下代码执行之前,需先执行2楼代码关闭组织机构缓存
复制和移动组织单元可以采用文件系统的方法
复制组织单元
  BizObjComUtils.BizSysUtils.CopyBizObject(ADestPath: string; ABizNodes: Business.System.TStrings);
  例如:
  BizObjComUtils.BizSysUtils.CopyBizObject('Org:\ROOT\YGJT.OGN\CGB.DPT\BMJL.PTM\',lNodes);
  需要复制的组织单元增加到lNodes,复制到ADestPath目录下,注意这个ADestPath最后一定要有\
移动组织单元
  BizObjComUtils.BizSysUtils.MoveBizObject(ADestPath: string; ABizNodes: Business.System.TStrings)
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-21 19:01 , Processed in 0.042382 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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