Получите все теги Alfresco с помощью CMIS

Я пытаюсь получить все теги (nodeRefs и имена) из alfresco с помощью CMIS.

Версия Alfresco 3.4.

Прежде чем много гуглить, я не нашел подходящего запроса для этого? Любой совет?


person Pymoo    schedule 12.10.2013    source источник
comment
Вы хотите получить теги на данном узле или вы хотите получить узлы, которые представляют определенные теги?   -  person Gagravarr    schedule 12.10.2013
comment
Спасибо за ответ, Гаграварр. Попытаюсь уточнить вопрос. Мне нужно рекурсивно показать все теги на узле (папке), потому что в моей интеграции я должен сделать форму для загрузки файлов, и пользователь хочет добавить существующие теги в документ в этот момент.   -  person Pymoo    schedule 13.10.2013
comment
Должны ли это быть просто теги, используемые этой папкой + дочерними элементами, или теги, используемые на сайте, содержащем папку, будут в порядке? (Только Alfresco уже поддерживает список последних для вас)   -  person Gagravarr    schedule 13.10.2013
comment
Мне нужны все теги для всего сайта (включая текущую папку). Какой лучший запрос для этого? Можно ли получить доступ через opencmis? Большое спасибо, Гаграварр.   -  person Pymoo    schedule 13.10.2013
comment
Все теги для сайта — это простой запрос, просто их нет в CMIS. Вам нужно будет использовать обычные API-интерфейсы Alfresco, чтобы получить его. (позже попробую сделать из этого ответ, если меня никто не опередит)   -  person Gagravarr    schedule 13.10.2013
comment
@Gagravarr Вы всегда зацикливаетесь на комментариях :).   -  person Tahir Malik    schedule 14.10.2013


Ответы (1)


Я не могу найти на вики Alfresco огромное количество подробностей о том, как работает служба тегов, поэтому если кто-то хочет взять это и обновить вики, это может быть полезно!

разметка тегами состоит из трех ключевых частей:

  • Сами узлы тегов
  • Помеченные узлы
  • Области тегов

Узлы тегов живут под специальным узлом workspace://SpacesStore/tag:tag-root, который находится в /cm:categoryRoot/cm:taggable. Узлы тегов имеют тип cm:category, а cm:name — это тег.

Затем вы захотите применить тег к узлу. Если это новый тег, его необходимо сначала создать в корне тега. Если это первый тег на узле, добавьте аспект cm:taggable. Получите noderef узла тега, затем добавьте его к многозначному свойству cm:taggable на узле. (Служба тегов сделает все это за вас, если вы вызовете addTag(NodeRef,String)

Наконец, различные узлы вверх по первичной родительской иерархии узла, который вы только что пометили, могут быть определены как область действия тега (например, узел узла). При этом узлы с аспектом cm:tagscope имеют обновленное свойство cm:tagScopeSummary. cm:tagScopeSummary содержит список тегов, используемых дочерними элементами узла, а также количество использований тега. Это позволяет вам выяснить, какие теги наиболее популярны для этой части дерева, а также выяснить, какие теги используются и когда тег больше не используется деревом. Опять же, служба тегов обновляет все это для вас.

Насколько мне известно, различные свойства тегов (cm:taggable и cm:tagScopeSummary) не отображаются через CMIS. Вам нужно будет использовать один из обычных API-интерфейсов Alfresco, либо из Public API, либо что-то вроде script/org/alfresco/collaboration/tagQuery.get, который позволит вам получить список тегов, примененных к узлу. Я бы посоветовал вам убедиться, что узел, из которого вы запрашиваете, является областью действия тега, так что это приятно и быстро. Сайт всегда является областью действия тега, так что это хорошее место для начала.

person Gagravarr    schedule 14.10.2013
comment
Отличный ответ. Спасибо. Думаю, поправьте меня, если я ошибаюсь, сервис тегов addTag начинается с 4.0 версии Liferay. не так ли? Итак, я не могу заставить его работать только с API-интерфейсами alfresco-opencmis-extension и chemistry-opencmis? Могу ли я дополнительно использовать веб-службы? Примечание: ВНИМАНИЕ! Я новичок в Alfresco. - person Pymoo; 14.10.2013
comment
Я ничего не знаю о Liferay, извините. Я считаю, что вам нужно будет сделать вызовы API REST без CMIS, чтобы получить нужные данные, звоня прямо в Alfresco. - person Gagravarr; 14.10.2013
comment
Извините, я имел в виду Alfresco 4.0, а не Liferay. Много открытых войн, простите :-( - person Pymoo; 14.10.2013
comment
Я бы не рекомендовал пробовать это с WebServices. Существует очень простой и удобный REST API, который делает именно то, что вам нужно, используйте его! Нет смысла тратить огромное количество времени, пытаясь что-то плохо взломать с помощью ws*, примите подход Alfresco и воспользуйтесь простым вызовом REST! - person Gagravarr; 14.10.2013
comment
Большое спасибо @Gagravarr за вашу помощь. Я действительно ценил это. Я постараюсь сделать разработку с использованием REST API (REST API = веб-скрипты, не так ли?). Не могли бы вы помочь мне с некоторыми примерами? - person Pymoo; 15.10.2013
comment
На вики Alfresco есть множество примеров. Кроме того, еще одним преимуществом простых RESTful API является то, что вы можете прототипировать большинство из них прямо из своего веб-браузера! - person Gagravarr; 15.10.2013
comment
Привет еще раз, пытаясь использовать Restful APi, я хочу получить теги от узла со службой, расположенной в /alfresco/service/api/tagscopes/node/{store_type}/{store_id/{id}/tags, но это всегда return a: 404 Описание: Запрошенный ресурс недоступен. Сообщение: 09170003 URL-адрес сценария /tags/workspace/SpacesStore/tag/nodes не соответствует веб-сценарию. Что может происходить? Спасибо! - person Pymoo; 17.10.2013
comment
Проверьте свой URL-адрес и убедитесь, что вы подставляете правильные значения параметров. Если вы сомневаетесь, найдите немного Alfresco, использующего этот API, и проанализируйте http-трафик, чтобы увидеть его в действии. - person Gagravarr; 17.10.2013