3

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

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

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

任何帮助表示赞赏。

4

4 回答 4

2

似乎 IBM Support 已经被问过这个问题,他们在这里提供了“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. 使用Method检出当前文档并将Reservation Properties参数设置为新的 Document 属性对象。Document.getProperties()
  3. 将签出文档的内容设置为新文件,在我的情况下,我使用下面的代码将内容从对象复制DocumentReservation对象。

    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 提供的,而且对我来说效果很好(除了添加一个额外的版本)

于 2019-09-27T11:53:21.173 回答
1

来自知识中心的报价:

此属性的可设置性对于大多数用户来说是只读的。对于已被授予特权写入访问权限 (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 )

于 2019-09-26T09:24:02.260 回答
0

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

于 2020-03-12T01:16:57.730 回答
-2

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

于 2019-12-02T18:20:40.070 回答