当前位置: 代码迷 >> Lotus >> lotus中表单内reader域的有关问题
  详细解决方案

lotus中表单内reader域的有关问题

热度:428   发布时间:2016-05-05 07:24:44.0
lotus中表单内reader域的问题
5.0.8版本的domino服务器环境了,想改其中一个表单的reader域,以前的reader域赋值是采用:
FIELD Reader := @Unique(@Trim(Reader:@UserName)来进行的,每当某个操作者点击某些按钮时,按钮内部就写了上面这行代码,这样就能保证该用户能阅读该文档。
这样使用后Reader域的值样式为:
"CN=用户1/OU=部门1/O=公司"
"CN=用户2/OU=部门2/O=公司"
"CN=用户n/OU=部门n/O=公司"
现有一需求:由于用户可能变更部门,即"CN=用户1/OU=部门1/O=公司"会变成"CN=用户1/OU=部门x/O=公司",我希望即使人员的部门发生变动,但他仍然能够阅读历史文档!
我的做法是:
FIELD Reader := @Unique(@Trim(Reader:@UserName)
FIELD Reader := @Unique(@Trim(Reader:"CN="[email protected]([CN];@UserName)+"/OU=*/O=公司")))
即多加了一行代码,让最终reader域的值样式为:
"CN=用户1/OU=部门1/O=公司"
"CN=用户1/OU=*/O=公司"
"CN=用户2/OU=部门2/O=公司"
"CN=用户2/OU=*/O=公司"
"CN=用户n/OU=部门n/O=公司"
"CN=用户n/OU=*/O=公司"
但是发现,不能达到想要的效果,我应该如何解决这个问题?
注:不需要人员的部门变更后能查看历史数据,只需考虑增加本功能后新增的数据即使部门变更了也能看到。




------解决方案--------------------
个人意见,在names库中人员信息建议不直接带部门,这样的话,问题就迎刃而解了~


现在你的做法貌似无法实现想要的效果,现在我们项目组的做法是刷新所有文档,不过非常费时费力~~
------解决方案--------------------
我通常是用group来实现的,即:
1.在names库中创建一个group,把要访问文档的人员添加到该group中
2.在表单添加读者域,[email protected]为关键字到names库中查出该group的所有成员。
[email protected]([ToolsRefreshAllDocs])
4.当员工信息变动时,只需对group成员进行修改,然后点击刷新按钮即可。
------解决方案--------------------
就用
FIELD Reader := @Unique(@Trim(Reader:@Name([CN];@UserName)) 
不管你部门怎么变,@Name([CN];@UserName)这个是不会变的。存这个值,用户也能看见文档,不信你试试。
------解决方案--------------------
直接用administrator里面的命令去改OU啊,这样一来,所有数据库的读者域会跟着改的
------解决方案--------------------
是啊,直接在Admin 端做Rename就不用改Reader域,系统自己会做的。
------解决方案--------------------
探讨
引用:就用 FIELD Reader := @Unique(@Trim(Reader:@Name([CN];@UserName)) 不管你部门怎么变,@Name([CN];@UserName)这个是不会变的。存这个值,用户也能看见文档,不信你试试。

我用这个方法试试。

------解决方案--------------------
而且又是readers和authors,最好用canonicalize格式
------解决方案--------------------
在names中创建group, 同时在DB中应用角色去控制 reader .

------解决方案--------------------
探讨
引用:引用:就用 FIELD Reader := @Unique(@Trim(Reader:@Name([CN];@UserName)) 不管你部门怎么变,@Name([CN];@UserName)这个是不会变的。存这个值,用户也能看见文档,不信你试试。 我用这个方法试试。

这种方法有问题的,如果两个CN一样的怎么办?

------解决方案--------------------
我只能这样说,一般情况下不建议在Readers和Authors放CN格式。

1#)CN对Readers没有影响,但在Authors里面是不起作用的。尤其是代码写的Authors,一定要写成Cononicalize的格式。
2#)如果两个用户同CN同OU,那肯定是要改CN的,但是这样的概率肯定要比同group同CN的要小。
3#)就楼主的需求来说,最好的方法就是在ADMIN里面Rename这个Account。
4#)在Readers里面放什么格式的名字说到底是代码规范的问题,从我的角度来看,直接放CN的话不是最好方式。
------解决方案--------------------
建议2种做法
1、用户系统名不带部门信息 username/公司
2、添加部门群组,读者域 中添加的是通讯录群组而不是个人
------解决方案--------------------
用户更名以后,名称类型的域会由服务器自动更新啊
------解决方案--------------------
探讨
个人意见,在names库中人员信息建议不直接带部门,这样的话,问题就迎刃而解了~


现在你的做法貌似无法实现想要的效果,现在我们项目组的做法是刷新所有文档,不过非常费时费力~~

------解决方案--------------------
最快捷的办法就是使用组。不过缺点是会因为不同的要求创建很多组。
  相关解决方案