我有一个基本的工作流程应用程序,而且我有很多困难。
在db ACL中,我将涉及的所有人员和组都设置为编辑器。 在XPage acl中,我试图输入名称的计算值。 (我称之为nextApprover的字段,存储在与xpage关联的表单/文档中。
我试过
document1.getItemValue("nextApprover");
和
getComponent("nextApprover").getValue();
都会在执行Javascript计算表达式时创建运行时错误。
我所要做的就是允许nextApprover在文档处于“框”内时编辑文档的权限,并允许其余用户在该特定时间读取文档。我现在已经看了一会儿。 有什么建议吗?
答案 0 :(得分:4)
您无法在XPage ACL名称计算中访问数据源document1
,因为首先计算ACL并且仅在数据源之后。这就是你得到JavaScript运行时错误的原因。
以下是XPage ACL的替代方法:
使用document1
action="openDocument"
<xp:this.data>
<xp:dominoDocument
var="document1"
action="openDocument"
... />
</xp:this.data>
默认情况下,这将在READ模式下打开文档。
然后使用beforePageLoad
将context.setDocumentMode("edit")
事件切换到编辑模式,如果当前用户名在您的字段中nextApprover
:
<xp:this.beforePageLoad><![CDATA[#{javascript:
if (document1.getItemValue("nextApprover").get(0).equals(session.getEffectiveUserName())) {
context.setDocumentMode("edit")
}
}]]></xp:this.beforePageLoad>
您可能需要根据字段nextApprover
中的实际内容更改if子句。
答案 1 :(得分:0)
通过在文档而不是XPage ACL上使用作者 -items,您可以获得更好的安全性。
试试这个(如果document1
是数据源名称):
document1.getValue("nextApprover");
如果它无法使用,您仍然想使用XPage ACL,请发布ACL部分的错误和XPage XML源。