【问题标题】:Change the r_accessor_permit of a group assigned to an ACL in Documentum更改分配给 Documentum 中 ACL 的组的 r_accessor_permit
【发布时间】:2016-11-09 03:00:16
【问题描述】:

我想使用DFCs 来更改分配给 acl 的组的 r_accessor_permit 的值:

1 -> 首先我选择了一个名为“fme”的ACL

2 -> 然后我编写了以下 DQL 以获取分配给它的组:

select r_accossor_name from dm_acl where object_name = 'fme'

3 -> 我收到了一份群组列表,我复制粘贴了其中一个名为:grp_corp_lgl_sateri_hk

然后我写了以下内容:

public void changeGroupPermission (){
    try{
        String myAcl = "fme";
        IDfACL acl = (IDfACL)_session.newObject("dm_acl");
        acl.setString("object_name", myAcl);

        acl.revoke("grp_corp_lgl_sateri_hk","execute_proc");
        acl.save();
    }catch(Exception E){
        System.out.println(E.getLocalizedMessage());
    }
    }

我运行它,结果是以下错误:

[DM_ACL_E_NOMATCH] 错误:“没有与名称匹配的 ACE ACL 'fme' 中的 'grp_corp_lgl_sateri_hk'。”

我很确定我没有犯任何打字错误。但我找不到我面临这种错误的原因。知道我在哪里犯错了吗?

===> 更新问题 在我意识到我的错误是基于 cmets 之后,我再次尝试如下:

    try{
            String aclName = "fme";
            IDfACL acl = _session.getACL(aclName, "LEXOPEDIA");
            acl.destroy();
//or 
            acl.revoke("grp_sateri_prc_lgl_acc2", "change_location");
            acl.save();
        }catch(Exception E){
            E.printStackTrace();
        }

但我仍然不断出错,我真的知道为什么吗?任何的想法 ?

【问题讨论】:

    标签: java acl documentum dfc


    【解决方案1】:

    当您认为从存储库中检索 ACL 是使用 IDfSession.newObject(<type_name>) 方法完成时,您犯了错误。此方法用于在存储库中创建新对象。相反,您应该这样做:

    IDfACL acl = sess.getObjectByQualification("dm_acl where object_name='" + myAcl + "'");
    acl.revoke("grp_corp_lgl_sateri_hk","execute_proc");
    acl.save();
    

    IDfACL acl = sess.getACL(myACL, <your ACL's domain name>); 
    // domain name could be "DM_DBO" if your ACL is available for everyone in repository
    acl.revoke("grp_corp_lgl_sateri_hk","execute_proc");
    acl.save();
    

    由于您创建了新对象,因此您当时没有名称为 grp_corp_lgl_sateri_hk 的访问器是合乎逻辑的。

    【讨论】:

    • IDfACL acl = sess.getACL(myACL, &lt;your ACL's domain name&gt;); 是仍然不断给我错误的行。即使我尝试创建一个新的 acl_name 并为其提供我希望的权限并更新使用它的对象的 acl 名称,我仍然无法使用 acl.destroy(); 函数删除前一个。知道为什么吗? XD 我已经更新了问题以获得更好的参考;)
    • 一旦我尝试打印出 acl 变量以查看其中是否存储了任何对象,结果为 null 。这让人认为很可能 acl 获取不起作用,但为什么? getACL() 的第一个属性应该是 object_name,第二个应该是所有者,对吗?并且存在于 dm_acl 对象表中
    • "getACL() 的第一个属性应该是 object_name,第二个应该是所有者,对吗?"。不不不。我写给你什么是第二个属性-> 域名。它可以是所有者,但不一定是。使用 DA 或您使用的任何东西,并确保您使用的是正确的域。如果您不确定在您的问题中粘贴屏幕截图,我会告诉您。
    • 顺便说一句,你为什么不使用 getObjectByQualification 方法来检查你的域名是否有问题?
    • 哦,我发现了问题所在。在 dm_acl 对象表中没有名为 acl_name 的列,而是名称是 object_name,现在它似乎工作正常;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多