フォームが数百以上のフィールドを持ち大きく複雑になると、エンドユーザーはフォームが表示されるときに長い時間を待たされることになります。この応答時間を最小にするために、アダプティブフォームでは、フォームを複数の論理的なフラグメントに分解し、これらのフラグメントが表示される必要な時が来るまでそれらの初期化や読み込みを遅延するように設定できます。これを遅延読み込みと呼びます。さらに、遅延読み込みが設定されたフラグメントは、ユーザーがフォーム内の他のセクションに移動しそのフラグメントを表示させておく必用がなくなるとアンロードされます。
まず最初に、遅延読み込みを設定する前に、要件と準備手順を説明します。
アダプティブフォーム内のフラグメントの遅延読み込みを設定する前に、フラグメントを作成し、スクリプトで使用されたり他のフラグメントで参照されたりする値を特定し、遅延読み込みされたフラグメントの表示をコントロールするためのルールを定義するといった、戦略を定義することが重要です。
- フラグメントの特定と作成
遅延読み込みを設定できるのは、アダプティブフォームのフラグメントのみです。フラグメントとは、アダプティブフォームの外側にある独立したセグメントであり、フォーム間で再利用できるものです。したがって、遅延読み込みを導入するための最初の手順は、フォーム内の論理的なセクションを特定しそれらをフラグメントに変換することにあります。フラグメントは、最初から作成することも、あるいは既存のフォームパネルをフラグメントとして保存することもできます。
フラグメントの作成について詳しくは、アダプティブフォームフラグメントを参照してください。
- グローバルな値を特定しマークを付ける
フォームベースのトランザクションでは、ユーザーからの適切なデータを取得しそれを処理してフォーム記入体験を簡素化するための動的な要素が関与します。例えば、フォームのフラグメント X 内にフィールド A があり、その値が別のフラグメント内のフィールド B の有効性を決定するとします。この場合、フラグメント X が遅延読み込みに対してマーク付けされた場合、フィールド A の値は、フラグメント X が読み込まれていないときでも、フィールド B を検証するために必要となります。これを実現するには、フィールド A をグローバルとしてマーク付けし、これによりその値が、フラグメント X が読み込まれていないときでもフィールド B の検証のために使用できるようになります。
フィールド値をグローバルにする方法については、遅延読み込みの設定を参照してください。
- フィールドの表示をコントロールするルールを作成する
フォームには、必ずしもすべてのユーザーや条件に適用されないフィールドやセクションがいくつか含まれます。フォームの作成者や開発者は、ユーザーの入力に基づいでその表示をコントロールするために表示/非表示ルールを使用します。例えば会社住所フィールドは、フォームの職業ステータスで無職を選択したユーザーには表示されません。ルールの作成について詳しくは、ルールエディターの使用を参照してください。
遅延読み込みされたフラグメント内で表示ルールを活用して、条件付きフィールドを必要なときのみ表示させることができます。また、条件付きフィールドをグローバルとしてマーク付けして、遅延読み込みフラグメントの表示式内でそれを参照することもできます。
遅延読み込みを使用する際に留意しておかなければならない制限事項、推奨事項、および重要な点を以下に示します。
- 大きなフォームに対して遅延読み込みを設定する場合は、XFA ベースのアダプティブフォームより XSD スキーマベースのアダプティブフォームを使用することが推奨されます。XFA ベースのアダプティブフォームにおける遅延読み込みの導入によるパフォーマンスの向上は、XSD ベースのアダプティブフォームと比べ比較的小さいです。
- レスポンシブグリッドレイアウトではフラグメントに遅延読み込みを設定しないでください。パフォーマンスが低下します。
- アダプティブフォームの読み込み時に表示する最初のパネル内のフラグメントに対しては遅延読み込みを設定しないことが推奨されます。
- 遅延読み込みは、フラグメント階層の最大 2 つのレベルまでサポートされます。
- グローバルとして設定されたフィールドがアダプティブフォーム内で一意であることを確認してください。
- フラグメントの表示ルールは、条件に基づいて表示または非表示するべきフラグメントに対して作成するようにしてください。例えば、配偶者情報フラグメントは、ユーザーによって指定された婚姻ステータスに基づいて表示または非表示にすることができます。
- ファイル添付および利用条件コンポーネントは、遅延読み込みフラグメントではサポートされません。
遅延読み込みパネル用のスクリプト作成時に留意しておかなければならない重要な点は次のとおりです。
- 遅延読み込みが設定されたフラグメントで使用される初期化および計算スクリプトは、べき等になるようにしてください。べき等のスクリプトとは、何度実行しても同じ結果になるスクリプトです。
- フィールドのグローバルに使用できるプロパティを使用して、遅延読み込みパネル内にあるフィールドの値をフォームのその他のすべてのパネルで使用できるようにしてください。
- フィールドがフラグメント間でグローバルとしてマークされているかどうかにかかわらず、遅延パネル内部のフィールドの参照値を転送しないでください。
- パネルリセット機能を使用して、パネル上で表示されているすべてのものを、次のクリック式を使ってリセットしてください。
guideBridge.resolveNode(guideBridge.getFocus({"focusOption": "navigablePanel"})).resetData()