Массовый экспорт контента Alfresco

Мы планируем разместить большое количество папок (сайтов) внутри Alfresco на локальном диске. Я проходил через множество похожих вопросов и руководств, но, похоже, не могу понять, как инициировать загрузку с помощью REST API. Я впервые использую это, могу ли я получить пошаговый подход к тому, как с этим справиться?


person Tameem    schedule 05.02.2020    source источник
comment
Если у вас есть код, который не работает, опубликуйте его, и мы поможем. Если у вас нет кода и вы не знаете, с чего начать, вам, вероятно, повезет больше на форумах Alfresco, это гораздо лучшая настройка для расширенного чата / обсуждения / обнаружения.   -  person Gagravarr    schedule 06.02.2020


Ответы (1)


Что ж, есть много способов загрузить контент из Alfresco. Если вы еще этого не сделали, я предлагаю посмотреть на http://api-explorer.alfresco.com, чтобы понять REST API.

Вы можете загрузить любой объект в Alfresco, если знаете ссылку на его узел. Например, предположим, что у меня есть файл с именем test-0.txt и ссылка на его узел выглядит следующим образом:

workspace://SpacesStore/0e61aa25-d181-4465-bef4-783932582636

Я мог бы использовать REST API, чтобы загрузить его, например:

http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/nodes/0e61aa25-d181-4465-bef4-783932582636/content

Итак, одна из стратегий - пройти по узлам, которые вы хотите экспортировать, а затем вызвать этот URL-адрес для их загрузки.

Начиная с Alfresco 5.2.1, Alfresco добавила новую конечную точку под названием загрузки < / а>. С его помощью вы можете запросить загрузку, состоящую из произвольного количества ссылок на узлы. Итак, если у меня есть следующие файлы:

test-0.txt: workspace://SpacesStore/0e61aa25-d181-4465-bef4-783932582636
test-1.txt: workspace://SpacesStore/6bdac77f-8499-4be3-9228-9aabf80ba3e3
test-2.txt: workspace://SpacesStore/a6861c8f-8444-4bce-87a2-191c56b6ec7c
test-3.txt: workspace://SpacesStore/118121e9-bd92-4dec-9de7-062e374e5fb5

Я мог бы попросить Alfresco создать объект загрузки (фактическое содержимое будет в формате ZIP), состоящий из всех четырех этих файлов, например:

curl --location --request POST 'http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/downloads' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic YWRtaW46YWRtaW4=' \
--data-raw '{
    "nodeIds":
     [
        "0e61aa25-d181-4465-bef4-783932582636",
        "6bdac77f-8499-4be3-9228-9aabf80ba3e3",
        "a6861c8f-8444-4bce-87a2-191c56b6ec7c",
        "118121e9-bd92-4dec-9de7-062e374e5fb5"
     ]
}'

Alfresco ответит примерно так:

{
    "entry": {
        "filesAdded": 0,
        "bytesAdded": 0,
        "totalBytes": 0,
        "id": "91456d9a-ed9e-493a-9efa-a1e49fbb578b",
        "totalFiles": 0,
        "status": "PENDING"
    }
}

Обратите внимание на статус PENDING. Он асинхронно создает запрашиваемый ZIP. Вы можете проверить это, выполнив GET для объекта загрузки, например:

http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/downloads/91456d9a-ed9e-493a-9efa-a1e49fbb578b

Как только ответ появится как DONE, вы можете загрузить подготовленный для вас ZIP Alfresco. Помните конечную точку узла из начала этого поста? Здесь тоже работает. Просто используйте идентификатор загрузки вместо ссылки на узел, например:

curl --location --request GET 'http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/nodes/91456d9a-ed9e-493a-9efa-a1e49fbb578b/content' --header 'Authorization: Basic YWRtaW46YWRtaW4='

Таким образом, вместо того, чтобы по отдельности загружать каждый объект, который вы пытаетесь экспортировать, вы можете объединить их в пакет и загрузить несколько объектов, сжатых в виде ZIP-архива.

Если вы не хотите делать это с помощью обычного REST, вы также можете рассмотреть возможность использования CMIS. Вы можете получить клиентскую библиотеку для предпочитаемого вами языка в проекте Apache Chemistry.

person Jeff Potts    schedule 07.02.2020