連携ターゲットの使用可能化

Click-to-Action ポートレットとワイヤード・ポートレットの両方について連携ターゲットを 使用可能にする際のアクティビティーは、以下のとおりです。
  1. 連携ターゲットを使用可能にする
  2. アクションを実装する
  3. 変換を実行する

連携ターゲットを使用可能にする手順は、次のとおりです。

  1. 次の手順で連携ターゲットを使用可能にする。
    1. 「プロジェクト・エクスプローラー」ビューで、ポートレットまたは「ポートレット・デプロイメント記述子」を 選択する。ポートレット・プロジェクト・フォルダーの下の「ポートレット・デプロイメント記述子」ノードを展開すると、ポートレットが表示されます。
    2. 目的のポートレットを右クリックし、ポップアップ・メニューから「連携」 > 「ターゲットを使用可能にする」を選択する。「連携ターゲットを使用可能にする」ダイアログが 表示されます。 もう 1 つの方法として、JSP ファイルを開き、このファイルにフォーカスがあることを確認して、 「ページ」 > 「連携」 > 「ターゲットを使用可能にする」 メニュー・オプションを選択します。
      「連携ターゲットを使用可能にする」ダイアログ
    3. 次のフィールドに値を入力する。
      データ型 (必須)
      ソース・ポートレットによって転送されるデータのデータ型名を指定します。 または、公開したいデータ型がすでに宣言済みの場合は、「ブラウズ」ボタンをクリックして「データ型の選択」ダイアログを開き、 公開したい WSDL データ型を選択します。 WSDL ファイル内のデータ型と名前空間が、各フィールドに示されます。指定した値が、WSDL ファイルの <types> エレメントでデータ型を宣言するために使用されます。
      名前空間
      この型の名前空間を指定します。たとえば「http:/www.yourco.com/c2a」です。 既存の WSDL ファイルが下に指定されている場合、このフィールドは使用不可になります。指定された値は WSDL ファイルに保管され、「データ型」名と結合して使用され、 連携ランタイム環境に対して出力プロパティーのデータ型を一意的に識別します。
      [ターゲット・アクション] 名 ([Target action] Name) (必須)
      ポートレット・アクション名を指定します。このターゲット・アクション名は、 プロパティー・ブローカーによって呼び出しターゲットとして使用されます。プロパティー・ブローカー は、ターゲット・ポートレットの入力プロパティーが、以前に獲得した出力プロパティーに一致することを 確認すると、ターゲット・ポートレットでターゲット・アクションを呼び出して、入力プロパティー 値をターゲット・ポートレットに対して使用可能にします。

      コマンド制御に関連付けられている任意の Faces アクション、または Struts 構成ファイルに定義されている任意の Struts アクションが使用可能になっている場合は、そのアクションを「アクションの選択」ダイアログから選択できます。 このダイアログを開くには、「ブラウズ」ボタンをクリックします。 指定した値は、WSDL ファイルに <portlet:action> エレメントの名前属性として保管されます。

      名前パラメーター (Name parameter) (JSR 168 ポートレットの場合のみオプション。)
      ポートレット・アクション名パラメーターを指定します。連携ターゲットが JSR 168 API ポートレットである場合、 プロパティー・ブローカーは、ターゲット・ポートレットの呼び出し時に、アクション要求に、この特定のパラメーターを設定します。 このようにして、プロパティー・ブローカーは、呼び出しが発生したターゲット・ポートレット と通信し、入力プロパティーが使用可能になります。 よって、ターゲット・ポートレット制御ロジックでは、この名前の要求パラメーターが 使用可能で、値が「パラメーター」フィールドの値と一致する場合は、 プロパティー・ブローカーによる呼び出しがあったことを示します。

      JSR 168 Struts ポートレットの場合は、 アクション名パラメーターを spf_strutsAction として 指定する必要があります。

      [パラメーター] パラメーター ([Parameter] Parameter) (必須)
      値が入力プロパティーとなるパラメーターの名前を指定します。 プロパティー・ブローカーは、このパラメーターをターゲット・ポートレットに対して 使用可能にします。この値は、プロパティー・ブローカーが 入力プロパティーの設定方法を正確に判別できるように、パラメーターのロケーションを指定する「バインド先 (Bound to)」フィールドの値と結合して使用されます。

      指定した値は、WSDL ファイルに <portlet:param> エレメントの名前属性として保管されます。

      キャプション (Caption) (オプション)
      入力プロパティーが含まれているパラメーターのキャプションを指定します。 このキャプションは、ワイヤリング・ツールが特定の入力プロパティーを識別するために使用します。
      注: このフィールドは、実際のストリング値とは対照的に、以下に示すように、リソース・バンドルのキーを取得します。
      バインド先 (Bound to)
      プロパティー・ブローカーが入力プロパティーをプットして、ターゲット・ポートレットに対して 使用可能にする場所を指定します。この値は、プロパティー・ブローカーが 入力プロパティーの設定方法を正確に判別できるように、 パラメーターの名前を指定する「パラメーター」フィールドの値と結合して使用されます。 現在、この属性は、次の値の 1 つだけを指定できます。
      • 要求パラメーター: これは、値が PortletRequest オブジェクト内のパラメーターとしてバインドされることを指定します。 これは、boundTo 属性が省略される場合のデフォルト値です。 出力パラメーターの場合、通常、デフォルトとして別の値が指定されなければならないことに注意してください。WebSphere® Portal による PortletRequest 実装では、アクションの処理中にパラメーターを設定できません。
      • 要求属性: これは、値が PortletRequest オブジェクト内の属性としてバインドされることを指定します。
      • セッション: これは、値が PortletSession オブジェクトにバインドされることを指定します。
      ラベル
      ポートレットのユーザー・インターフェースで表示するのに適切なアクションに関する短ストリングを指定します。 WebSphere Portal Portlet ワイヤリング・ツールと Click-to-Action ランタイム環境は、両方とも、これを使用して、起動するターゲット・アクションを識別します。 この値がブランクのままである場合や、ここで指定したキー値に対応する有効なエントリーがリソース・バンドルにない場合、 ワイヤリング・ツールおよび Click-to-Action ランタイム環境は、デフォルトで、上で指定したアクションの「名前」を代わりに使用します。

      翻訳済みキャプションの場合は、 リソース・バンドルのキーの名前を指定します。 このダイアログの「リソース・バンドル」フィールドで指定されているリソース・バンドルに、 翻訳済みキャプションを key=translated caption 形式で指定します。指定した値は、WSDL ファイルに <portlet:action> エレメントのキャプション属性として保管されます。

      ワイヤリング・ツールの例:

      Click-to-Action の例:
      ラベルが表示されている Click-to-Action ポートレット

      説明
      アクションのテキスト記述を指定します。値は、WSDL ファイルに記載されています。

      翻訳済みの説明の場合は、リソース・バンドルのキーの名前を指定します。 このダイアログの「リソース・バンドル」フィールドで指定されているリソース・バンドルに、 翻訳済み説明を key=translated description 形式で指定します。 指定した値は、WSDL ファイルに <portlet:action> エレメントの説明属性として保管されます。

      リソース・バンドル
      アクションとプロパティーのラベルと説明に対応する翻訳済みのテキストを含む、NLS リソース・ファイルのベース名を指定します。

      指定したベース名は、ポートレット・デプロイメント記述子の c2a-nls-file 構成パラメーターによって定義され、空のリソース・バンドルは、「Java リソース」ノードの下に生成されます。 たとえば、nls.shippingc2a と入力した場合には、JavaSource ノード下の言語固有リソース・バンドル nls¥shippingc2a<_lang>.properties を編集して、 key=translated text 形式で翻訳済みキャプションおよび説明を指定します。

      ターゲット・ポートレット (必須)
      連携ターゲットとして使用可能にするコンクリート・ポートレットを指定します。
    4. 「OK」をクリックする。Click-to-Action が使用可能になっているポートレットが、「プロジェクト・エクスプローラー」ビューにターゲット・ポートレット・アイコン (「Click-to-Action ターゲット・ポートレット」アイコン) とともに表示されます。
  2. ターゲット・ポートレット・クラスのコードが必ず次の要件を満たしていることを確認する。
    • アクションは、ポートレット・アクション、Faces アクション、 または Struts アクションのいずれかとして実装する必要があります。ポートレット・アクションの場合は、使用すべきではない PortletAction クラスではなく、単純なアクション Strings を使用する必要があります。
    • ポートレット・アクションは単一のパラメーターを受け入れる必要があります。パラメーターは、アクション宣言または登録での指定に応じて、 要求パラメーター、要求属性、セッション属性、 または action 属性 (使用すべきではない) として表示されることがあります。

    次の例は、サンプル素材集からの「連携ポートレット」アプリケーション・サンプル内の OrderDetailPortlet.java の actionPerformed() メソッドを示します。 このポートレットは、その actionPerformed() メソッド内の ORDER_ID パラメーターを受け入れます。 このパラメーターは、ポートレットの WSDL ファイル (この例では OrderDetailC2A.wsdl) のバインディング・セクション内の入力パラメーターに対応します。

    ...
    
       private static final String PREFIX = "";
       public static final String ORDER_ID = PREFIX + "orderId";
       public static final String TRACKING_ID = PREFIX + "trackingId";
    
    ...
        
        public void actionPerformed (ActionEvent event)
        {
    //        DefaultPortletAction action = (DefaultPortletAction) event.getAction();
       String actionName = event.getActionString();
    
            PortletRequest request = event.getRequest();
    
            //An action causes the state to be modified
            ShippingUtils.setLastModified(request);
    
           if( getPortletLog().isDebugEnabled() ) {
               getPortletLog().debug("OrderDetailActionListener - Action called");
           }
           
            if (actionName.equals(ORDER_DETAILS)) {
                request.getPortletSession().setAttribute(ACTION_NAME, ORDER_DETAILS);
                request.getPortletSession().setAttribute(ORDER_ID, request.getParameter(ORDER_ID));
    
           //We do this as tracking id is an out param in the C2A WSDL file
           //We write the tracking id in the request so it can be published by
           //the broker in the same event cycle
                String orderId = (String) request.getPortletSession().getAttribute(ORDER_ID);
           OrderDetail od = ShippingDB.getOrderDetail(request.getParameter(ORDER_ID));
                request.getPortletSession().setAttribute(ORDER_DETAIL, od);
           request.setAttribute(TRACKING_ID, od.getTrackingId());
    
            }  else if (actionName.equals(ORDER_ID_ENTRY)) {
                request.getPortletSession().setAttribute(ACTION_NAME, ORDER_ID_ENTRY);
       }
        }
    ...
  3. リソース・バンドル・ファイルのラベルおよび説明に対応する翻訳済みテキストを指定する。リソース・バンドルのベース名は、「リソース・バンドル」フィールドに指定され、 ポートレット・デプロイメント記述子の c2a-nls-file 構成パラメーターによって保管されます。JavaSource ノードの下の 言語固有のリソース・バンドルを編集します。 翻訳済みキャプションおよび説明を指定するには、key=translated text 形式で「ラベル」および「説明」として指定されている key を使用します。

連携ターゲットを使用可能にする」アクションは、次のタスクを実行します。

  1. Modifies web.xml to add a servlet class entry to refer to the property broker classes [IBM portlet API only]:
    <servlet-class>com.ibm.wps.pb.wrapper.PortletWrapper</servlet-class>
    <init-param>
       <param-name>c2a-application-portlet-class</param-name>
       <param-value>servlet-class</param-value>
    </init-param>
  2. portlet.xml を変更します:
    • WSDL ファイルから入力プロパティーのブローカーを受け取る各コンクリート・ポートレットに構成パラメーターを追加し、 各国語リソース・ファイルのベース名を指定します。
      <config-param>
              <param-name>c2a-action-descriptor</param-name>
              <param-value>WSDL file</param-value>
      </config-param>
      <config-param>
              <param-name>c2a-nls-file</param-name>
              <param-value>resource bundle name</param-value>
      </config-param>
    • 各 Faces ポートレットのための構成パラメーターを追加して、ターゲット・アクション名とそのパラメーター名を指定します。
  3. プロパティー・ブローカーを使用するために、追加ライブラリー pbportlet.jar をポートレット・プロジェクト内の /WEB-INF/lib にインポートします。[IBM ポートレット API のみ]
  4. 次のセクションを含む WSDL ファイルを作成します。
    <definitions>
    ルートとして振る舞います。
    <types>
    データ型は、XML スキーマ・データ型 (XSD) を使用して宣言されます。
    <message>
    出力メッセージ。
    <portType>
    操作の要約コレクションを定義します。<output>.
    <binding>
    セクションをポートレット・アクション呼び出しのための連携バインディング拡張として識別するために、常に <portlet:binding> に拡張されます。
  5. 「連携ターゲットを使用可能にする」ダイアログの「ラベル」フィールドで指定された key 値 (key=translated string テキスト形式から) を含むリソース・バンドル・ファイルを生成します。
関連概念
連携ポートレットの開発
関連タスク
既存のポートレットを連携可能にする
連携ソースの使用可能化
Faces アクションを使用しない連携ターゲットの使用可能化
Click-to-Action encodeProperty の挿入
Click-to-Action encodeProperties の挿入
Click-to-Action encodeProperty の編集
Click-to-Action encodeProperties の編集
関連資料
Web サービス記述言語 (WSDL) 1.1
WebSphere Portal Information Center
XML スキーマ・パート 2: データ型

(C) Copyright IBM Corporation 2002, 2005. All Rights Reserved.