如何在IBM Notes中使用不可变更编号识别用户
嘿,针对你团队要把百余个IBM Notes数据库从「姓名关联用户」改成「不可变更ID识别」的需求,我来分享几个在企业环境里实操过的方案,都是踩过坑后总结的靠谱思路:
核心方案选型
1. 优先用IBM Notes原生的用户唯一ID
这是最贴合Domino生态的方案,Notes本身给每个用户分配了不可变更的唯一标识符(就是用户文档里的$UniqueID字段,或者用公式@UserUniqueID()直接获取)。
- 操作方式:在你的业务数据库表单里新增一个「用户唯一ID」字段,用公式自动填充当前用户的
@UserUniqueID();然后把员工数据库里的对应字段和这个ID做关联映射。 - 优势:完全原生支持,不需要额外生成或同步ID,Domino会自动维护这个ID的唯一性和不可变更性。
- 注意点:别用缩写版的ID,一定要用完整的32位唯一ID,避免出现冲突;如果是跨域的Notes环境,要确保ID在整个域内唯一。
2. 映射企业统一身份ID(推荐有AD/HR系统的场景)
如果你们企业有统一的身份管理系统(比如Active Directory、内部HR系统),直接用这些系统里的不可变更工号/GUID是更稳妥的选择——毕竟跨系统一致性更强。
- 操作方式:
- 在Domino Directory的用户文档里新增一个自定义字段(比如
EmployeeGUID),通过LDAP同步或者批量代理,把AD/HR系统里的唯一ID同步过来。 - 在业务数据库的表单里,用
@Lookup()公式从Domino Directory里提取当前用户的EmployeeGUID,存储到文档中。 - 把这个GUID和员工数据库的对应字段做关联。
- 在Domino Directory的用户文档里新增一个自定义字段(比如
- 优势:跨系统通用,哪怕以后换其他系统,这个ID依然可以复用;HR系统里的工号本身就是不可变更的,天然符合需求。
3. 自定义密钥标识符(适合特殊场景)
如果以上两种都不适用,你可以自己生成一个全局唯一的密钥ID(比如UUID),作为用户的唯一标识。
- 操作方式:
- 在员工数据库里给每个员工生成并存储一个UUID(可以用LotusScript的
CreateUUID()函数,或者Java的UUID.randomUUID())。 - 把这个UUID同步到Domino Directory的用户文档里。
- 业务数据库里的表单自动提取这个UUID作为关联键。
- 在员工数据库里给每个员工生成并存储一个UUID(可以用LotusScript的
- 注意点:一定要确保生成的UUID全局唯一,并且同步机制要可靠,避免出现同一个用户有多个ID的情况。
迁移实施的关键步骤
- 第一步:先搞定员工数据库的ID字段,确保所有现有员工都已填充好不可变更ID(可以从HR系统批量导入,或者批量生成UUID)。
- 第二步:同步Domino用户文档的ID字段,用代理或者LDAP同步工具,把员工数据库的ID同步到每个Notes用户的文档里。
- 第三步:改造业务数据库的表单:新增ID字段,设置为自动填充(用公式或代理),同时保留姓名字段作为前端显示用(不影响用户体验)。
- 第四步:批量更新现有文档:写一个LotusScript代理,遍历所有现有文档,根据原来的姓名匹配员工数据库,填充对应的不可变更ID——这里一定要做好数据备份,避免匹配错误。
- 第五步:测试验证:找几个员工模拟姓名变更场景,验证数据库依然能正确关联到用户,时间管理、行政事务等流程正常运行。
- 第六步:逐步推广:先在1-2个测试数据库验证没问题,再批量推广到所有百余个数据库。
避坑指南
- 绝对不要用邮箱、昵称这类可变更的字段作为备用键,哪怕现在看起来不会变,以后总有例外。
- 迁移前一定要做全量数据备份,批量更新文档时最好先在测试环境跑一遍,没问题再到生产环境执行。
- 前端依然可以显示用户姓名,不用让用户记住ID,后端用ID关联就行,用户体验不受影响。
内容的提问来源于stack exchange,提问作者Daarin
相关产品推荐
相关产品推荐

