概要

既存データを使用して、アダプティブフォームのフィールドを設定することができます。ユーザーがフォームを開くと、これらのフィールドの値は事前設定されています。フォームモデルとしてフォームテンプレートまたはXMLスキーマの有無に関わらず、これを達成することができます。これを達成するには、ユーザーデータが、アダプティブフォームに従って、特定のフォーマットで事前入力XMLとして使用可能でなければなりません

事前入力XML構造

アダプティブフォームには、連結されたフィールドと連結されていないフィールドが混在している場合があります。連結されたフィールドは、コンテンツファインダータブからドラッグされた、フィールドの編集ダイアログ内で空白ではないbindRefプロパティ値を含んだものです。連結されていないフィールドは、Sidekickから直接ドラッグされ、bindRef値を保持します。

アダプティブフォームは、連結されたフィールドと連結されてないフィールドの両方を事前入力をサポートします。これを達成するために、prefill XMLは二つのセクションを含めることできます-afBoundedDataおよびafUnBoundedDataです。afBoundedDataセクションには、連結フィールドおよびパネルのためのpre-fillデータが含まれています。このデータは、関連するフォームモデルスキーマに準拠していなければなりません。

  • XFAフォームテンプレートを使用しているアダプティブフォームの場合、事前入力XMLは、XFAテンプレートのデータスキーマに準拠していなければなりません。
  • XMLスキーマを使用しているアダプティブフォームの場合、事前入力XMLは、スキーマ構造に準拠していなければなりません。
  • フォームモデルのないアダプティブフォームの場合、連結されたデータはありません。すべてのフィールドは、連結されていないフィールドであり、連結されていないXMLを使用して事前入力されています。
以下に表示される一般的な事前入力XMLは、連結されたフィールドおよび連結されていないフィールドの両方を事前入力することができます。
<?xml version="1.0" encoding="UTF-8"?>
<afData>
  <afBoundData>
     <employeeData>
        .
     </employeeData>
  </afBoundData>

  <afUnboundData>
    <data>
      <textbox>Hello World</textbox>
         .
         .
      <numericbox>12</numericbox>
         . 
         .              
    </data>
  </afUnboundData>
</afData>

ここで、アダプティブフォームをタイプ別に詳しく見てみましょう。

XFAフォームテンプレートを使用したアダプティブフォーム

  • 事前入力XML構造:XFAベースのアダプティブフォームのための事前入力XMLは、XFAフォームテンプレートのデータスキーマに準拠していなければなりません。また、連結されていないフィールドの事前入力を行う場合、オプションで、/afData/afBoundDataタグにまとめられることがあります。
  • 送信済みXML構造:事前入力XMLが使用されていない場合、送信済みXMLには、afDataのwrapperタグの連結されたフィールドと連結されていないフィールド両方のデータを含みます。入力XMLが使用された場合、送信済みXMLは、事前入力XMLと同じ構造をしています。事前入力XMLがafDataのルートタグで開始する場合、出力XMLもまた同じフォーマットとなります。事前入力XMLにafData/afBoundData のラッパーが無く、直接employeeDataのようなスキーマルートタグから開始する場合は、送信済みXMLもまたemployeeDataタグから開始します。

ダウンロード

XMLスキーマベースのアダプティブフォーム

  • 事前入力XML構造:事前入力XMLは、関連するXMLスキーマに準拠していなければなりません。連結していないフィールドの事前入力も行う場合は、オプションで、/afData/afBoundDataタグにまとめることが可能です。
  • 送信済みXML構造:事前入力XMLが使用されない場合、afDataのラッパータグには、送信済みのXMLには、連結されたフィールドおよび連結されていないフィールドの両方が含まれています。入力XMLが使用された場合、送信済みXMLは、事前入力XMLと同じ構造をしています。事前入力XMLがafDataのルートタグで開始する場合、出力XMLもまた同じフォーマットとなります。事前入力XMLにafData/afBoundData のラッパーが無く、直接employeeDataのようなスキーマルートタグから開始する場合は、送信済みXMLもまたemployeeDataタグから開始します。
<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema targetNamespace="http://adobe.com/sample.xsd"
            xmlns="http://adobe.com/sample.xsd"
            xmlns:xs="http://www.w3.org/2001/XMLSchema">
 
    <xs:element name="sample" type="SampleType"/>
         
    <xs:complexType name="SampleType">
        <xs:sequence>
            <xs:element name="noOfProjectsAssigned" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

XMLスキーマをモデルとするフィールドの場合、データは、以下のサンプルスキーマに示すように、afBoundedDataタグ内に入力されます。これは、一つ以上の連結されていないテキストフィールドでアダプティブフォームを作成するために使用できます。

<?xml version="1.0" encoding="UTF-8"?><afData>
  <afUnboundData>
    <data>
      <textbox>Ignorance is bliss :) </textbox>
    </data>
  </afUnboundData>
  <afBoundData>
    <data>
      <noOfProjectsAssigned>twelve</noOfProjectsAssigned>
    </data>
  </afBoundData>
</afData>

注意:

連結するパネル(サイドキックからコンポーネントをドラッグして作成された空白のない bindRef)で、連結していないフィールドを使用しないことをお勧めします。これらの連結していないフィールドのデーターの損失を招くことがあります。また、フィールド名は、特に連結していないフィールドについては、フォーム間で一意のフィールド名を設定することをお勧めします。

 

<?xml version="1.0" encoding="UTF-8"?><config>
 <assignmentDetails descriptionOfAssignment="Some Science Project" durationOfAssignment="34" financeRelatedProject="1" name="Lisa" numberOfMentees="1"/>
 <assignmentDetails descriptionOfAssignment="Kidding, right?" durationOfAssignment="4" financeRelatedProject="1" name="House" numberOfMentees="3"/>
</config>

フォームモデルのないアダプティブフォーム

フォームモデルのないアダプティブフォームの場合、すべてのフィールドのデータは、<afUnboundData>を親に持つ<data>タグの下にあります。

また、次のことを控えておいてください:

  1. 各種フィールドに送信されたユーザーデータのためのXMLタグは、フィールド名を使用して生成されます。したがって、一意のフィールド名を設定する必要があります。
  2. 連結されていないフィールドは、送信時にフォルダー内で作成されたフォルダーおよびそのフォルダーの jcr:data プロパティ内の XML に書き込まれています。
<?xml version="1.0" encoding="UTF-8"?><afData>
  <afUnboundData>
    <data>
      <radiobutton>2</radiobutton>
      <repeatable_panel_no_form_model>
        <numericbox>12</numericbox>
      </repeatable_panel_no_form_model>
      <repeatable_panel_no_form_model>
        <numericbox>21</numericbox>
      </repeatable_panel_no_form_model>
      <checkbox>2</checkbox>
      <textbox>Nopes</textbox>
    </data>
  </afUnboundData>
  <afBoundData/>
</afData>

Configuration Manager を使用した事前入力サービスの設定

事前入力サービスを有効にするには、AEM Web Console Configuration で フォーム共通設定サービスを指定する必要があります。次の手順を使用して、事前入力サービスを設定します。

  1. Adobe Experience Manager Web Console Configuration を URL:
    http://<server>:<port>/system/console/configMgr を使用して開きます。

  2. フォーム共通設定サービスを検索して開きます。

  3. データの場所または正規表現を「Data files locations」に入力します。有効なデータファイルの場所の例は次のとおりです。

    • file:///C:/Users/public/Document/Prefill/*
    • http://localhost:8000/somesamplexmlfile.xml

    注意:デフォルトでは、事前入力は、すべての種類のアダプティブフォーム(なし、XSD、XDP)で crx ファイルを通じて許可されます。事前入力は XML ファイルでのみ許可されます。

    AEM_6.1_config
  4. 事前入力サービスがフォームに対して設定されました。

    注意:

    crx プロトコルは、事前入力済みデータのセキュリティを管理するので、デフォルトで許可されています。汎用的な正規表現を使用して他のプロトコル経由で事前入力すると、脆弱性が発生する可能性があります。データを保護するために、設定では安全性の高い URL を指定する必要があります。

繰り返し可能なパネルの好奇心が強いケース

一般的に、連結された(フォームテンプレートまたはXMLスキーマからの)および連結されていないフィールドまたはサブフォームは、同じアダプティブフォームの中で作成されますが、次に挙げるのは、連結するサブフォームが再読み込み可能な場合のいくつかの例外です:

  • XFAフォームテンプレートまたはXSDを使用したアダプティブフォームの連結していない再読み込み可能なパネルはサポートされていません。
  • 連結された再読み込み可能なパネル内で、連結されていないフィールドを使用しないでください。

注意:

アドバイスとしては、連結されていないフィールドにユーザーが入力したデータ上でそれらが重なっている場合、連結されたフィールドと連結されていないフィールドを混合するべきではないということです。連結されて、データが XML 内の他のフィールドと同様に使用可能になるように、可能であれば、XML スキーマまたは XFA フォームテンプレートを変更して、連結していないフィールドへのエントリを追加することをお勧めします。

事前入力されたユーザーデータのサポートされるプロトコル

アダプティブフォームでは、以下のプロトコルによるXMLフォーマット上のユーザーデータを使用した事前入力が可能です。

The file:// protocol 

http://localhost:4502/content/forms/af/someAF.html?wcmmode=disabled&dataRef=file:///C:/Users/form-user/Downloads/somesamplexml.xml

参照元ファイルは、同じサーバー上になければなりません。

The crx:// protocol

http://localhost:4502/content/forms/af/xml.html?wcmmode=disabled&dataRef=crx:///tmp/fd/af/myassets/sample.xml

特定のノードには、jcr:dataと呼ばれるプロパティがあり、XMLデータを保持していなければなりません。

The http:// protocol

http://localhost:4502/content/forms/af/xml.html?wcmmode=disabled&dataRef=http://localhost:8000/somesamplexmlfile.xml

注意:

認証パラメータの引き渡しはサポートされていません。

slingRequestでのデータ属性の設定

また、以下のサンプルコードが示すように、Data属性が、XMLタグを含む文字列であるslingRequest内のData属性を設定することもできます。

<%
           String dataXML="<afData>" +
                            "<afUnboundData>" +
                                "<dataRoot>" +
                                    "<first_name>"+ "Tyler" + "</first_name>" +
                                    "<last_name>"+ "Durden " + "</last_name>" +
                                    "<gender>"+ "Male" + "</gender>" +
                                    "<location>"+ "Texas" + "</location>" +
                                    "</dataRoot>" +
                            "</afUnboundData>" +
                        "</afData>";
        slingRequest.setAttribute("data", dataXML);
%>

すべてのデータを含む単純なXML文字列を記述して、slingRequestに設定することができます。これは、slingRequest data属性を設定するページに含むすべてのコンポーネントのレンダラ―JSPで、簡単にできます。

特定タイプのヘッダーで特別な設計をしようとしているページを使って具体例を見てみましょう。これを達成するには、頁コンポーネントに含んで、data属性を設定することができる独自のheader.jspを作成します。

もう一つの好例は、FacebookやTwitter、またはLinkedInのようなソーシャルアカウントを使用してログイン時にデータを事前入力する使用例です。この場合、ユーザーアカウントからデータを取得し、データパラメーターを設定するheader.jspに単純なJSPを含めることができます。

ダウンロード

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー