LiveCycle ES2.5 を使用した、動的 PDF フォームドロップダウンリストへのバックエンドデータソースの事前入力
LiveCycle ES2.5 を使用した、動的 PDF フォームドロップダウンリストへのバックエンドデータソースの事前入力

前提条件となる知識

LiveCycle Designer ES2 と、ご自身が選択したデータベースに関する知識(このチュートリアルでは MySQL を使用します)。

その他の必要な製品

ユーザーレベル

中級

電子フォームの主な利点の 1 つは、動的であるということです。データを一式揃えてフォームを作成し、いつまでもそのままにしておく必要はありません。バックエンドデータソースに接続することで、電子フォームはいつでも動的に更新できます。この概念の一般的な用途は、動的 PDF でドロップダウンリストを使用して、データベースのデータを事前入力することです。

このプロセスを理解するために、MySQL データベースに単純なテーブルを作成します。次に、データベーステーブルに 3 つの行を追加し、Designer で単純な PDF フォームを作成します。このフォームには、このデータソースによって自動的に事前入力されるドロップダウンリストが含まれます。

このチュートリアルでは、MySQL データベースをバックエンドデータソースとして使用して説明しますが、データソースをフォームにバインドする一般的な原則は、LiveCycle に準拠している限り、どのバックエンドデータベースを選択しても同様です。また、このチュートリアルでは、ユーザーは MySQL のテーブル作成および編集方法に精通していると想定し、これらのトピックについて詳しくは説明しません。このチュートリアルの主な目的は、データソースをドロップダウンリストフォームオブジェクトにバインドする方法を説明することです。

(MySQL)データベースでのテーブル作成

最初の手順は、データベース内にテーブルを作成することです。次のテーブルは、最終的にドロップダウンリストオブジェクトに表示される値を格納します。

use adobe;

drop table testUsers;
delimiter $$
CREATE TABLE `testUsers` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(45) DEFAULT NULL,
  `complete` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=106 DEFAULT CHARSET=utf8$$


insert testUsers values (100, 'Jim Jones', 0);
insert testUsers values (200, 'Sally', 0);
insert testUsers values (300, 'Fred Fennel', 0);

select * from testUsers

LiveCycle Workbench を使用して XSD スキーマを作成する

次の手順は、XSD スキーマドキュメントを作成することです。これをおこなう方法は 2 つあります。  どちらのオプションでも、最初に Workbench の LiveCycle プロジェクト階層に「スキーマ」フォルダーを作成します。フォルダーを作成したら、次のいずれかの操作を実行してスキーマを作成します。

  • オプション 1:新しく作成された「スキーマ」フォルダーを右クリックし、「新規 XML スキーマファイルを作成」を選択します。  Workbench に関連付けられたデフォルトのテキストエディターが開き、XML スキーマ用の適切な doctype 宣言とベーススキーマタグ構造が新しいファイル(テキストファイル)に作成されます。その後、エディターを使用して残りのスキーマコードを書き込み、スキーマドキュメントを保存します(必ず「.xsd」ファイル拡張子を使用してください)。
  • オプション 2:Notepad++ などのサードパーティのエディターを使用して、スキーマドキュメントを作成します。Notepad++ のようなエディターを使用する利点は、エディターでテキストドキュメントの上部に XML doctype 宣言を記述すると、色が使用されてコーディングが容易になることです。ファイルを作成したら、それに応じてスキーマに名前を付け、スキーマを「.xsd」ファイル拡張子で保存します。この時点で、XSD ファイルを(編集後に保存した任意の場所から)ドラッグし、ドキュメントを「スキーマ」フォルダーにドラッグ&ドロップする必要があります。

どちらのイベントでも、以下のスキーマに示すように、シンプルなスキーマドキュメントを作成する必要があります。 

図のスキーマ内には firstName 項目と lastName 項目がありますが、これらはドロップダウンリストの入力には必須ではありません。このチュートリアルで重要なスキーマコードの部分は、testerList 要素です。 

また、この項目は、「Tester」サブ要素のシーケンスを持つ complexType であり、この「Tester」型も同様に complexType です。この値には、最終的にドロップダウン要素に表示されるオブジェクトの「id」と「name」が含まれる一連の値が含まれます。

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="FormSchema">
    <xs:complexType>
	<xs:sequence>
		<xs:element name="firstName" type="string" />
		<xs:element name="lastName" type="string" />
		<xs:element name="selectedTester" type="string"/>
		<xs:element name="testerList">
			<xs:complexType>
				<xs:sequence>
					<xs:element name="Tester" maxOccurs="unbounded">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="id" />
								<xs:element name="name" />
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:complexType>
		</xs:element>
	</xs:sequence>
    </xs:complexType>  
  </xs:element> 
</xs:schema>

スキーマにバインドするフォームを新規作成する

簡潔にするために、このチュートリアルでは、ユーザーが Workbench から Designer を使用して、または Designer で直接新しいフォームを作成できることを前提としています。プロセスのこの時点で、新しいフォームを作成して(またはバックエンドデータをバインドする既存のフォームを開く)、編集するために Designer でフォームを開きます。

XSD スキーマデータ接続をフォームにバインドする

目的のフォームを開いたら、「データ表示」タブをクリックします。デフォルトでは、このタブは Designer IDE の左側にあり、「階層」タブから 2 つ目のところにあります。

「データ表示」タブの空白を右クリックし、「新規データ接続」をクリックします。 

ポップアップ表示されるウィンドウ(図 1 を参照)で、新しいスキーマに適切な名前を付け(このオブジェクトの名前は手元のタスクに対して任意です)、「XML スキーマ」ラジオボタンを選択し、「次へ」ボタンを押します。

次に、スキーマドキュメントの場所を指定します。このチュートリアルで手順を直接実行する場合、この場所は Workbench 階層の「スキーマ」フォルダーになります(図 2 を参照)。

また、Workbench の Designer を使用して新しいフォームを作成する場合は、フォームデータモデルを指定するオプションが表示されます。このオプションを使用すると、スキーマを指定するだけで済みます(図 3 を参照)。

ウィザードの残りの表示はデフォルトのままにします。

ドロップダウンリストオブジェクトをフォームにドラッグする

ドロップダウンリストオブジェクトをオブジェクトライブラリパレットからフォームの本文にドラッグ&ドロップして、ドロップダウンリストを作成します(図 4 を参照)。

ドロップダウンオブジェクトをフォームにドラッグした後、Designer IDE の上部にあるツールメニューをクリックします。ツールメニューの「オプション」を選択します。「オプション」ポップアップが表示されるので、左側のメニューの「データバインディング」選択に移動します。「動的プロパティを表示」オプションがオンになっていることを確認し、「OK」ボタンをクリックします(図 5 を参照)。

ドロップダウンリストオブジェクトをスキーマ内の繰り返し可能な要素にバインドする

フォームの本文にあるドロップダウンリストに戻り、クリックします。ドロップダウンリストのオブジェクトパレット(デフォルトでは、Designer IDE の右下、「レイアウト」タブから 2 つ目のタブ)で、「フィールド」サブタブに移動します(図 6 を参照)。  

このタブの中央で、緑色の「ListItems:」リンクオブジェクトをクリックします。

「項目」行で、「項目」入力フィールドの右側にある「ナビゲーション」オブジェクトをクリックします。  「Tester」階層のレベルに移動します。データ入力フィールドには、次の値が入力されます。$record.testerList.Tester[*]

ここで使用される「[*]」の表記規則に注意してください。スキーマ要素が複数回反復される場合は、常にこの規則が使用されます。スキーマには、このようなセグメントがあります(図 7 を参照)。

このスキーマをドロップダウンリストオブジェクトに連結する場合、「Tester」レベルのスキーマ階層に連結します。また、この要素で、maxOccurs 属性値が unbounded に設定されていることにも注目します。「[*]」の表記規則が LiveCycle で機能するには、この属性値をスキーマで設定する必要があります。

最後に、スキーマ内に「name」と「id」の 2 つの要素値のみがあることに注意します。これらの要素は、データベースの「testUsers」セクションに連結され、testUsers values (100, 'Jim Jones', 0) のようになります。データベースには 3 人の testUsers(Jim、Sally、Fred)が含まれていますが、ここでは、「id」要素と「name」要素を含む「Tester」要素が 1 つだけあります。これらの要素は、データベース内の「100」(id)および「Jim Jones」(name)値に対応するものです(次の節では、スキーマのデータベース接続方法について説明します)。「[*]」の表記規則は、スキーマ内の maxOccurs="unbounded" 要素にバインドされると、データベーステーブルとテーブル内で繰り返し処理される各項目を反復し(for each)、その値を取得して、XSD が定義するデータ標準に従ってフォームに入力します。

バインド手続きを完了する手順は、さらにいくつかあります。次の手順は、オブジェクトパレットの「バインディング」タブをクリックすることです。  「データバインディング」入力フィールドの横にある、右側のナビゲーションアイコンを再度クリックします。「"データ接続" を使用」項目にマウスを移動します(図 8 を参照)。スキーマ内の要素の値が入力されたサイドポップアウトが表示されます。 

ユーザーがドロップダウンリストで項目を選択すると、このバインドによって選択した ID が「selectedTester」要素に格納されるので、リストでこの名前をクリックします。

表示される「バインディングプロパティ」ポップアップ(図 9 を参照)で、ドロップダウンリスト項目で更新するプロパティを選択します。  ほとんどの場合、プロパティの更新を一切おこなわないか、ここで選択したように、LiveCycle フォームオブジェクトの「Name」フィールドを更新します(単純に、フォームオブジェクト名とスキーマ要素名の一貫性を保つのが目的です)。 

ほとんどの場合、LiveCycle はキャプションと型の情報を処理できます。これらのボックスをチェックしたままにすると、LiveCycle フォーム内のデータが上書きされます。例えば、「date」型の「Date」フィールドを「xs:string」にキャストされた「Date」要素を持つスキーマ要素にマッピングし、このダイアログボックスで「型」オプションを選択したままにすると、「Date」オブジェクトの型情報が String に上書きされます。スキーマのデータ型にもう少し余裕を持たせるために、スキーマ要素を「xs:string」値にしておくことがよくあります。また、データ構造も、Designer に組み込まれているデータ型および検証ツールのままにしておきます。

この時点で、フォームを保存し、Designer を終了します。

Workbench でメインプロセスを作成する

次に、Workbench でメインプロセスを作成し、データベース参照を実行するプリレンダリングプロセスを作成します。これは、データベースがスキーマを介して、ドロップダウンリストフォームオブジェクトとやり取りする方法です。

Workbench で、階層内の目的の場所を右クリックし、「新規プロセス」ウィザードを使用して、(「プロセス」フォルダーに)新しいプロセスを作成します(図 10 を参照)。ウィザードに従って、新しいプロセスを作成し、Workspace に開始ポイントを作成するように指示します。

注意:

これは簡単な例なので、「PrepopulationExample」アプリケーションの「プロセス」サブフォルダーは使用しませんでしたが、より大規模で堅牢なアプリケーションを開発するにつれて、プロセスや他のアセットを使いやすく整理することをお勧めします。

ウィザードの残りの手順はデフォルトのままにします。

開始ポイントを指定し、データプロセスを準備します

プロセスデザイナーで、緑色の「開始ポイント」を選択し、プロパティパネルで、次に示すように、アクションプロファイルの右側のボタンをクリックします(図 11 を参照)。

ポップアップ表示されるダイアログボックスで、「データプロセスを準備」の横のボタンをクリックして、「データプロセスを新たに準備」ダイアログボックスを起動します(図 12 を参照)。

デフォルト値のままで「OK」ボタンを 2 回クリックし、ダイアログボックスを表示して Workbench に戻ります。

JDBC アクティビティをプロセスに追加して設定する

「NewForm1PrepareData」プロセスで、「Database for Multiple Rows as XML」型の JDBC アクティビティ(Java データベースコネクタ)を追加します。データソースは、プライマリデータソースに自動的に設定されます(図 13 を参照)。

「SQL 文」ボタンをクリックし、ダイアログボックスに値を入力します(図 14 を参照)。

接続が正常に確立されたかどうかを確認するには、「テスト」ボタンを押します。「id」と「name」の結果が返されると(上図を参照)、クエリが正常だということがわかります。

データベース列を XSD スキーマ要素にマッピングする

もう一度「プロセス作成」表示に戻り、「JDBC」オブジェクトをクリックし、右側のパネルで「XML 情報」をクリックしてダイアログボックスを表示し、次の図のように入力します(図 15 を参照)。

このダイアログボックスの上部のセクションが完了したら、「テスト」ボタンを押して、適切な接続を確認します。望ましい結果は、次の白いボックスに表示されている XML です。見ればわかるように、データベース「列」を XML「要素」にマッピングしています。ここでは同じ名前にしていますが、必須ではありません。

新しい XML 変数を作成する

データ接続が確立され、スキーマにバインドされたので、返されるデータをより簡単に操作できるように、変数を作成する必要があります。  変数を作成するには、「出力」の横の、変数を追加(「+」)ボタンを押し、「型: XML」の新しい変数を作成し、「Testers」という名前を付けます(図 16 を参照)。この変数には、データベースクエリから取得された XML 値が格納されます。

「値を割り当て」アクティビティを作成する

次に、「値を割り当て」アクティビティを作成します。これを使用して、クエリの XML 出力を「Testers」XML 変数に移動し、その XML 変数をフォームの入力に使用します。  次の図に示すように、この「値を割り当て」アクティビティを JDBC オブジェクトに接続します(図 17 を参照)。

「アクティビティ」オブジェクトをクリックし、プロパティパネルの「マッピング」セクションで、鉛筆アイコンをクリックして編集ダイアログボックスを表示します。ここでは、次に示すように、出力変数の適切な場所に「Testers」変数を割り当てます(図 18 を参照)。

宛先の場所:

/process_data/xmlPrepareData/xdp/datasets/data/FormSchema/testerList

プロセスを保存します。

アプリケーションのデプロイ

これで、アプリケーションをデプロイする準備が整いました。Workspace で実行すると、次のような入力済みドロップダウンリストがフォームに表示されます(図 19 を参照)。

ドロップダウンリストにデータベースの値が正常に入力されました。

「selectedTester」変数をテストします。

ドロップダウンリストからユーザーの選択に応じて「selectedTester」変数が設定されていることを証明するには、Designer に戻り、フィールドをデータ表示からフォームにドラッグして、テキスト入力を一時的に作成します(図 20 を参照)。

フォームを保存し、デプロイして再実行します。「Selected Tester」フィールドに、ドロップダウンリストから選択したユーザーの ID が反映されます(図 21 を参照)。

次の手順は、ユーザーが入力または選択したデータを使用して、データベーステーブルに挿入することです。

次のステップ

このチュートリアルでは、データベーステーブルの作成、スキーマとのバインド、スキーマとフォームのバインド、返されたデータを保存する XML 変数の作成についての原理を説明しました。

同様のトピックについて詳しくは、 Adobe LiveCycle Designer を使用した、XML スキーマドキュメント(XSD)の繰り返しサブフォーム要素へのバインドを参照してください。