如何使用@Unique()在SSJS中生成类似Notes的唯一字符串?

时间:2017-02-06 20:06:39

标签: xpages xpages-ssjs

在Notes公式中,@ Unique函数根据Notes用户的ID名称和时间返回唯一字符串。因此,当我在Notes中创建多个文档时,唯一字符串的第一部分总是来自我的名字Paul Della-NebbiA,如下所示: PDNA-AJBQYD PDNA-AJBQYL PDNA-AJBQYN

如果我使用不同的ID App DEV2登录Notes,那么@Unique字符串的第一部分如下: ADEV-AJBQZG ADEV-AJBQZQ ADEV-AJBQZS

我想在SSJS中生成类似的结果,以便在创建新文档时为其生成唯一标识符。但是,似乎@Unique()字符串的第一部分始终是从服务器和域名派生的。

以下是我用来生成唯一ID的SSJS代码:

newdoc.replaceItemValue("AssignmentId",session.evaluate("@Unique").elementAt(0) ); 

SSJS中有没有办法让@Unique()像在Notes中那样工作,并根据经过身份验证的用户名生成前四个字符?

2 个答案:

答案 0 :(得分:7)

这可能还有很长的路要走,但我在我的环境中使用它来模仿Notes唯一ID。

var user = @Name("[CN]",session.getEffectiveUserName());
var last = @UpperCase(@Right(user," "));
var first = @UpperCase(@Left(user," "));
var a = @Left(first,1);
var b = @Left(last,2);
var c = @Right(last, 1);
var id = session.evaluate("@Unique").elementAt(0);
var d = @Right(id,6);

if (user == "Anonymous") {
return id;
}else{
a + b + c +  "-" + d;
};

答案 1 :(得分:2)

也许你可以通过Java试试?在我的代码中,我使用了java.util.UUID.randomUUID().toString()