Как создать собственное свойство на объекте с использованием Apache Chemistry

Я работаю с локальным экземпляром Alfresco CMS и использую Apache Chemistry Java CMIS. Все хорошо работает для просмотра и создания объектов, однако мне трудно добавлять метаданные в документы.

На их исходной странице есть пример, который говорит, что вам нужно позвонить updateProperties на CmisObject, К сожалению, это не работает, исключение, которое я получил: Property 'my:property' is not valid for this type or one of the secondary types

Знаете ли вы, как я могу добавить пользовательское свойство? Нужно ли улучшать существующую коллекцию аспектов, и если да, то как я могу это сделать?

Благодарю.

2 ответа

Решение

Свойство my:property недопустимо для этого типа или одного из вторичных типов.

my: свойство, похоже, является пользовательским свойством, и затем должно обрабатываться с пользовательским аспектом Alfresco.

Если вы хотите использовать аспекты Alfresco, вам понадобится расширение Alfresco OpenCMIS

Следующий фрагмент кода позволяет использовать расширение Alfresco с OpenCMIS:

Map<String, String> parameter = new HashMap<String, String>();
// user credentials
parameter.put(SessionParameter.USER, "admin");
parameter.put(SessionParameter.PASSWORD, "admin");

// connection settings
parameter.put(SessionParameter.ATOMPUB_URL, "http://localhost:8080/alfresco/cmisatom");
parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());

// set the alfresco object factory
parameter.put(SessionParameter.OBJECT_FACTORY_CLASS, "org.alfresco.cmis.client.impl.AlfrescoObjectFactoryImpl");

// create session
SessionFactory factory = SessionFactoryImpl.newInstance();
Session session = factory.getRepositories(parameter).get(0).createSession();

Следующий код позволяет создать новый документ с заполненным пользовательским свойством:

Map<String, Object> properties = new HashMap<String, Object>();
properties.put(PropertyIds.NAME, "doc1");
properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document,my:docProps");
properties.put("my:property", "My document");

Document doc = session.getRootFolder().createDocument(properties, null, null);

Пользовательские свойства должны быть определены в хранилище, а затем вы можете попытаться установить их в свойствах CMIS.

Другие вопросы по тегам