在 FileNet P8 中更新 Creator 属性

Posted

技术标签:

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

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

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

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

感谢任何帮助。

【问题讨论】:

【参考方案1】:

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

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

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

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

总结他们遵循的方法:

    创建一个新的Document,将Creator 属性设置为所需的值 使用Document.getProperties() 方法将Reservation Properties 参数设置为新的文档属性对象检出当前文档。

    将签出文档的内容设置为新文件,在我的例子中,我使用下面的代码将内容从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);
    
    签入文档,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 方法,以确认哪个符合要求。

【讨论】:

以上是关于在 FileNet P8 中更新 Creator 属性的主要内容,如果未能解决你的问题,请参考以下文章

在 FIleNet P8 中执行签入操作时开始上传失败错误

Filenet P8 如何为 jace.jar 附加 Javadoc

FileNet P8 无法签出文档

Filenet 更改文档类

找不到 IBM Filenet P8 更改预处理器 Java 实现

IBM Filenet P8:如何获取选择列表项的本地化显示名称