您的客戶通常必須提交多份表單才能申請服務或權益。 它涉及尋找所有相關表格;以及個別填寫、提交和追蹤。 此外,他們必須在各表單間多次填寫一般詳細資訊。 如果整個程式涉及大量表格,則會變得麻煩且容易出錯。 AEM Forms的表單集功能可協助簡化此類案例的使用者體驗。
表單集是HTML5表單的集合,分組在一起,並以單一表單集的形式呈現給使用者。 當使用者開始填寫表格集時,可順暢地從一個表格轉換到另一個表格。 最後,只要按一下,他們就能提交所有表格。
AEM Forms為表單作者提供直覺式的使用者介面,以建立、設定和管理表單集。 身為作者,您可以依您希望使用者遵循的特定順序來訂購表單。 此外,您也可以針對個別表單套用條件或資格陳述式,以根據使用者的輸入來控制其可見度。 例如,您可以設定配偶詳細資訊表格,使其只在婚姻狀態指定為「已婚」時顯示。
此外,您也可以設定不同表單中的常用欄位,以共用常用的資料系結。 在適當的資料系結就位後,一般使用者只需在後續表單中自動填入常用資訊時,才能填入。
AEM Forms應用程式也支援表單集,讓您的現場員工離線建立表單集、造訪客戶、輸入資料,並稍後與AEM Forms伺服器同步化,以便將表單資料提交至業務流程。
可以將使用設計器建立的多個XDP或表單模板關聯到一個表單集中。 然後,可以使用表單集,根據用戶在初始表單中輸入的值及其配置檔案來選擇性地渲染XDP。
使用AEM Forms使用者介面來管理您的所有表單、表單集和相關資產。
要建立表單集,請執行以下操作:
選擇「表單」>「表單與檔案」。
選擇「建立」>「表單集」。
在「添加屬性」頁中,添加以下詳細資訊,然後按一下「下一步」。
「選擇表單」螢幕顯示可用的XDP表單或XDP檔案。 搜尋並選取要包含在表單集中的表單,然後按一下「新增至表單集」。 如有必要,請再次搜尋要新增的表格。 將所有表單新增至表單集後,按一下「下一步」。
請確定XDP表單中的欄位名稱不包含點字元。 否則,任何嘗試解析具有點字元的欄位的指令碼都無法解析它們。
在「設定表單」頁面中,您可以執行下列動作:
fs.valueOf(<form Identifier="">, <fieldsom expression="">)> <value>
例如,如果表單集中有兩個表單:商務費用和差旅費用,您可以在這兩個表單的「資格運算式」欄位中新增JavaScript程式碼片段,以檢查使用者在表單中是否輸入費用類型。 如果用戶選擇「業務費用」,則「業務費用」表單將提供給最終用戶。 或者,如果使用者選擇旅行費用,則會向使用者提供不同的表單。 如需詳細資訊,請參閱資格運算式。
此外,作者也可以選擇使用列右角出現的「刪除」圖示從表格集中移除表格,或使用工具列中的「+」圖示新增其他表格集。 此「+」圖示會將使用者導向回精靈的上一個步驟,此步驟用於「選取表單」。 現有選擇將保持不變,而且必須使用該頁上的「添加到表單集」表徵圖將所做的任何其他選擇添加到表單集。
在表單集中使用的所有表單都由AEM Forms使用者介面管理。
建立表單集後,您可以對該表單集執行以下操作:
要編輯表單集,請執行以下操作:
選擇「表單」>「表單與檔案」。
找出您要編輯的表單集。 將滑鼠指標暫留在畫面上,並選取「編輯()」。
在「設定表單」頁面中,您可以編輯下列項目:
您也可以按一下相關的「刪除」圖示,從表單集中刪除表單。
使用AEM Forms Management使用者介面建立表單集後,您就可以使用「起點」或「使用工作台指派工作」活動中的表單集。
在設計流程時,在「分配任務/起點」的「演示和資料」部分下,選擇使用CRX資產。 出現「CRX Asset(CRX資產)」瀏覽器。
選取表單集以篩選AEM存放庫(CRX)中的表單集。
選擇表單集並按一下確定。
表單集中的資格表達式用於定義和動態控制向用戶顯示的表單。 例如,只有當使用者屬於特定年齡組時才顯示特定表格。 使用表單管理員指定和編輯資格運算式。
資格運算式可以是任何傳回布林值的有效JavaScript陳述式。 JavaScript程式碼片段中的最後一個陳述式會視為布林值,根據JavaScript程式碼片段的其餘(前一行)處理來判斷表單的資格。 如果運算式的值為true,表單就符合顯示給使用者的資格。 這類表單稱為合格表單。
不會執行表單集中第一個表單的資格運算式。 不論其資格表達式為何,都一律顯示第一個表格。
除了標準JavaScript函式外,表單集還公開fs.valueOf API,該API可讓您存取表單集中表單欄位的值。 使用此API存取表單集中的表單欄位值。 API語法為fs.valueOf(formUid, fieldSOM),其中:
formUid和fieldSOM參數都必須是字串常值。
API的有效使用:
fs.valueOf("form1", "xfa.form.form1.subform1.field1")
API的使用無效:
var formUid = "form1";
var fieldSOM = “xfa.form.form1.subform1.field1"; fs.valueOf(formUid, fieldSOM);
表單集是多個HTML5表單的集合,這些表單具有共同或不同的結構。 表單集支援使用XML檔案預先填入表單欄位。 您可以將XML檔案與表單集關聯,這樣當您在表單集中開啟表單時,表單中的某些欄位將得到預置。
預填充XML檔案是使用表單集的URL的dataRef參數指定的。 dataRef參數指定與表單集合的資料XML檔案的絕對路徑。
例如,您有3種表單(form1、form2和form3),在表單集中有下列結構:
form1
欄位
form1field
form2
欄位
form2field
form3
欄位
form3field
每個表單都有一個公用的命名欄位,名為"field",一個唯一命名的欄位,名為"form<i>field"。
您可以使用具有下列結構的XML來預先填寫此表格集:
<?xml version="1.0" encoding="UTF-8" ?>
<formSetRootTag>
<field>common field value</field>
<form1field>value1</form1field>
<form2field>value2</form2field>
<form3field>value3</form3field>
</formSetRootTag>
XML根標籤可以有任何名稱,但與欄位對應的元素標籤必須與欄位具有相同的名稱。 XML的階層必須模擬表單的階層,這表示XML必須有對應的標籤來封裝子表單。
上述XML程式碼片段顯示,表單集的預先填入XML是個別表單的預先填入XML程式碼片段的結合。 如果不同表單中的某些欄位具有彼此相似的資料層次/架構,則這些欄位會預先填入相同的值。 在此範例中,所有三個表格都預先填入相同值的公用欄位"field"。 這是將資料從一種形式傳遞至另一種形式的簡單方式。 您也可以將欄位系結至相同的架構或資料參考,以達成此目的。 如果您想根據表單的架構來分隔表單集資料。 在建立表單集時,可指定表單的「資料根」屬性(預設值為「/」,會對應至表單集根標籤),以達成此目的。
在上例中,如果您指定資料根:"/form1"、"/form2"和"/form3"分別用於這三種表單,您需要使用下列結構的預填XML:
<?xml version="1.0" encoding="UTF-8" ?>
<formSetRootTag>
<form1>
<field>field value1</field>
<form1field>value1</form1field>
</form1>
<form2>
<field>field value2</field>
<form2field>value2</form2field>
</form2>
<form3>
<field>field value3</field>
<form3field>value3</form3field>
</form3>
</formSetRootTag>
在表單集中,XML使用以下語法定義了XML架構:
<formset>
<fs_data>
<xdp:xdp xmlns:xdp="https://ns.adobe.com/xdp/">
<xfa:datasets xmlns:xfa="https://www.xfa.org/schema/xfa-data/1.0/">
<xfa:data>
<rootElement>
... data ....
</rootElement>
</xfa:data>
</xfa:datasets>
</xdp:xdp>
</fs_data>
<fs_draft>
... private data...
</fs_draft>
</formset>
如果有兩個表單具有重疊的資料根,或者一個表單的元素層次與另一個表單的資料根層次重疊,則在預填充xml中合併重疊的元素的值。 提交XML的結構與預填充XML類似,但提交XML的包裝函式標籤較多,而表格集上下文資料標籤會附加在結尾處。
用於建立預填充XML檔案的語法規則:
parent elements:
null
cardinality: [0,1]
submitXML: P
prefillXML: O
children: fs_data
表單的根元素集XML。 建議不要將此單字用作表單集中任何表單的rootSubform的名稱。
parent elements:
formset
基數:[1]
submitXML:P
prefillXML:O
children: xdp:xdp/rootElement
子樹指示表單集中的表單資料。 只有在表單集元素不存在時,元素才會在預先填入XML中為選用
parent elements: fs_data/null
cardinality: [0,1]
submitXML: O
prefillXML: O
children: xfa:datasets
此標籤表示HTML5表單XML的開始。 如果提交XML存在於預填充XML中,或沒有預填充XML,則會將其添加到提交XML中。 此標籤可從預填充XML中移除。
parent elements: xdp:xdp
cardinality: [1]
submitXML: O
prefillXML: O
children: xfa:data
parent elements: xfa:datasets
cardinality: [1]
submitXML: O
prefillXML: O
children: rootElement
parent elements: xfa:datasets/fs_data/null
cardinality: [0,1]
submitXML: P
prefillXML: O
children: controlled by the Forms in Form set
名稱rootElement只是預留位置。 實際名稱是從表單集中使用的表單中選擇。 以rootElement開頭的子樹包含表單集中表單內部的欄位和子表單的資料。 有多種因素會決定rootElement及其子項的結構。
在預先填入XML時,此標籤是選用的,但如果遺失,則會忽略整個XML。
根元素標籤的名稱
如果預填充XML中有根元素,則該元素的名稱也會取入提交XML中。 如果沒有預填充xml,則rootElement的名稱是表單集中第一個表單的根子表單的名稱,該表單集的dataRoot屬性設定為"/"。 如果沒有這樣的形式,則rootElement名稱為fs_dummy_root,此為保留關鍵字。
AEM Forms應用程式可讓現場工作者將行動裝置與AEM Forms伺服器同步化,並處理其工作。 即使在裝置離線時,應用程式仍可在裝置上儲存本機資料。 使用照片等注釋功能,現場工作人員可以提供精確的資訊以整合到業務流程中。
表單集不完全支援下列資料模式:
表單集中未完全支援模式 | 範例 |
輸入大小和圖樣大小不符 | 當pattern= num{z,zzz} 輸入= 12,345或 1,23 |
帶括弧"(" ")"的圖片子句模式 | num{(zz,zzz)} |
多種資料模式 | num{zz,zzz} | num{z,zzz,zzz} |
速記模式 | num.integer{}, num.decimal{}, num. %{}或 num.currency{} |