2013-03-21 3 views
1

Alfresco 및 dotCMIS 라이브러리에 관한 질문이 있습니다. 기본적으로 나는 특정 폴더에 도착하고 거기에 문서를 만들고 싶습니다. 나는 다음과 같은 코드가이 시점에서 알 프레스코 프로그래밍 방식으로 올바른 폴더로 이동

은 (내가 그것을 지저분한 알고 있지만, 테스트를 위해이었다) :

그것은 단지 루트 폴더를 엽니 다
Dictionary<string, string> parameters = new Dictionary<string, string>(); 

      parameters[SessionParameter.BindingType] = BindingType.AtomPub; 
      parameters[SessionParameter.AtomPubUrl] = "http://webadress:2005/alfresco/service/cmis"; 
      parameters[SessionParameter.User] = "amdin"; 
      parameters[SessionParameter.Password] = "admpsw"; 

      SessionFactory factory = SessionFactory.NewInstance(); 
      IList<DotCMIS.Client.IRepository> repositories = factory.GetRepositories(parameters); 
      DotCMIS.Client.ISession session = repositories[0].CreateSession(); 

      foreach (ICmisObject cmisObject in rootFolder.GetChildren()) 
      { 
       Console.WriteLine(cmisObject.Name); 
       if (cmisObject.Name.Equals("AlfresCO")) 
       { 
        var type = cmisObject.GetType(); 
        IFolder circabcfolder = cmisObject as IFolder; 
        foreach (ICmisObject obj in circabcfolder.GetChildren()) 
        { 
         Console.WriteLine(obj.Name); 
         if (obj.Name.Equals("SubFolder1")) 
         { 
          IFolder circabcfolder2 = obj as IFolder; 
          foreach (ICmisObject obj2 in circabcfolder2.GetChildren()) 
          { 
           Console.WriteLine(obj2.Name); 

           foreach (ICmisObject obj3 in (obj2 as IFolder).GetChildren()) 
           { 
            Console.WriteLine(obj3.Name); 
            if (obj3.Name.Equals("Library")) 
            { 
             foreach (ICmisObject obj4 in (obj3 as IFolder).GetChildren()) 
             { 
              Console.WriteLine(obj4.Name); 
              if (obj4.Name.Equals("MyFolder")) 
              { 
               IDictionary<string, object> properties2 = new Dictionary<string, object>(); 
               properties2[PropertyIds.ObjectTypeId]= "cmis:folder"; 
               properties2[PropertyIds.Name] = "Test Folder"; 

               IFolder newFolder = (obj4 as IFolder).CreateFolder(properties2); 

              } 
             } 
            } 
           } 
          } 
         } 
        } 
       } 
      } 

, 이것은 내가 '야외'에 대한에있어 의미 예를 들어 다른 하위 폴더로 이동 한 다음 다른 폴더로 이동 한 다음 마지막으로 이동 : /라이브러리,/Groups,/Newsgroups ... 라이브러리에서 "내 폴더"를 열 수 있지만 라이브러리/MyFolder를 열 수있는 더 쉬운 방법은 실제로 모든 레이어를 올바른 폴더로 가져가는 대신에 ...?

는 내가 .. 뭔가를 할 수 session.GetFolderByName("MyFolder") 나는 또한 무작위로 폴더 생성되는 ID가 다를 수 있습니다 다른 포털의 예로서, ID에 의존 할 수 없다, 그래서 난 (GetFolderById 말할 수 없다

..);

어떤 생각인가요?

답변

1

나는 DotCMISClient 정말 익숙하지 해요,하지만 당신은 (클라이언트를 통해 사용할 수 있어야합니다) 전체 서비스를 보면 다음 트릭을 할 것입니다이 개 서비스를 볼 수 있습니다

  1. GetObjectByPath 유형이 CMIS가 어디
  2. Query

쿼리 은 매우 쉽습니다 : 폴더 이름은 "MyFolder에"입니다.