- 任意の XML/XSD エディタープログラム
または
- テキストエディタープログラム(Notepad++ など)
この記事で解決しようとする問題は、LiveCycle Designer ES を使用してダイナミックフォームフィールドを XML スキーマドキュメント(XSD)要素にバインドする方法です。
電子フォームとの動的なやり取りは、LiveCycle の最も魅力的な機能のひとつです。フォームのサイズを特定のトランザクションで必要なドキュメントに合わせることで、印刷コストを削減でき(フォームを印刷する必要がある場合)、トランザクションの完了に必要な量の情報のみを提示することで、フォームがユーザーにとって読みやすく、理解しやすいものになります。フォームオブジェクト(ボタンなど)は、必要な数のデータ入力フィールドをフォームに追加したり削除したりするのに使用できます。
フォームのオブジェクトによって取得されたデータは、フォーム内に XML データとして格納されます。この XML データをバックエンドサービスにフィードするには、XML が構造化されている必要があります。デフォルトでは、フォームに出力された XML データは、フォームオブジェクト自体のレイアウトおよびそのフォーム上の位置との関係を模倣した XML Path(XPath)構造に従います。この方法の XPath の命名は、多くの場合、バックエンド開発者にとっては不便なので、フォームから出力される XML をバックエンド開発者にとって論理的な方法で構造化するために、XSD ドキュメントが使用されます。
XSD ドキュメントは、基本的に、XML マークアップ言語で記述されたスキーマまたはルールセットのドキュメントです。この XSD には、フォームから抽出される際に XML データがどのように構造化されるべきかが記述されています。フォームオブジェクトがスキーマ要素にバインドされると、フォームで取得されたデータは、XSD で記述された形式で XML ドキュメントに格納されるようになります。
目下の問題は、動的に繰り返すフォームオブジェクトの要素をスキーマ要素にどのようにバインドするかということです。結局は、オブジェクトはフォーム構造に 1 度、スキーマ構造に 1 度だけ表示されますが、いくつかのデータのセットに格納できます。このドキュメントでは、これらの繰り返しデータのセットのためのフォームの構造要件とフォームをスキーマにバインドするのに必要なバインド規則について説明します。
このチュートリアルの例として使用されるフォーム(図 1 を参照)は、企業パートナーのパワーユーザーによる Web サイトの使用を許可するための申請をサイト管理者がおこなうのに使用できる、シンプルなフォームです。ユーザー数は異なるので、サイト管理者が適切な人数のユーザーを追加するために、「ユーザーを追加」ボタンを追加します。このボタンを押すことで、ユーザーの新しいブロックが表示され、同じ情報(ユーザーの名、ユーザーの姓、(指定されたユーザーの)追加/変更/削除、ユーザーの電話番号、ユーザーの電子メールアドレス)が取得されます。
最初に、目的の繰り返しフィールド機能を含むようにフォームを構築する必要があります。これは、フローレイアウトでフォームを作成することで実現できます。フローレイアウトは、静的なレイアウトではありません。むしろ、名前が示すように、フローレイアウトは、必要に応じて、サイズを変更したり、展開/縮小したりできます。デフォルトでは、フローレイアウトは、すべてのフォームオブジェクトが上に重なり、左揃えにします。これは、フォームの実際の領域(フォーム使用可能な空白領域)を適切に使い切らないので、テーブルまたは(できれば)フローレイアウト内の配置済みレイアウトを含むサブフォームを使用する必要があります。
注意:
ページ全体のフローを設定する場合、デザインビューでページを表すフォームオブジェクト階層の項目(デフォルトでは、これは「(名称未設定サブフォーム)(ページ 1)」と呼ばれます)を右クリックします。「(マスターページ)」オブジェクトの下の「ページ1」オブジェクトを右クリックしないように注意してください。
XML スキーマ開発は、このチュートリアルの範囲外ですが、フォーム用の XML スキーマを作成してから、フォームとスキーマの間のデータ接続を作成する必要があります。
XML スキーマは、任意の XML または XSD スキーマ開発ツールを使用して開発することも、オープンソース製品の Notepad ++ のようなシンプルなテキストエディターでシンプルに作成することもできます。XML スキーマに関する必須の特性のひとつは、繰り返しサブフォームの構造を模倣するセクションを含める必要があることです。
前述の例では、「UserDesigneeSubform」には、次のようないくつかのデータ取得要素があります。
- UserFirstNm – テキストフィールド
- UserLastNm – テキストフィールド
- UserAddChangeDelIn – ドロップダウンリストセレクター
- UserTelNo – テキストフィールド(数値フィールドも可)
- UserEmailAd – テキストフィールド
これは、XML スキーマドキュメントも同じ要素が定義されている必要があることを意味します(図 4 を参照)。含まれる「フローレイアウト」オブジェクト(UserDesigneeContainer)およびサブフォームの「配置済み」オブジェクト(UserDesigneeSubform)の両方で「maxOccurs」属性が未バインドに設定されている必要があることに注意してください。また、繰り返し「UserDesigneeSubform」オブジェクトが「UserDesigneeContainer」オブジェクト内に埋め込まれる必要があることが、Designer のフォーム階層の位置に反映されることに注意してください。
スキーマを開発し、データ接続を確立したら、フォーム要素のスキーマへのバインドを開始できます。フィールドのデータソースへのバインドについて詳しくは、こちらを参照してください。