2015-06-17 109 views
0

目前,我需要使用CMIS實現在Sharepoint存儲庫上創建一個文件夾,因此我使用它在路徑http://(server)/_vti_bin/cmis/soap上提供的Web服務。我實現了基於此示例的代碼https://chemistry.apache.org/java/opencmis-cookbook.html,但Sharepoint不返回rootFolderId,因此方法getChildren不返回任何內容。最後,基於使用發現服務的查詢,我檢索根文件夾ID,但現在問題是我無法創建子文件夾。這是我的代碼:使用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); 

它總是返回null,我不知道如何正確地將參數傳遞給服務使創建工作。我不知道在哪裏可以找到日誌,有些東西告訴我我做錯了什麼。

謝謝

PD:我需要的,因爲是已經使用SharePoint CMIS服務的現有代碼的修改,用這個形式給出。

回答

0

您嘗試更新只讀屬性。見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綁定)。 Session將爲您提供創建/檢索文件夾/文檔的能力