3

静的コンテンツ Web サイトを IBM Web Content Manager に移行する必要があります。基本的に、多数の HTML ページがあります。また、HTML ページから参照される Word および PDF ドキュメントも多数あります。

クローラーでコンテンツを抽出し、そのデータを IBM Web Content Manager にインポートするよりも統合する必要があります。

この移行を成功させるためのベスト プラクティスは何ですか?

IBM WCM に一括インポート機能はありますか?

API やサービスを介してページやコンポーネントを作成するプロセスを自動化することはできますか?

Word 文書と PDF を一括インポートし、移行したページから参照できるコンポーネントとして保存する方法。よろしく。

4

1 に答える 1

2

コンテンツをインポートするには、次の 2 つのオプションを試すことができます。

  • IBM Web Content Integrator 簡単に言えば、ポータルが定義するルールに関して、既存のサイトにフィード ソースを作成する必要があります。その後、ポータル サイトで消費者フィードを作成し、コンテンツを WCM に取得する必要があります。

  • WCM API を使用してポータル アプリケーションを作成し、任意のソース (フィード、データベース、ファイルなど) からコンテンツを取得します。

ポータル ページ/コンポーネント (画像、ファイル、html など) を作成するには、Portal/WCM API も使用できます。ただし、コンテンツをインポートする前に、コンテンツとコンポーネントの違いを理解していることを確認し、何を作成するか (コンテンツまたはコンテンツ ソースなどのコンポーネント) を決定してください。また、プログラムによるページの作成に関する情報は少ないですが、可能です。

JSR 286 ポートレットを使用して contnet を表示する場合は、XML インポート ツールを参照してください。このようにして、構成を自動化し、すべてのページの手動構成を回避できます。ページ構成 - 単なる xml ファイルです。いつでもこのファイルを Java で変更し、更新されたファイルを特定のページに適用できます。

アップデート

プログラムでポータル ページを作成する

import com.ibm.portal.ModifiableMetaDataProvider;
import com.ibm.portal.content.*;
import com.ibm.portal.model.ContentModelHome;
import com.ibm.portal.model.ContentModelProvider;
import com.ibm.portal.model.controller.ContentModelControllerHome;
import com.ibm.portal.model.controller.CreationContextBuilderFactory;
import com.ibm.portal.model.controller.exceptions.CannotInstantiateControllerException;
import com.ibm.workplace.wcm.services.addressability.FriendlyURLFactoryImpl;
import com.ibm.wps.pe.pc.std.core.PortletUtils;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.portlet.*;

/**
 * @author : Georgy Gobozov
 * @created : 12.03.13
 */
public class PageUtil {

    private static final String PREF_PARENT_PAGE = "parent.page.unique.name";
    private static final String PREF_UNIQUE_PREFIX = "pages.unique.name.prefix";

    public static boolean createPortalPage(String title, ActionRequest request, ActionResponse response) {

        PortletPreferences prefs = request.getPreferences();

        String parentPageUniqueName =  prefs.getValue(PREF_PARENT_PAGE, "wps.content.root");
        String uniqueNamePrefix = prefs.getValue(PREF_UNIQUE_PREFIX, "study.portal.pages.");

        ContentModelController ctrl = null;
        CreationContextBuilderFactory factory = null;
        ContentPageCreationContext ctx = null;
        ModifiableContentPage newPage = null;
        ContentNode parent = null;
        try {
            ctrl = getController(request, response);
            factory = CreationContextBuilderFactory.getInstance();

            // Use the context to create the private page
            ctx = factory.newContentPageCreationContext(true);
            newPage = (ModifiableContentPage) ctrl.create(ContentPage.class, ctx);
            newPage.setTitle(request.getLocale(), title);
            // set page unique name
            newPage.getModifiableObjectID().setUniqueName(uniqueNamePrefix + title);
            parent = (ContentNode) ctrl.getLocator().findByUniqueName(parentPageUniqueName);
            if (parent != null) {
                ctrl.insert(newPage, parent, null);
                // set friendly name
                ModifiableMetaDataProvider mmdp = (ModifiableMetaDataProvider)ctrl.getModifiableNode(newPage);
                mmdp.getModifiableMetaData().setValue("com.ibm.portal.friendly.name", title);
                // Commit, i. e. persist the changes.
                ctrl.commit();
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (null != ctrl)
                // Dispose the Controller.
                ctrl.dispose();

        }
        return true;
    }


    public static ContentModelController getController(PortletRequest request, PortletResponse response) {
        ContentModel aContentmodel = null;
        ContentModelController ctrl = null;
        ContentModelControllerHome home = null;
        try {
            Context ictx = new InitialContext();
            ContentModelHome homea = (ContentModelHome) ictx.lookup("portal:service/model/ContentModel");
            if (homea != null) {
                ContentModelProvider provider = homea.getContentModelProvider();
                PortletUtils.getInternalRequest(request).getHttpServletRequest();
                //aContentmodel = provider.getContentModel((ServletRequest) request, (ServletResponse) response);
                aContentmodel = provider.getContentModel(PortletUtils.getInternalRequest(request).getHttpServletRequest(), PortletUtils.getInternalResponse(response).getHttpServletResponse());
            }
            home = (ContentModelControllerHome) ictx.lookup(ContentModelControllerHome.JNDI_NAME);
            if (home != null) {
                try {
                    ctrl = home.getContentModelControllerProvider().createContentModelController(aContentmodel);
                } catch (CannotInstantiateControllerException e) {
                    e.printStackTrace();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ctrl;

    }

}

もっと便利なクラスはこちら

于 2014-05-28T21:19:54.117 に答える