- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 xPages 中处理文档锁定的最佳方法是什么?目前我们使用标准的软锁定,它似乎在 Notes 客户端中运行良好。
在 xPages 中,我考虑使用“允许文档锁定”功能,但我担心人们会在不使用关闭或保存按钮的情况下关闭浏览器,然后锁定将永远不会被清除。
当用户关闭 session 时,有没有办法清除锁定?我没有看到这样的事件。
或者有没有更简单的方法来锁定文档?
我意识到我可以使用代理清除锁,但是什么时候运行呢?我会想某个晚上的某个时候,我相当肯定锁应该不再真正处于事件状态。
最佳答案
这是我正在使用的代码:
/* DOCUMENT LOCKING */
/*
use the global object "documentLocking" with:
.lock(doc) -> locks a document
.unlock(doc) -> unlocks a document
.isLocked(doc) -> returns true/false
.lockedBy(doc) -> returns name of lock holder
.lockedDT(doc) -> returns datetime stamp of lock
*/
function ynDocumentLocking() {
/*
a lock is an entry in the application scope
with key = "$ynlock_"+UNID
containing an array with
(0) = username of lock holder
(1) = timestamp of lock
*/
var lockMaxAge = 60 * 120; // in seconds, default 120 min
this.getUNID = function(v) {
if (!v) return null;
if (typeof v == "NotesXspDocument") return v.getDocument().getUniversalID();
if (typeof v == "string") return v;
return v.getUniversalID();
}
/* puts a lock into application scope */
this.lock = function(doc:NotesDocument) {
var a = new Array(1);
a[0] = @UserName();
a[1] = @Now();
applicationScope.put("$ynlock_"+this.getUNID(doc), a);
// print("SET LOCK "+"$ynlock_"+doc.getUniversalID()+" / "+a[0]+" / "+a[1]);
}
/* removes a lock from the application scope */
this.unlock = function(doc:NotesDocument) {
applicationScope.put("$ynlock_"+this.getUNID(doc), null);
//print("REMOVED LOCK for "+"$ynlock_"+doc.getUniversalID());
}
this.isLocked = function(doc:NotesDocument) {
try {
//print("ISLOCKED for "+"$ynlock_"+doc.getUniversalID());
// check how old the lock is
var v = applicationScope.get("$ynlock_"+this.getUNID(doc));
if (!v) {
//print("no lock found -> return false");
return false;
}
// if lock holder is the current user, treat as not locked
if (v[0] == @UserName()) {
//print("lock holder = user -> not locked");
return false;
}
var dLock:NotesDateTime = session.createDateTime(v[1]);
var dNow:NotesDateTime = session.createDateTime(@Now());
// diff is in seconds
//print("time diff="+dNow.timeDifference(dLock)+" dLock="+v[1]+" now="+@Now());
// if diff > x seconds then remove lock, it not locked
if (dNow.timeDifference(dLock) > lockMaxAge) {
// print("LOCK is older than maxAge "+lockMaxAge+" -> returning false");
return false;
}
//print("return true");
return true;
// TODO: check how old the lock is
} catch (e) {
print("ynDocumentLocking.isLocked: "+e);
}
}
this.lockedBy = function(doc:NotesDocument) {
try {
var v = applicationScope.get("$ynlock_"+this.getUNID(doc));
if (!v) return "";
//print("ISLOCKEDBY "+"$ynlock_"+doc.getUniversalID()+" = "+v[0]);
return v[0];
} catch (e) {
print("ynDocumentLocking.isLockedBy: "+e);
}
}
this.lockedDT = function(doc:NotesDocument) {
try {
var v = applicationScope.get("$ynlock_"+this.getUNID(doc));
if (!v) return "";
return v[1];
} catch (e) {
print("ynDocumentLocking.isLockedBy: "+e);
}
}
}
var documentLocking = new ynDocumentLocking();
关于xpages - 在 xPages 中处理文档锁定的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10882925/
在 Xpages Upload 控件中,我可以上传带有特殊字符的照片文件。但是在 View 中,一些特殊字符变成了下划线(例如 {#[ 到 _ ),有些则不是(例如空格,+)。当使用函数attachm
我的主题中有以下内容,但我想让它独立于服务器,以便它可以无缝地从开发移动到测试再到生产。 如何泛化 http://www.devserver.com ? text/css http:
Notes 最近更好的增强功能之一是 View 的共享列。我可以设置宽度。字体、各种设置并在 View 中放置共享列。如果我需要说更改列宽,我会在一处更改它,并且它会在我的所有 View 中更改。 是
我希望创建一个 Xpage 自助注册站点,将用户注册到 Domino 姓名和地址簿上。我只是在做一个概念验证。 我将把代码放在下面,但捕获用户详细信息、将其详细信息和密码放入 NAB 中是一个相当简单
我即将启动一个新的 XPage 项目,该项目将在全局范围内使用。我有点担心,因为他们担心性能,因此正在考虑将此应用程序与负载均衡器或集群一起使用。我一直在环顾四周,发现作用域变量可能存在问题(例如,用
我一直在 Lotus Domino Designer 8.5 中开发数据库,特别是 XPage。我注意到我可以使用颜色选择器在 FORM 上包含一个字段作为颜色字段,但 XPages 中不提供相同
我有一个应用程序可以匿名访问除几个之外的所有 xpages。我需要强制用户登录这些 xpages。是使用 beforepageload 事件来检查用户登录页面并将其重定向到正确的方式还是有更好的方法?
我正在尝试将文件从文件系统流式传输到浏览器,但无法正常工作。我有一个带有 render=false 的 xpage 并且在 afterRenderResponse 上我有以下代码: XspHttpSe
我有几个关于 bluemix xpages 运行时的问题。 截至目前(2016 年 8 月)Xpages NoSQL 数据库仍处于试验阶段。这个 NoSQL 服务是否有一个 ETA 才能成为 GA?
我有一个带有 2 个数据源的 xPage。我打开页面,第一个数据源是只读的,而第二个数据源处于编辑模式。添加 ignoreRequestParms=true 似乎会导致此行为,但这是将文档保存到不同数
我正在处理应用程序,当我想在新选项卡或窗口上打开链接时卡住了。我使用的是 Lotus Notes Designer Release 8.5.2FP1。我附上了我的代码。 最佳答案
我在 OneUI 应用程序框架 v2.1 的示例之一中看到“菜单下拉”类型控件。 see here http://infolib.lotus.com/resources/oneui/2.1/docPu
我很困惑。在 oneUI 3 documentation page有一个不错的部分。它看起来像这样: 我创建了一个新的数据库并将主题设置为 3.0.2 并放入下面的代码,它看起来与我想要生成的完全不同
如何查明 Domino 服务器上运行的 XPage 扩展库版本是什么? “tell http osgi ss”列出了很多不同的版本。 最佳答案 如果您有权访问 Domino 服务器,则可以发出命令 t
在我的 XPage 中,我需要设置数据源(Domino 文档) 我尝试按如下方式进行: 我注意到的是 documentId 中的代码部分没有被执行。完全没有。这就是为什么我把
是否有一种简单的方法可以强制用户仅在 Xpages 编辑框中输入数字?除了事后验证该字段之外。我根本不希望他们能够输入数字。 最佳答案 您可以添加客户端 Javascript 处理,例如此处建议的内容
我需要将 StyleClass 添加到 xPages 中生成的表单标记。 我不知道是否可以在新主题中更改此控件,但我的应用程序中只需要一个 xPage,这是生成的代码: 我需要这个修改类,例如:
在我开始之前,之前已经有人问过这个问题,但是没有一个答案被接受,而且我无法使用提供的答案让它工作。 How to use multiple themes at the same time 我正在尝试使
我知道几年前在 XPage 中处理加密文档是不可能的。但与此同时,我们获得了 ID 库,并且 iNotes 能够处理加密文档,不是吗? 我的研究并没有给出明确的答案,XPages 引擎是否能够与 ID
我正在处理应用程序,当我想在新选项卡或窗口上打开链接时卡住了。我使用的是 Lotus Notes Designer Release 8.5.2FP1。我附上了我的代码。 最佳答案
我是一名优秀的程序员,十分优秀!