2

我有一个基本的工作流应用程序,但我遇到了困难。

在 db ACL 中,我将所有相关人员和组都设置为 Editor。在 XPage acl 中,我试图输入名称的计算值。(我称为 nextApprover 的字段,它存储在与 xpage 关联的表单/文档中。

我试过了

document1.getItemValue("nextApprover");

getComponent("nextApprover").getValue();

两者都会在执行 Javascript 计算表达式时产生运行时错误。

我要做的就是允许 nextApprover 有权在文档位于其“框”中时对其进行编辑,并允许其他用户在该特定时间阅读它。我已经环顾了一段时间了。有什么建议么?

4

2 回答 2

4

您无法访问document1XPages ACL 名称计算中的数据源,因为首先计算 ACL,然后才计算数据源。这就是您收到 JavaScript 运行时错误的原因。

这是 XPages ACL 的替代方法:

定义你的数据document1action="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>

您可能需要根据您的领域的实际情况更改 if 子句nextApprover

于 2013-10-07T19:24:38.790 回答
0

通过在文档上使用Authors -items 而不是 XPage ACL,您可以获得更好的安全性。

试试这个(如果document1是数据源名称):

document1.getValue("nextApprover");

如果它对此不起作用并且您仍想使用 XPage ACL,请发布您的错误和 ACL 部分的 XPage XML 源。

于 2013-10-07T17:47:32.737 回答