在 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_Creator
和 Document.set_Owner
方法,以确认哪个符合要求。
【讨论】:
以上是关于在 FileNet P8 中更新 Creator 属性的主要内容,如果未能解决你的问题,请参考以下文章
Filenet P8 如何为 jace.jar 附加 Javadoc