[UCM] Get UCM Folders and Content Items using CIS API

ご存知の通り、この問題は非常に簡単なのですが、解決方法が思い浮かばないし、やりかたをドキュメントから探す必要があるでしょう。たとえドキュメント化されていても、時間がかかってしまいますし、たコードをアプリケーションに貼り付けたいだけなのです。この問題の一つは、カスタムアプリケーションから、フォルダやコンテンツ(文書)をUCMから読みだす、ということです。この場合、UCM CIS APIを使った方法をご紹介したいと思います。
まず必要なのは、フォルダーID(UCMのコンテンツID)です。ここが起点のフォルダになり、子要素を読みだすために使います。さらに必要なものは、現在のICISApplicationインターフェースとアプリケーションコンテキストです。ポートレットを開発している場合、web.xmlの設定でポートレットを初期化する必要があるでしょう。これを実現するコードは以下のようです。
public List getSubFolders(String folderID, ICISApplication m_cis, String username) throws CommandException {
    ISCSContext scsContext = m_cis.getUCPMAPI().getActiveAPI()._createSCSContext();
    scsContext.setUser((username != null ? username : "guest"));
    // this should be always true because we use UCPM API, so make sure that the adapter exist!
    if (repData.getAdapterName() != null) {
        scsContext.setAdapterName(repData.getAdapterName());
     }
    ISCSComponentFolderAPI folderAPI = m_cis.getUCPMAPI().getActiveAPI().getComponentFolderAPI();
    ISCSFolderID csFolderId = m_cis.getUCPMAPI().getActiveAPI()._createActiveFolderID(folderID);
    ISCSFolderDisplayResponse response = folderAPI.listChildren(getISCSContext(), csFolderId);
    return response.getFolders();
}
この関数を使用して、指定したフォルダIDに対応するフォルダの子要素を取得することができます。フォルダ内のドキュメントを取得する場合には、この関数を利用できます。
public List getFoldersItems(String folderID, ICISApplication m_cis, String username) throws CommandException {
    ISCSContext scsContext = m_cis.getUCPMAPI().getActiveAPI()._createSCSContext();
    scsContext.setUser((username != null ? username : "guest"));

    // this should be always true because we use UCPM API, so make sure that the adapter exist!
    if (repData.getAdapterName() != null) {
        scsContext.setAdapterName(repData.getAdapterName());
    }

    ISCSComponentFolderAPI folderAPI = m_cis.getUCPMAPI().getActiveAPI().getComponentFolderAPI();
    ISCSFolderID csFolderId = m_cis.getUCPMAPI().getActiveAPI()._createActiveFolderID(folderID);
    ISCSFolderDisplayResponse response = folderAPI.listChildren(getISCSContext(), csFolderId);

    return response.getItems();
}

0 件のコメント:

コメントを投稿