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

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

Спасибо.


person Horia Toma    schedule 20.06.2013    source источник


Ответы (2)


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

my:property кажется настраиваемым свойством, и его следует обрабатывать с помощью настраиваемого аспекта 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);
person Julien Boulay    schedule 21.06.2013
comment
спасибо, но как вы определяете my:docProps? Я получил это исключение при вызове createDocument с вашим кодом: Тип «cmis:document,my:docProps» неизвестен! - person Horia Toma; 21.06.2013
comment
Свойства не присваиваются документу в Alfresco динамически. Вам нужно добавить пользовательский аспект в Alfresco. Он полностью не связан с cmis. - person Julien Boulay; 21.06.2013
comment
Я обновил свой ответ: вам нужно установить расширение Alfresco OpenCmis и объявить реализацию AlfrescoObjectFactory перед созданием сеанса с Alfresco. - person Julien Boulay; 21.06.2013
comment
Я бы сказал, что это больше настройка (xml), чем конфигурация (в пользовательском интерфейсе). Чтобы узнать, как добавить новые аспекты, перейдите по следующим ссылкам: blogs.alfresco.com/wp/wabson/2010/02/25/ и docs.alfresco.com/4.0/ - person Julien Boulay; 22.06.2013

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

person Jajikanth pydimarla    schedule 05.01.2017