Как создать собственное свойство на объекте с использованием 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.