2014-04-10 7 views
0

안녕하세요, 저는 Apache 화학 dotcmis로 문서를 만들어야합니다. 그러나 가장 단순한 경우에도 SharePoint는 folder.CreateDocument를 호출 할 때 CmisConstraintException을 트리거합니다. 사용 가능한 모든 VersioningStates를 테스트했지만 문제가 해결되지 않았습니다. dotCmis 0.6을 사용합니다. 내 응용 프로그램의 프레스코 부분은dotCmis. Sharepoint 2013로 작성 문서

-Armin 여기 내 모의 업입니다 .. BTW, 잘 실행됩니다.

using DotCMIS; 
using DotCMIS.Client; 
using DotCMIS.Client.Impl; 
using DotCMIS.Data.Impl; 
using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     Dictionary<string, string> parameters; 
     parameters = new Dictionary<string, string>(); 
     parameters[SessionParameter.BindingType] = BindingType.AtomPub; 
     parameters[SessionParameter.AtomPubUrl] = "http://coretwo/" + "websites/migrationtest" + "/_vti_bin/cmis/rest?getRepositories"; 
     parameters[SessionParameter.User] = "[email protected]"; 
     parameters[SessionParameter.Password] = "whoknows"; 


     var session = SessionFactory.NewInstance().GetRepositories(parameters).Single(r => r.Name.Equals("Dokumente")).CreateSession(); 
     var rFolder = session.GetRootFolder(); 


     IDictionary<string, object> properties = new Dictionary<string, object>(); 
     properties[PropertyIds.Name] = "Hello World Document"; 
     properties[PropertyIds.ObjectTypeId] = "cmis:document"; 

     byte[] content = UTF8Encoding.UTF8.GetBytes("Hello World!"); 

     ContentStream contentStream = new ContentStream(); 
     contentStream.FileName = "hello-world.txt"; 
     contentStream.MimeType = "text/plain"; 
     contentStream.Length = content.Length; 
     contentStream.Stream = new MemoryStream(content); 

     IDocument doc = rFolder.CreateDocument(properties, contentStream, null); 

    } 
} 

}

답변

1

머피 내가 여기에 게시 한 후 응답 분을 발견 ... 어디 에나있다. 트릭은 CreateDocument를 호출 할 때 DotCMIS.Enums.VersioningState.CheckedOut을 사용하고 그 후에 체크인을 수행하는 것입니다. 그래서 여기

나를 위해 작동하는 것입니다 :

IDocument doc = rFolder.CreateDocument(properties, contentStream, DotCMIS.Enums.VersioningState.CheckedOut); 
doc.CheckIn(true, null, null, "Checkin", null, null, null);