2017-02-06 27 views
1

在Notes公式中,@Unique函數根據Notes用戶的ID名稱和時間返回一個唯一的字符串。所以,當我創建註釋的幾個文件的唯一字符串的第一部分總是從我的名字,保羅·德拉 - NebbiA衍生,像這樣: PDNA-AJBQYD PDNA-AJBQYL PDNA-AJBQYN如何使用@Unique()在SSJS中生成類似Notes的唯一字符串?

如果我登錄到用不同的ID票據,應用DEV2的字符串@unique的第一部分是然後如下: ADEV-AJBQZG ADEV-AJBQZQ ADEV-AJBQZS

我想產生類似的結果在SSJS以產生一新文檔創建時的唯一標識符。但是,似乎@Unique()字符串的第一部分總是從服務器和域名派生而來。

這裏是我用來生成唯一ID的SSJS代碼:

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

那麼,有沒有在SSJS辦法讓@unique()的工作就像它確實說明,並生成第一基於認證用戶名的四個字符?

回答

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; 
}; 
+0

我已經使用了柵欄Java端的'evaluate'方法,效果不錯。 –

+1

如果您使用OpenNTF domino API,他們添加了解決此問題的方法session.getUnique()。至少在Java中.... –

2

也許你可以嘗試通過Java?在我的代碼中,我使用了java.util.UUID.randomUUID().toString()

相關問題