Создание отношений между двумя файлами (Alfresco CE 4.2.c) с использованием CMIS

Моя модель выглядит так:

У меня есть две папки (HTMLs) и (изображения). Тонны файлов вставляются в папку с изображениями, и небольшая часть бизнес-сценария, который я пытаюсь реализовать, заключается в том, что, когда клиент запрашивает, например, chapter1.html, все связанные изображения для этого chapter1.html должны быть извлечены из репозитория Alfresco и отправлены.

Я использую CMIS и могу делать большинство вещей, которые он предоставляет. Я прошел большинство уроков и фрагментов кода и мог создать отношения следующим образом:

https://anonsvn.springframework.org/svn/se-surf/branches/DEV_CMIS_2/sandbox/spring-cmis/spring-cmis-test/src/main/java/org/springframework/extensions/cmis/test/CmisCreateTest.java

  1. testCreateRelationship (): работает нормально, но снова возвращается пустым, когда getRelationships() вызывается с setIncludeRelationships, установленным в Context.

  2. testBelarus (): он не работает и выдает следующее исключение (org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException: Bad Request).

Я использовал фрагмент кода, приведенный здесь, в разделе "Отношения" http://chemistry.apache.org/java/developing/guide.html и успешно его создал, но, опять же, столкнулся с трудностями при получении ссылок на изображения для этого конкретного HTML

Пожалуйста, предложите какое-нибудь решение, так как это единственное, что мешает мне поехать на Alfresco в Prod.

Если я делаю это неправильно (создаю отношения) и если есть лучшее решение для моих требований (Использование пользовательской модели / alfcmis: nodeRef / cmiscustom: docprop_string и т. Д.), Пожалуйста, предложите.

Любая помощь приветствуется.

Спасибо

1 ответ

Вставка кода из testCreateRelationship() с добавлением в конце некоторого добавленного кода, демонстрирующего, как получить отношения и вывести их на консоль (звучит так, как будто вы пробовали этот путь без удачи? Код, приведенный ниже, работает на моем репо в любом случае):

public void testCreateRelationship()
{
    Session session = createSession();
    Folder root = session.getRootFolder();

    Map<String,String> newFolderProps = new HashMap<String, String>();
    newFolderProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
    String name = "testCreateRelationship " + System.currentTimeMillis();
    newFolderProps.put(PropertyIds.NAME, name);
    Folder folder = root.createFolder(newFolderProps, null, null, null, session.getDefaultContext());
    System.out.println(folder.getName());

    Map<String,String> newDocProps1 = new HashMap<String, String>();
    newDocProps1.put(PropertyIds.OBJECT_TYPE_ID, "D:cmiscustom:document");
    newDocProps1.put(PropertyIds.NAME, "Test Doc 1");
    ContentStream contentStream1 = new ContentStreamImpl("xyz.txt", null, "plain/text", new ByteArrayInputStream("some content".getBytes()));
    Document doc1 = folder.createDocument(newDocProps1, contentStream1, VersioningState.MAJOR, null, null, null, session.getDefaultContext());

    Map<String,String> newDocProps2 = new HashMap<String, String>();
    newDocProps2.put(PropertyIds.OBJECT_TYPE_ID, "D:cmiscustom:document");
    newDocProps2.put(PropertyIds.NAME, "Test Doc 2");
    ContentStream contentStream2 = new ContentStreamImpl("xyz.txt", null, "plain/text", new ByteArrayInputStream("some content".getBytes()));
    Document doc2 = folder.createDocument(newDocProps2, contentStream2, VersioningState.MAJOR, null, null, null, session.getDefaultContext());

    Map<String, Serializable> relProps = new HashMap<String, Serializable>(); 
    relProps.put("cmis:sourceId", doc1.getId()); 
    relProps.put("cmis:targetId", doc2.getId()); 
    relProps.put("cmis:objectTypeId", "R:cmiscustom:assoc");
    session.createRelationship(relProps, null, null, null);

    // create a OperationContext that fetches relationships on both ends...
    OperationContext operationContext = new OperationContextImpl();
    operationContext.setIncludeRelationships(IncludeRelationships.BOTH);


    CmisObject object = session.getObject(doc1,operationContext);


    List<Relationship> relationships = object.getRelationships();
    for (Relationship rel : relationships){
        System.out.println("relation: "+ rel.getName());
    }
}
Другие вопросы по тегам