【问题标题】:Updating Creator property in FileNet P8在 FileNet P8 中更新 Creator 属性
【发布时间】:2019-09-17 14:00:47
【问题描述】:

我正在尝试更新 FileNetP8 实现中的 Creator 属性。我尝试使用"Modify Certain System Properties" 的授权对其进行更新,但似乎此授权不适用于"Creator",而是适用于其他属性,例如"LastModifiedBy" 等。

我还尝试通过"propertyTemplate" 属性将我的类上的属性模板本身更改为"Read-Write",但是当我尝试保存它时返回错误,说明

"该操作违反了实现的约束。继承 类属性Creator的可设置性约束"

感谢任何帮助。

【问题讨论】:

    标签: filenet-p8 filenet-content-engine filenet-cpe


    【解决方案1】:

    IBM 支持似乎已经被问到这个问题,他们在这里提供了“Some How”并回答了这个问题:

    https://www.ibm.com/support/pages/setting-selected-system-properties-ibm-filenet-p8-document-versions

    IBM 对此的看法,正如他们在共享链接的摘要部分中强调的那样,

    设置 Creator、DateCreated、LastModifier 和 DateLastModified 并不复杂,但它们与 通常用于更常见属性的代码。以上步骤 应允许开发人员在需要时设置这些值。

    总结他们遵循的方法:

    1. 创建一个新的Document,将Creator 属性设置为所需的值
    2. 使用Document.getProperties() 方法将Reservation Properties 参数设置为新的文档属性对象检出当前文档。
    3. 将签出文档的内容设置为新文件,在我的例子中,我使用下面的代码将内容从Document 复制到Reservation 对象。

      ContentElementList docContentList = oldVersion.get_ContentElements();
      ContentTransfer contentTransfer = (ContentTransfer) docContentList.get(0);
      
      ContentElementList docContentList = oldVersion.get_ContentElements();
      ContentTransfer contentTransfer = (ContentTransfer) docContentList.get(0);
      
      ContentTransfer updatedContentTransfer = Factory.ContentTransfer.createInstance();
      updatedContentTransfer.setCaptureSource(contentTransfer.accessContentStream());
      
      ContentElementList contentElementList = Factory.ContentElement.createList();
      contentElementList.add(updatedContentTransfer);
      reservation.set_ContentElements(contentElementList);
      
    4. 签入文档,Creator 现已更新

    我并不完全相信这个解决方案,但它是 IBM 提供的,而且对我来说效果很好(除了添加一个额外的版本)

    【讨论】:

      【解决方案2】:

      知识中心引述:

      此属性的可设置性对于大多数用户来说是只读的。对于用户 被授予特权写访问权限的人 (AccessRight.PRIVILEGED_WRITE),该属性只能在 创造。初始对象创建后,此属性是只读的 所有用户。

      链接https://www.ibm.com/support/knowledgecenter/en/SSNW2F_5.2.1/com.ibm.p8.ce.dev.prop.doc/_index_by_property.htm#Creator

      所以,通过 API 是不可能的(wsi/java/.net 没关系)。 但是你可以尝试通过数据库直接更新来改变它。您可以在此处找到数据库架构 (https://www.ibm.com/support/knowledgecenter/en/SSNW2F_5.2.1/com.ibm.p8.ce.dev.ce.doc/database_table_schemas.htm)

      【讨论】:

      • 感谢您的链接,IBM 禁止更改数据库,但保修无效
      • 不要告诉他们 :)) 您只需要知道 Creator 属性与 ACL 记录相关联,并且您需要以适当的方式更改双方。如果你需要做一次,你可以使用 FileNet Deployment Manager 来改变它,我不确定,但假设是可能的。
      • 你是对的。这也可以通过 FDM 完成,它需要在对象存储上修改“修改某些系统属性”的授权。
      【解决方案3】:

      creator 是一个系统属性,由 FileNet 管理,并在持久化对象的同时填充值。据我所知,没有 API 可以覆盖它。更新数据库不是一个好主意,因为 IBM 可能会取消支持。然而,有一种方法可以实现这一点,即使用Change Preprocessors。这些是服务器端用户实现的操作,允许您在对象被持久化之前更改creator。 希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        首先,我建议查看 IBM Filenet 文档中的 Document.set_CreatorDocument.set_Owner 方法,以确认哪个符合要求。

        【讨论】:

          猜你喜欢
          • 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
          相关资源
          最近更新 更多