Обновление свойства Creator в FileNet P8

Я пытаюсь обновить свойство Creator в реализации FileNetP8. Я попытался обновить его, используя грант "Modify Certain System Properties", однако кажется, что этот грант не распространяется на "Creator", а скорее применяется к другим свойствам, таким как "LastModifiedBy" и так далее.

Я также попытался изменить сам шаблон свойств в моем классе через свойство "propertyTemplate" на "Read-Write", однако при попытке сохранить его возвращается ошибка, в которой говорится, что

«Операция нарушает ограничение реализации. Унаследованное ограничение Settability для свойства Creator класса»

Любая помощь приветствуется.


person WiredCoder    schedule 17.09.2019    source источник


Ответы (4)


Похоже, службе поддержки IBM уже задавали этот вопрос, и они предоставили «Как» и ответили на него здесь:

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

Взгляд IBM на это, как они подчеркнули в сводном разделе общей ссылки, заключается в том, что

Код, необходимый для установки Creator, DateCreated, LastModifier и DateLastModified, не сложен, но он несколько отличается от кода, обычно используемого для более распространенных свойств. Описанные выше шаги должны позволить разработчику устанавливать эти значения по мере необходимости.

Подводя итог подходу, которого они придерживались:

  1. Создайте новый Document, установив для свойства Creator желаемое значение.
  2. Извлечь текущий документ с параметром Reservation Properties, установленным для нового объекта свойств документа, используя метод Document.getProperties().
  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, и оно сработало (за исключением добавления дополнительной версии) хорошо для меня.

person WiredCoder    schedule 27.09.2019

Цитата из Центра знаний:

Настройка этого свойства доступна только для чтения для большинства пользователей. Для пользователей, которым предоставлен привилегированный доступ на запись (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)

person swepss    schedule 26.09.2019
comment
Спасибо за ссылки, изменение БД, однако аннулирует гарантию, запрещено IBM. - person WiredCoder; 27.09.2019
comment
Не говорите им об этом :)) Вам просто нужно знать, что свойство Creator связано с записями ACL, и вам нужно правильно изменить обе стороны. Если вам нужно сделать это один раз, вы можете использовать FileNet Deployment Manager, чтобы изменить его, я не уверен, но предполагаю, что это возможно. - person swepss; 16.10.2019
comment
Ты прав. Это также можно сделать с помощью FDM, для этого требуется изменение права на изменение определенных системных свойств в хранилище объектов. - person WiredCoder; 18.10.2019

creator является системным свойством и управляется FileNet и заполняет значение при сохранении объекта. Насколько я знаю, нет API, чтобы переопределить это. Обновление БД — не лучшая идея, так как IBM может аннулировать поддержку. Однако есть один способ добиться этого, то есть с помощью Change Preprocessors. Это действия на стороне сервера, реализуемые пользователем, которые позволяют вам изменить creator непосредственно перед сохранением объекта. Надеюсь это поможет.

person bajji    schedule 12.03.2020

Во-первых, я бы рекомендовал просмотреть методы Document.set_Creator и Document.set_Owner из документации IBM Filenet, чтобы подтвердить, какой из них соответствует требованию.

person cwlo    schedule 02.12.2019