Массовый экспорт контента Alfresco - PullRequest
0 голосов
/ 05 февраля 2020

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

1 Ответ

1 голос
/ 08 февраля 2020

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

Вы можете загрузить любой объект в 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 добавил новую конечную точку под названием downloads . С его помощью вы можете запросить загрузку, состоящую из произвольного числа ссылок на узлы. Итак, если у меня есть следующие файлы:

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

Как только ответ вернется в состояние ВЫПОЛНЕНО, вы можете загрузить подготовленный для вас 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 Химия .

...