BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA
 ドキュメントのダウンロード   サイト マップ   用語集 
検索

B2B Integration ワークフローの作成

 前 次 目次 索引 PDFで表示  

ビジネス メッセージの使い方

以下の節では、ビジネス パートナ間で交換されるビジネス メッセージの内容を B2B Integration プラグインで作成および操作する方法について説明します。

注意: この章で説明する機能は、WebLogic Integration の本リリースから廃止された XOCP ビジネス プロトコルをベースにしています。 RosettaNet ビジネス メッセージの使用に関する詳細については、『B2B Integration RosettaNet の実装』を参照してください。 ebXMLRosettaNet ビジネス メッセージの使用に関する詳細については、『B2B Integration ebXML の実装』を参照してください。 XOCP の代替となるビジネス プロトコルに関する詳細については、『WebLogic Integration リリース ノート』を参照してください。

 


ビジネス メッセージの処理について

ビジネス メッセージは、トレーディング パートナによって会話の中で交換される通信の基本単位です。 ビジネス メッセージの構成要素は以下のとおりです。

B2B Integration プラグインでは、以下の 2 つの方法でビジネス メッセージの内容を作成または抽出できます。

 


ビジネス メッセージのワークフロー変数の定義

実行時に、ビジネス メッセージは送信される前または受信された後に(Java Object 型の)ワークフロー変数に格納されます。 ビジネス メッセージが送信可能になると、ビジネス メッセージを作成するアクションと関連付けられているアプリケーション コードではそのビジネス メッセージを作成し、それをこの変数に格納してワークフロー インスタンスに返します。 ビジネス メッセージが受信されると、Compose Business Message、Extract Business Message Parts、または Manipulate Business Message といったアクションと関連付けられているワークフロー ノードではワークフロー インスタンスからこの変数を取得し、それを利用して受信ビジネス メッセージを処理します。

注意: application integration では、XOCP ビジネス メッセージは XML Document 型のワークフロー変数には格納されません。

ワークフロー変数の使用について で説明されているように、Studio で、ビジネス メッセージを格納する Java Object 変数はそれらのメッセージと関連するアクションを定義する前に定義する必要があります。

各ワークフロー テンプレート定義では、ワークフローで送信または受信されるビジネス メッセージごとに別々の変数を定義するか、すべてのメッセージ交換で利用する 1 つのオブジェクト変数を定義できます。

Studio でビジネス ドキュメントの変数を定義するには、次の手順を行います。

  1. フォルダ ツリーで、適切なワークフロー テンプレート定義の [変数] を右クリックします。 [変数を作成] を選択して、[変数プロパティ] ダイアログ ボックスを表示します。

    図4-1 [変数プロパティ] ダイアログ ボックス


     

  2. この変数のユニークな名前を指定します。

  3. Java Object 変数型を選択します。

  4. [OK] をクリックします。

 


単純なメッセージ操作(非推奨)

B2B Integration プラグインでは、単純なメッセージ操作に使用できる以下の 2 つのアクションが提供されます。

これら 2 つのアクションでは、プログラミングの必要なくビジネス メッセージを操作できます。 以降の節では、これら 2 つのワークフロー アクションの使用方法を説明します。

ビジネス メッセージの作成

Compose Business Message アクションは、開始、タスク、分岐、イベント、完了といった協調的ワークフローのどのノードでも定義できます。 Compose Business Message アクションは、明示的にワークフロー テンプレート定義に追加する必要があります。 実行時に、このアクションは [Compose Business Message] ダイアログ ボックスで変数として指定された 1 つまたは複数の XML ドキュメントと 1 つまたは複数の添付ファイルをビジネス メッセージ エンベロープに追加します。[Compose Business Message] ダイアログ ボックスでは、ビジネス メッセージの送信 アクションで送信可能なメッセージを簡単に作成できます。

ビジネス メッセージ作成の概要については、以下のいずれかを参照してください。

Compose Business Message アクションの定義

Studio でワークフローの Compose Business Message アクションを定義するには、次の手順を行います。

  1. アクションを指定できるダイアログ ボックス([タスクのプロパティ]、[分岐のプロパティ]、[イベントのプロパティ]、[開始のプロパティ] ダイアログ ボックスなど)で、[追加] をクリックして [アクションを追加] ダイアログ ボックスを表示します。

    図4-2 [アクションを追加] ダイアログ ボックス


     

  2. [統合アクション] フォルダをクリックして展開します。

    図4-3 [アクションを追加] ダイアログ ボックスと統合アクション


     

  3. [B2B Integration] フォルダをクリックして展開します。

  4. [Compose Business Message] を選択します。

  5. [OK] をクリックして、[Compose Business Message] ダイアログ ボックスを表示します。

    図4-4 [Compose Business Message] ダイアログ ボックス


     

  6. [Compose Business Message] ダイアログ ボックスの以下のフィールドを設定します。

    表4-1 [Compose Business Message] ダイアログ ボックスのフィールド

    フィールド

    説明

    [出力変数]

    作成するビジネス メッセージを保持する Java object 型のワークフロー変数

    パート番号

    作成するビジネス メッセージの各構成要素の ID。 [要素の割り当て] テーブルの各エントリにはユニークな ID が必須であり、それは正の整数でなければならない。

    ID を割り当てる手順は次のとおり。

      1. [要素の ID 番号] カラムで適切なセルをクリックする。

      2. 要素 ID を入力する。

    [要素の種類]

    メッセージの要素の種類(XML ビジネス ドキュメントまたは添付ファイル)を識別する。

    要素の種類を選択する手順は次のとおり。

      1. [要素] カラムで適切なセルをクリックする。

      2. 表示されるドロップダウン リストから種類を選択する。

    [ソース]

    関連付けられている種類の要素のファイル名が格納されるワークフロー変数を識別する。

    ソース ファイルを選択する手順は次のとおり。

      1. [ソース] カラムで適切なセルをクリックする。

      2. セルの右端に沿って表示される下矢印をクリックする。

      3. 適切なメッセージ要素を保持するファイルの名前が格納された変数名を選択する。

    [テキスト]

    説明テキスト(省略可能)


     

  7. 既に指定されている 2 つの要素の間にメッセージ要素を挿入するには、次のようにします。

    1. 挿入を行う行を右クリックします。

    2. [挿入] を選択します。 クリックした行の上に空白の行が作成されます。

  8. [Compose Business Message] ダイアログ ボックスの [要素の割り当て] テーブルのエントリを削除するには、次のようにします。

    1. 削除するメッセージ要素を指定する行をクリックします。

    2. 右クリックして [削除] を選択します。

  9. [Compose Business Message] ダイアログ ボックスでの指定が終了したら、[OK] をクリックします。

ビジネス メッセージの情報の抽出

Extract Business Message Parts アクションは、開始、タスク、分岐、イベント、完了といった協調的ワークフローのどのノードでも定義できます。 Extract Business Message Parts アクションは、明示的にワークフロー テンプレート定義に追加する必要があります。 実行時に、このアクションは [ビジネス メッセージの要素を抽出] ダイアログ ボックスで変数として指定された XML ドキュメントと添付ファイルをビジネス メッセージ エンベロープから抽出します。[ビジネス メッセージの要素を抽出] ダイアログ ボックスでは、受信されたビジネス メッセージの内容を簡単に取得できます。

ビジネス メッセージ作成の概要については、以下のいずれかを参照してください。

Extract Business Message Parts アクションの定義

Studio でワークフローの Extract Business Message Parts アクションを定義するには、次の手順を行います。

  1. アクションを指定できるダイアログ ボックス([タスクのプロパティ]、[分岐のプロパティ]、[イベントのプロパティ]、[開始のプロパティ] ダイアログ ボックスなど)で、[追加] をクリックして [アクションを追加] ダイアログ ボックスを表示します。

    図4-5 [アクションを追加] ダイアログ ボックス


     

  2. [統合アクション] フォルダをクリックして展開します。

    図4-6 [アクションを追加] ダイアログ ボックスと統合アクション


     

  3. [B2B Integration] フォルダをクリックして展開します。

  4. [Extract Business Message Parts] を選択します。

  5. [OK] をクリックして、[ビジネス メッセージの要素を抽出] ダイアログ ボックスを表示します。

    図4-7 [ビジネス メッセージの要素を抽出] ダイアログ ボックス


     

  6. [ビジネス メッセージの要素を抽出] ダイアログ ボックスの以下のフィールドを設定します。

    表4-2 [ビジネス メッセージの要素を抽出] ダイアログ ボックスのフィールド

    フィールド

    説明

    [入力変数]

    要素を抽出するビジネス メッセージを保持する Java object 型のワークフロー変数

    パート番号

    ビジネス メッセージから抽出する各構成要素の ID。 以下の点に注意。

    ID を割り当てる手順は次のとおり。

      1. [要素の ID 番号] カラムで適切なセルをクリックする。

      2. 要素 ID を入力する。

    [要素の種類]

    抽出するメッセージの要素の種類(XML ビジネス ドキュメントまたは添付ファイル)を識別する。

    要素の種類を選択する手順は次のとおり。

      1. [要素] カラムで適切なセルをクリックする。

      2. 表示されるドロップダウン リストから種類を選択する。

    [送り先]

    関連付けられている種類の要素のファイル名が格納されるワークフロー変数を識別する。

    送り先ファイルを選択する手順は次のとおり。

      1. [送り先] カラムで適切なセルをクリックする。

      2. セルの右端に沿って表示される下矢印をクリックする。

      3. 抽出されたメッセージ要素を保持するファイルの名前が格納される変数名を選択する。

    [テキスト]

    説明テキスト(省略可能)


     

  7. 既に指定されている 2 つの要素の間にメッセージ要素を挿入するには、次のようにします。

    1. 挿入を行う行を右クリックします。

    2. [挿入] を選択します。 クリックした行の上に空白の行が作成されます。

  8. [Extract Business Message Parts] ダイアログ ボックスの [要素の割り当て] テーブルのエントリを削除するには、次のようにします。

    1. 削除するメッセージ要素の ID セルをクリックします。

    2. 右クリックして [削除] を選択します。

  9. [OK] をクリックします。

 


複雑なメッセージ操作(非推奨)

以下のタスクを行ってからでないと、MessageManipulator インタフェースを実装する Java アプリケーションでビジネス メッセージの内容を作成または抽出できません。

以降の節では、Manipulate Business Message アクションの定義方法および Java アプリケーションの記述方法について説明します。

Manipulate Business Message アクションの定義

実行時に、Manipulate Business Message アクションはビジネス メッセージを操作するために呼び出されます。 ワークフローからビジネス メッセージ(要求など)が送信される場合、Manipulate Business Message アクションは関連付けられているアプリケーション コードを実行してビジネス メッセージを作成し、ビジネス メッセージの送信 アクションで送信される出力変数にそのメッセージを保存します。 ワークフローでビジネス メッセージ(応答など)が受信される場合、Manipulate Business Message アクションは入力変数内のビジネス メッセージを取得し、それを処理するために関連付けられているアプリケーション コードに渡します。

Manipulate Business Message アクションは、タスク、分岐、イベント、開始といったノードに関連付けることができます。 Manipulate Business Message アクションは、明示的にワークフロー テンプレート定義に追加する必要があります。

Manipulate Business Message アクションの追加

Studio でワークフローの Manipulate Business Message アクションを定義するには、次の手順を行います。

  1. アクションを指定できるダイアログ ボックス([タスクのプロパティ]、[分岐のプロパティ]、[イベントのプロパティ]、[開始のプロパティ] ダイアログ ボックスなど)で、[追加] をクリックして [アクションを追加] ダイアログ ボックスを表示します。

    図4-8 [アクションを追加] ダイアログ ボックス


     

  2. [統合アクション] フォルダをクリックして展開します。

    図4-9 [アクションを追加] ダイアログ ボックスと統合アクション


     

  3. [B2B Integration] フォルダをクリックして展開します。

  4. [Manipulate Business Message] を選択します。

  5. [OK] をクリックして、[ビジネス メッセージの操作] ダイアログ ボックスを表示します。

    図4-10 [ビジネス メッセージの操作] ダイアログ ボックス


     

  6. [ビジネス メッセージの操作] ダイアログ ボックスの以下のフィールドで値を選択します。

    表4-3 [ビジネス メッセージの操作] ダイアログ ボックスのフィールド

    フィールド

    説明

    [マニピュレータ クラス名]

    com.bea.b2b.wlpi.MessageManipulator インタフェースを実装する Java クラスの名前(必須)。詳細については、ビジネス メッセージを操作するアプリケーションの記述を参照。

    [入力変数]

    Receive Business Message アクションで受信されたメッセージなど、既存のビジネス メッセージが格納されたワークフロー変数の名前。

    この変数の内容は in パラメータとして、com.bea.b2b.wlpi.MessageManipulator インタフェースを実装する指定された Java クラスの manipulate 処理に渡される。 変数名が指定されていない場合、in パラメータの値は null

    指定される変数は、Java Object 型の既存のワークフロー変数と対応していなければならない。 詳細については、ワークフロー変数の使用について を参照してください。

    [出力変数]

    com.bea.b2b.wlpi.MessageManipulator インタフェースを実装する指定された Java クラスの manipulate 処理で返されたビジネス メッセージが格納されるワークフロー変数の名前。

    指定される変数は、Java Object 型の既存のワークフロー変数と対応していなければならない。 詳細については、ワークフロー変数の使用について を参照してください。 変数名が指定されていない場合、manipulate 処理の戻り値は無視される。

    [メモ]

    説明テキスト(省略可能)


     

    入力フィールドまたは出力フィールドの変数を指定するときには、以下のガイドラインに従ってください。

  7. [OK] をクリックして変更を保存します。

Manipulate Business Message アクションの例

たとえば、[ビジネス メッセージの操作] ダイアログ ボックスで以下の設定を指定するとします。

表4-4 [ビジネス メッセージの操作] ダイアログ ボックスのサンプル設定

フィールド

説明

[マニピュレータ クラス名]

examples.wlpiverifier.ProcessRequest

[入力変数]

requestMsg

[出力変数]

replyMsg


 

実行時に、WebLogic Integration プロセス エンジンが指定された設定でアクションを実行すると、以下のイベントが発生します。

  1. examples.wlpiverifier.ProcessRequest クラスのオブジェクトがリフレクションとデフォルト コンストラクタを使用して作成されます。

  2. in パラメータ(requestMsg)の値が取り出されます。

  3. manipulate 処理が呼び出されます。

  4. manipulate 処理の戻り値がワークフロー出力変数(replyMsg)に格納されます。

ビジネス メッセージを操作するアプリケーションの記述

トレーディング パートナ間で交換されるビジネス メッセージをワークフロー変数と Java コードを使用して操作する Java アプリケーションを記述します。 Manipulate Business Message アクションでは、このアプリケーションを呼び出して、送信するビジネス メッセージを作成するか、受信したビジネス メッセージを処理します。 この Java アプリケーションは、com.bea.b2b.wlpi.MessageManipulator インタフェースを実装します。 この種のアプリケーションは、一般的にメッセージ マニピュレータと呼ばれます。

Manipulate Business Message アクションのメッセージ マニピュレータ クラスおよび入力と出力の変数を定義する方法については、Manipulate Business Message アクションの定義を参照してください。 com.bea.b2b.wlpi.MessageManipulator インタフェースの詳細については、『BEA WebLogic Integration Javadoc』を参照してください。

メッセージ マニピュレータの機能

メッセージ マニピュレータでは、ビジネス メッセージを処理するための以下の処理を実装できます。

MessageManipulator インタフェース

会話のロール間で交換されるビジネス メッセージを処理するために、ワークフロー アプリケーションでは com.bea.b2b.wlpi.MessageManipulator インタフェースを実装する Java クラスを使用します。 このインタフェースには、次のシグネチャを持つ manipulate という 1 つの処理があります。

XOCPMessage manipulate(WorkflowInstance instance, XOCPMessage in) throws WLPIException;

manipulate 処理を呼び出すときに、ワークフローでは以下のパラメータを指定します。

表4-5 manipulate 処理のパラメータ

パラメータ

説明

instance

変数の取得または設定に使用できる現在のワークフロー インスタンス。 詳細については、Manipulate Business Message アクションの定義 を参照してください。

in

関連付けられている Manipulate Business Message アクションで入力変数として指定されたワークフロー変数に格納されている XOCP メッセージ。 Manipulate Business Message アクションで入力変数が指定されていないか、変数が空の場合は、null が渡される。


 

manipulate 処理では、メッセージ マニピュレータで生成された XOCP メッセージが返されます。 実行時に、この XOCP メッセージは関連付けられている Manipulate Business Message アクションで指定された出力変数に格納されます。 この出力変数が指定されていない場合、戻り値は無視されます。

パブリック デフォルト コンストラクタ

メッセージ マニピュレータ インタフェースを実装するクラスでは、パブリック デフォルト コンストラクタ(引数のないコンストラクタ)が必要です。 プロセス エンジンでは、Java リフレクションを使用してそのクラスのオブジェクトを作成し、したがってデフォルト コンストラクタを呼び出します。

MessageManipulator インタフェースを実装してビジネス メッセージを作成するアプリケーションの記述手順

この節で示す ChannelMasterMessageFactoryII クラスは、ビジネス メッセージを作成するメッセージ マニピュレータの例です。 このマニピュレータは、ワークフローで発生する Manipulate Business Message アクションから呼び出されます。 このマニピュレータは、送信するビジネス メッセージとしてワークフローに渡される応答メッセージ(xocpmsg 変数)を返します。

ステップ 1 : 必要なパッケージをインポートする

次のリストは、XOCP メッセージを作成するための XOCP メッセージング オブジェクトなど、ChannelMasterMessageFactoryII クラスがインポートするパッケージを示しています。

コード リスト 4-1 必要なパッケージのインポート

package wlcsamples.channelmaster;

import java.io.*;

import org.apache.xerces.dom.*;
import org.w3c.dom.*;

import com.bea.eci.logging.*;
import com.bea.b2b.wlpi.MessageManipulator;
import com.bea.b2b.wlpi.WorkflowInstance;
import com.bea.b2b.wlpi.WLPIException;

import com.bea.b2b.protocol.conversation.ConversationType;
import com.bea.b2b.enabler.*;
import com.bea.b2b.enabler.xocp.*;
import com.bea.b2b.protocol.messaging.*;
import com.bea.b2b.protocol.xocp.conversation.local.*;
import com.bea.b2b.protocol.xocp.messaging.*;

ステップ 2 : MessageManipulator インタフェースを実装する

次のリストは、MessageManipulator インタフェースを実装する ChannelMasterMessageFactoryII クラス宣言を示しています。

コード リスト 4-2 MessageManipulator インタフェースの実装

public class ChannelMasterMessageFactoryII implements MessageManipulator

ステップ 3 : デフォルト コンストラクタを実装する

次のリストは、ChannelMasterMessageFactoryII クラスで使用するデフォルト コンストラクタを示しています。

コード リスト 4-3 デフォルト コンストラクタの実装

public ChannelMasterMessageFactoryII(){}; 

ステップ 4 : manipulate メソッドの呼び出しを実装する

次のコードは、manipulate メソッドを呼び出します。このメソッドは、受信ビジネス メッセージだけでなく現在のワークフロー インスタンス オブジェクトを取り出します。

コード リスト 4-4 manipulate メソッドの呼び出し

public XOCPMessage manipulate(WorkflowInstance instance,
XOCPMessage in)
throws WLPIException{

ステップ 5 : ワークフロー インスタンスから入力変数を取得する

次のコードは、getVariable メソッドを使用して、ビジネス メッセージの作成に使用する現在のワークフロー インスタンスから値を取得します。

コード リスト 4-5 入力変数の取得

String content = (String) instance.getVariable(MESSAGE_CONTENT_VAR); 

ステップ 6 : ビジネス メッセージの作成

次のコードは、以下の処理を実行します。

  1. XML ドキュメントの作成に使用する XML データを表す DOM オブジェクトを作成します。

  2. temp-xml-transporter.dtd という DTD を使用して XML ドキュメント オブジェクトを作成します。

  3. XML ドキュメントの各 XML 要素を作成します。

  4. XML ドキュメントを追加して XOCP メッセージを作成します。

コード リスト 4-6 XML ドキュメントの作成

DOMImplementationImpl domi = new DOMImplementationImpl(); 
DocumentType dType =
domi.createDocumentType( "temp-xml-transporter",
"temp-xml-transporter", "temp-xml-transporter.dtd" );

org.w3c.dom.Document rq = new DocumentImpl(dType);
Element root = rq.createElement("temp-xml-transporter");
rq.appendChild(root);

Element elementContent = rq.createElement("content");
Text t1 = rq.createTextNode(content);
elementContent.appendChild(t1);
root.appendChild(elementContent);

XOCPMessage xocpmsg = new XOCPMessage("");
xocpmsg.addPayloadPart(new BusinessDocument(rq));

ステップ 7 : 要求メッセージを返す

次のコードは、変数 xocpmsgXOCPMessage 型)の要求メッセージを返します。 戻り値は、ビジネス メッセージを送信するためにワークフローの出力変数(Java Object 型)に割り当てられます。

コード リスト 4-7 要求メッセージを返す

return xocpmsg;

MessageManipulator インタフェースを実装して受信したビジネス メッセージの内容を処理するアプリケーションの記述手順

この節で説明する ChannelMasterMessageExtractorII クラスは、ビジネス メッセージを受信して処理するメッセージ マニピュレータの例です。 このマニピュレータは、(ビジネス メッセージで開始するように定義された)開始イベントと関連付けられている Manipulate Business Message アクションから呼び出されます。その開始イベントは、最初のビジネス メッセージが会話開始者ワークフローから受信されたときにトリガされます。 このマニピュレータは、送信するビジネス メッセージとしてワークフローに渡される応答メッセージ(replyMsg 変数)を返します。

ステップ 1 : 必要なパッケージをインポートする

次のコードは、XOCP メッセージを作成するための XOCP メッセージング オブジェクトなど、ChannelMasterMessageExtractorII クラスがインポートするパッケージを示しています。

コード リスト 4-8 必要なパッケージのインポート

package wlcsamples.channelmaster;

import java.io.*;

import org.apache.xerces.dom.*;
import org.w3c.dom.*;

import com.bea.eci.logging.*;
import com.bea.b2b.wlpi.MessageManipulator;
import com.bea.b2b.wlpi.WorkflowInstance;
import com.bea.b2b.wlpi.WLPIException;

import com.bea.b2b.protocol.conversation.ConversationType;
import com.bea.b2b.enabler.*;
import com.bea.b2b.enabler.xocp.*;
import com.bea.b2b.protocol.messaging.*;
import com.bea.b2b.protocol.xocp.conversation.local.*;
import com.bea.b2b.protocol.xocp.messaging.*;

ステップ 2 : MessageManipulator インタフェースを実装する

次のリストは、MessageManipulator インタフェースを実装する ChannelMasterMessageExtractorII クラス宣言を示しています。

コード リスト 4-9 MessageManipulator インタフェースの実装

public class ChannelMasterMessageExtractorII implements MessageManipulator

ステップ 3 : デフォルト コンストラクタを実装する

次のリストは、ChannelMasterMessageExtractorII クラスで使用するデフォルト コンストラクタを示しています。

コード リスト 4-10 デフォルト コンストラクタの実装

public ChannelMasterMessageExtractorII(){};

ステップ 4 : manipulate メソッドを呼び出す

次のコードは、manipulate メソッドを呼び出します。このメソッドは、受信ビジネス メッセージ(要求)だけでなく現在のワークフロー インスタンス オブジェクトを取り出します。

コード リスト 4-11 manipulate メソッドの呼び出し

public XOCPMessage manipulate(WorkflowInstance instance,
XOCPMessage in)
throws WLPIException{

ステップ 5 : 要求メッセージを処理する

次のコードは、以下の処理を実行します。

  1. ビジネス メッセージからペイロード部分を抽出します。

  2. 各ペイロード部分について、DOM ドキュメントを抽出します。

  3. DOM オブジェクトの DOM API を使用して、XML コンテンツを抽出します。

コード リスト 4-12 要求メッセージの処理

PayloadPart[] payload = in.getPayloadParts();
Document rq = null;

if (payload != null && payload.length > 0){ //
BusinessDocument bd = (BusinessDocument)payload[0];
rq = bd.getDocument();
if (rq == null)
throw new WLPIException("Did not get a reply document");
}
Element root = rq.getDocumentElement();
debug(root.toString());

String name = root.getNodeName();
if (!name.equals("temp-xml-transporter")) {
throw new WLPIException(
debug("Did not get temp-xml-transporter, found " + name));
}
if (!root.hasChildNodes()){
throw new WLPIException(
debug("No child nodes in temp-xml-transporter"));
}
Node childContent = root.getFirstChild();
if (childContent == null){
throw new WLPIException(
debug("No child nodes inside temp-xml-transporter"));
}
String content = ((Text)childContent.getFirstChild()).getData(); debug("Content is " + content);

 

ページの先頭 前 次