在 FileNet P8 中更新 Creator 属性
Updating Creator property in FileNet P8
我正在尝试更新 FileNetP8 实现中的 Creator
属性。我尝试使用 "Modify Certain System Properties"
的授权更新它,但似乎此授权不适用于 "Creator"
,而是适用于其他属性,例如 "LastModifiedBy"
等。
我也曾尝试将 class 上的 属性 模板本身从 "propertyTemplate"
属性 更改为 "Read-Write"
,但是出现错误当我尝试保存它时返回,说明
"The operation violates a constraint of the implementation. Inherited
Settability constraint on property Creator of class"
感谢任何帮助。
引自知识中心:
Settability of this property is read-only for most users. For users
who have been granted privileged write access
(AccessRight.PRIVILEGED_WRITE), this property is settable only on
create. After initial object creation, this property is read-only for
all users.
所以,通过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 支持已经被问到这个问题,他们提供了 "Some How" 并在此处回答:
IBM 在共享 link 的摘要部分中强调的是
The code needed to set Creator, DateCreated, LastModifier and
DateLastModified are not complex, but they are somewhat different to
the code normally used for more common properties. The above steps
should allow a developer to set these values when called for.
总结一下他们遵循的方法:
- 创建一个新的
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 提供的并且对我来说效果很好(除了添加一个额外的版本)
首先,我建议查看 IBM Filenet 文档中的 Document.set_Creator
和 Document.set_Owner
方法,以确认哪个符合要求。
creator
是一个系统 属性,由 FileNet 管理并在持久化对象时填充值。据我所知,没有 API 可以覆盖它。更新数据库不是一个好主意,因为 IBM 可能会使支持失效。然而,有一种方法可以实现这一点,即使用 Change Preprocessors
。这些是服务器端、用户实现的操作,允许您在对象被持久化之前更改 creator
。
希望这有帮助。
我正在尝试更新 FileNetP8 实现中的 Creator
属性。我尝试使用 "Modify Certain System Properties"
的授权更新它,但似乎此授权不适用于 "Creator"
,而是适用于其他属性,例如 "LastModifiedBy"
等。
我也曾尝试将 class 上的 属性 模板本身从 "propertyTemplate"
属性 更改为 "Read-Write"
,但是出现错误当我尝试保存它时返回,说明
"The operation violates a constraint of the implementation. Inherited Settability constraint on property Creator of class"
感谢任何帮助。
引自知识中心:
Settability of this property is read-only for most users. For users who have been granted privileged write access (AccessRight.PRIVILEGED_WRITE), this property is settable only on create. After initial object creation, this property is read-only for all users.
所以,通过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 支持已经被问到这个问题,他们提供了 "Some How" 并在此处回答:
IBM 在共享 link 的摘要部分中强调的是
The code needed to set Creator, DateCreated, LastModifier and DateLastModified are not complex, but they are somewhat different to the code normally used for more common properties. The above steps should allow a developer to set these values when called for.
总结一下他们遵循的方法:
- 创建一个新的
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 提供的并且对我来说效果很好(除了添加一个额外的版本)
首先,我建议查看 IBM Filenet 文档中的 Document.set_Creator
和 Document.set_Owner
方法,以确认哪个符合要求。
creator
是一个系统 属性,由 FileNet 管理并在持久化对象时填充值。据我所知,没有 API 可以覆盖它。更新数据库不是一个好主意,因为 IBM 可能会使支持失效。然而,有一种方法可以实现这一点,即使用 Change Preprocessors
。这些是服务器端、用户实现的操作,允许您在对象被持久化之前更改 creator
。
希望这有帮助。