2015-06-17 3 views
0

В настоящее время мне нужно создать папку в репозитории Sharepoint, используя ее реализацию CMIS, поэтому я использую веб-службы, которые она предлагает по пути http://(server)/_vti_bin/cmis/soap. Я реализовал код на основе этого примера https://chemistry.apache.org/java/opencmis-cookbook.html, но Sharepoint не возвращает rootFolderId, поэтому метод getChildren ничего не возвращает. Наконец, на основе запроса с использованием службы обнаружения я извлекаю идентификатор корневой папки, но теперь проблема в том, что я не могу создать подпапку. Это мой код:Создание папки с использованием CMIS и Sharepoint

  Object.cmisPropertyId p1 = new Object.cmisPropertyId(); 
      p1.propertyDefinitionId = "cmis:baseTypeId"; 
      p1.value = new string[1]; 
      p1.value[0] = "cmis:folder"; 
      propertiesType.Items.SetValue(p1, 0); 

      Object.cmisPropertyString p2 = new Object.cmisPropertyString(); 
      p2.propertyDefinitionId = "cmis:name"; 
      p2.value = new string[1]; 
      p2.value[0] = "mytest"; 
      propertiesType.Items.SetValue(p2, 1); 

      Object.cmisPropertyString p3 = new Object.cmisPropertyString(); 
      p3.propertyDefinitionId = "cmis:path"; 
      p3.value = new string[1]; 
      p3.value[0] = "Rep/f1/mytest"; 
      propertiesType.Items.SetValue(p3, 2); 

      Object.cmisPropertyId p4 = new Object.cmisPropertyId(); 
      p4.propertyDefinitionId = "cmis:objectTypeId"; 
      p4.value = new string[1]; 
      p4.value[0] = "cmis:folder"; 
      propertiesType.Items.SetValue(p4, 3); 

      Object.cmisPropertyId p5 = new Object.cmisPropertyId(); 
      p5.propertyDefinitionId = "cmis:parentId"; 
      p5.value = new string[1]; 
      p5.value[0] = "268"; 
      propertiesType.Items.SetValue(p5, 4); 

      Object.cmisPropertyString p6 = new Object.cmisPropertyString(); 
      p6.propertyDefinitionId = "Author"; 
      p6.value = new string[1]; 
      p6.value[0] = "theAuthor"; 
      propertiesType.Items.SetValue(p6, 5); 

      Object.cmisPropertyId p7 = new Object.cmisPropertyId(); 
      p7.propertyDefinitionId = "cmis:allowedChildObjectTypeIds"; 
      p7.value = new string[3]; 
      p7.value[0] = "cmis:document"; 
      p7.value[1] = "0x010100C98D402E3C78834C873469CE4F41E2C300B0A3B5E8A3E51543977DFDCE95850082"; 
      p7.value[2] = "cmis:folder"; 
      propertiesType.Items.SetValue(p7, 6); 

var result = objectService.createFolder(repositoryInfo.repositoryId, propertiesType, null, null, null, null, ref extType); 

Это всегда возвращает нуль, я не знаю, как передать правильно аргументы службы для делать работы создания. Я не знаю, где найти журналы o то, что говорит мне, что я делаю неправильно.

Спасибо

PD: Мне нужно использовать этот ПОДХОД, потому что представляет собой модификацию существующего кода, который уже пользуются услугами Sharepoint CMIS.

ответ

0

Вы пытаетесь обновить свойства readonly. См CMIS 1.0 http://docs.oasis-open.org/cmis/CMIS/v1.1/CMIS-v1.1.html Пример на Java

Folder root = session.getRootFolder(); 
Map<String, Object> properties = new HashMap<String, Object>(); 
properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder"); 
properties.put(PropertyIds.NAME, "a new folder"); 
Folder newFolder = root.createFolder(properties); 

Ключ "сессии". Вы должны создать сеанс для репозитория CMIS (привязка Atom или WSDL). Сессия предоставит вам возможность создавать/извлекать папки/документы

Смежные вопросы