0

Documentum データ ストレージに接続された Java プロジェクトを実行しています。API クラスを使用して手動で ACL を作成しようとしています。以下は私のコードです:

            StringBuilder newAcl = new StringBuilder();
            newAcl.append(selectedItem.getName());
            newAcl.append(selectedItem.getId());
            newAcl.append("_acl");
            IDfACL acl = (IDfACL)_session.newObject("dm_acl");

            acl.setObjectName(newAcl.toString());
            acl.setDescription(newAcl.toString());

            acl.save();

            IDfPermit permit = new DfPermit();

            permit.setAccessorName(newAcl.toString());
            permit.setPermitType(IDfPermit.DF_ACCESS_PERMIT);
            permit.setPermitValue(IDfACL.DF_XPERMIT_CHANGE_FOLDER_LINKS_STR);
            permit.setPermitValue(IDfACL.DF_PERMIT_READ_STR);
            acl.grantPermit(permit);

            acl.save();

問題は、作成しようとしている ACL を正常に作成でき、dm_acl テーブル オブジェクトから取得できることです。私が立ち往生した唯一のことは、コードで所有者を指定したことがないため、所有者を設定する方法であり、 dm_acl テーブルを確認すると、所有者は dm_admin であると表示されます。どうすれば修正できますか?dm_acl で ACL を正常に作成できますが、次のようなエラーも表示されます。

[DM_ACL_E_USER_NOT_EXIST]エラー: 「ACL 'China InvestmentsCIL_acl' で指定された owner_name または accessor_name 'China InvestmentsCIL_acl' は存在しません。」

4

2 に答える 2

0

問題は、コードで ACL アクセサーを正しく定義していないことです。メッセージから、ACL の名前をアクセサーの名前として設定しようとしていることがわかり ます。

permit.setAccessorName(newAcl.toString());

また、権限を設定する既存のユーザー/グループの名前にする必要があります。

于 2016-09-22T13:23:41.073 に答える
0

あなたが直面している[DM_ACL_E_USER_NOT_EXIST]エラーは、おそらく、ACL を作成したときにその所有者/グループがあり、その間にそれが削除されたためです。オブジェクトを更新しているとき、dm_aclこれに直面しています。

于 2016-09-15T06:04:21.687 に答える