客戶通常需要提交多份表單才能申請服務或福利。 它涉及尋找所有相關表格;分別填寫、提交和追蹤。 此外,他們必須在各個表單中多次填寫常見詳細資訊。 若整個程式涉及大量表單,則會變得繁瑣且容易出錯。 AEM Forms的表單集功能有助於簡化這類案例的使用者體驗。
表單集是HTML5份表單的集合,這些表單分組在一起,並以單一表單集的形式向使用者呈現。 當最終用戶開始填寫表單集時,他們將從一個表單無縫轉換到另一個表單。 最後,只需按一下即可提交所有表單。
AEM Forms為表單作者提供直覺式的使用者介面,以建立、設定和管理表單集。 身為作者,您可以依照您希望使用者遵循的特定順序來排序表單。 此外,您也可以對個別表單套用條件或資格運算式,以根據使用者輸入控制其可見度。 例如,您可以將配偶詳細資訊表設定為只有在婚姻狀態指定為「已婚」時才顯示。
此外,您可以配置不同表單中的公用欄位,以共用通用資料綁定。 在適當的資料綁定到位後,最終用戶只需在後續表單中自動填寫公共資訊時填寫。
AEM Forms應用程式也支援表單集,讓您的現場員工能夠離線建立表單集、造訪客戶、輸入資料,並稍後與AEM Forms伺服器同步,以便將表單資料提交至業務流程。
您可以將使用設計工具建立的多個XDP或表單範本關聯至表單集。 然後,可以使用表單集根據用戶在初始表單中輸入的值及其配置檔案有選擇地呈現XDP。
使用 AEM Forms使用者介面 管理所有表單、表單集和相關資產。
要建立表單集,請執行以下操作:
選取「Forms > Forms和檔案」。
選擇「建立」>「表單集」。
在「添加屬性」頁中,添加以下詳細資訊並按一下「下一步」。
「選取表單」畫面會顯示可用的XDP表單或XDP檔案。 搜尋並選取要納入表單集的表單,然後按一下「新增至表單集」 。 如有必要,請再次搜尋要新增的表單。 將所有表單添加到表單集後,按一下「下一步」。
請確定XDP表單中的欄位名稱不包含點字元。 否則,任何嘗試解析具有點字元的欄位的指令碼都無法解析這些欄位。
在「配置表單」頁中,您可以執行以下操作:
fs.valueOf(<form identifier="">, <fieldsom expression="">)> <value>
例如,如果表單集中有兩個表單:業務費用和差旅費用,您可以在「適用性表達式」欄位中為這兩種表單添加JavaScript代碼段,以檢查用戶在表單中的費用類型輸入。 如果用戶選擇「業務費用」,則「業務費用」表單將呈現給最終用戶。 或者,如果用戶選擇差旅費,則會向最終用戶呈現不同的表單。 如需詳細資訊,請參閱適用性運算式。
此外,作者也可以選擇使用每列右角出現的「刪除」圖示,從表單集中移除表單,或使用「+「 」表徵圖。 此「+「 」表徵圖將用戶引導回嚮導中用於「選擇表單」的上一步。 現有選擇將保持不變,並且必須使用該頁上的「添加到表單集」表徵圖將進行的任何其他選擇添加到表單集中。
表單集中使用的所有表單均由AEM Forms使用者介面管理。
建立表單集後,您可以對該表單集執行下列動作:
要編輯表單集,請執行以下操作:
選取「Forms > Forms和檔案」。
找出您要編輯的表單集。 將滑鼠指標暫留在滑鼠指標上,然後選取「編輯」( )。
在「配置表單」頁中,可以編輯以下內容:
您也可以按一下相關的「刪除」圖示,從表單集中刪除表單。
使用AEM Forms管理使用者介面建立表單集後,您就可以使用Workbench在起始點或指派任務活動中使用表單集。
設計流程時,在「分配任務/起始點」的「演示和資料」部分下,選擇 使用CRX資產. CRX資產瀏覽器隨即顯示。
選取表單集以篩選AEM存放庫(CRX)中的表單集。
選擇表單集並按一下「確定」。
表單集中的適用性運算式可用來定義並動態控制顯示給使用者的表單。 例如,只有在使用者屬於特定年齡群組時,才顯示特定表單。 使用Forms Manager指定和編輯適用性運算式。
適用性運算式可以是任何傳回布林值的有效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檔案的絕對路徑。
例如,您在表單集中有三個表單(form1、form2和form3),其結構如下:
form1
欄位
form1field
form2
欄位
form2field
form3
欄位
form3field
每個表單都有一個通用的命名欄位(名為「field」)和一個唯一命名的欄位(名為「formfield」)。
您可以使用具有以下結構的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開頭的子樹狀結構包含表單集中Forms內欄位和子表單的資料。 有多種因素可決定rootElement及其子項的結構。
在預填XML中,此標籤是可選的,但如果缺少,則會忽略整個XML。
根元素標籤的名稱
如果預填XML中有根元素,該元素的名稱也會取用於提交XML。 如果沒有預填xml,則rootElement的名稱是表單集中第一個表單的根子表單的名稱,該表單集的dataRoot屬性設定為「/」。 如果沒有此類形式,則rootElement名稱為 fs_dummy_root,即保留關鍵字。
AEM Forms應用程式可讓現場工作人員將其行動裝置與AEM Forms伺服器同步,並處理其工作。 即使裝置離線,應用程式仍會透過將資料儲存在裝置本機而運作。 使用注釋功能(如照片),現場工作人員可以提供準確的資訊以整合到業務流程中。
如需AEM Forms應用程式的詳細資訊,請參閱 AEM Forms應用程式.
表單集未完全支援以下資料模式:
表單集中未完全支援模式 | 範例 |
輸入大小和模式大小不匹配 | 當模式= num{z,zzz} 和輸入= 12,345或 1,23 |
帶括弧"(" ")"的子句模式 | num{(zz,zzz)} |
多資料模式 | num{zz,zzz) | num{z,zzz,zzz} |
速記模式 | num.integer{}, num.decimal{}, num. %{}或 num.currency{} |