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);

                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

ルートフォルダーを開くだけです。これは、たとえば「屋外」にいることを意味します。次に、別のサブフォルダーに移動し、次に別のサブフォルダーに移動する必要があり、最終的に/Library、/Groups、/Newsgroups ..など そして、ライブラリで「マイ フォルダ」を開くことができますが、適切なフォルダを取得するすべてのレイヤーを実際に通過する代わりに、/Library/MyFolder を開くためのより簡単な方法はありますか ?

私は何かをすることができます..session.GetFolderByName("MyFolder")

ID にも依存できません。たとえば、他のポータルでは、フォルダーに対してランダムに生成される ID が異なる可能性があるため、GetFolderById(..); とは言えません。

それで、何か考えはありますか?

4

1 に答える 1

1

私は DotCMISClient にあまり詳しくありませんが、合計サービス (クライアントから利用できるはずです) を見ると、うまくいく 2 つのサービスが表示されます。

  1. GetObjectByPath
  2. クエリ

タイプが cmis:folder で名前が「MyFolder」の場合、クエリは非常に簡単です。

于 2013-03-21T09:34:36.320 に答える