Adobe Experience Manager(AEM)表單可協助您將複雜的交易轉換為簡單、愉悅的數位體驗。 但是,它需要共同努力來建置、建立、執行和維護有效率且具生產力的AEM Forms生態系統。
本檔案提供管理員、作者和開發人員在使用AEM Forms時可從中獲益的准則和建議,尤其是最適化表單元件。 它討論從設定表單開發專案到設定、自訂、製作和最佳化AEM Forms的最佳實務。 這些最佳實務可共同協助AEM Forms生態系統的整體效能。
此外,以下是一般AEM最佳實務的建議讀取:
簡化和標準化的專案結構可大幅降低開發和維護工作。 Apache Maven是建立AEM專案時建議使用的開放原始碼工具。
使用Apache Maven aem-project-archetype
來建立和管理AEM專案的結構。 它會為您的AEM專案建立建議的結構和範本。 此外,它還提供建置自動化和變更控制系統,以協助管理專案。
archetype:generate
命令生成初始結構。eclipse:eclipse
命令產生eclipse專案檔案,並將專案匯入eclipse。如需詳細資訊,請參閱如何使用Apache Maven建立AEM專案。
FileVault工具或VLT可協助您將CRX或AEM例項的內容對應至您的檔案系統。 它提供變更控制管理作業,例如登入和登出AEM專案內容。 請參閱如何使用VLT工具。
如果您使用Eclipse整合的開發環境,您可以使用AEM Developer工具,將Eclipse IDE與AEM例項完美整合,以建立AEM應用程式。 如需詳細資訊,請參閱AEM Developer Tools for Eclipse。
在您設定AEM專案後,請定義編寫和自訂最適化表單範本和元件的策略。
最適化表單範本是專用的AEM頁面,可定義最適化表單的結構和頁首——頁尾資訊。 範本具有預先設定的版面配置、樣式和最適化表單的基本結構。 AEM Forms提供現成可用的範本和元件,讓您用來製作最適化表單。 不過,您可以根據需求建立自訂範本和元件。 建議您收集在最適化表單中需要的其他範本和元件需求。 如需詳細資訊,請參閱自訂最適化表單和元件。
AEM Forms可讓您根據下清單單模型建立最適化表單。 表單模型充當表單與AEM系統之間資料交換的介面,並為最適化表單內外的資料流提供XML架構。 另外,表單模型以模式和XFA約束的形式對自適應表單施加規則和約束。
請務必謹慎選擇不僅符合您需求的資料模型,而且延伸您對XFA和XSD資產的現有投資(如果有的話)。 建議使用XSD模型來建立表單範本,因為產生的XML會依照架構定義的XPATH包含資料。 使用XSD模型作為表單資料模型的預設選擇,也有助於將表單設計與處理和使用資料的後端系統解耦,而且由於表單欄位的一對一對應,因此可改善表單的效能。 此外,欄位的BindRef也可以使其資料值在XML中的XPATH。
如需詳細資訊,請參閱建立最適化表單。
AEM Forms提供現成可用的最適化表單範本,供您用來建立最適化表單。 您也可以建立自己的範本。 AEM提供靜態和可編輯的範本。
要設定特定欄位或面板實例的樣式,請使用內嵌樣式。 或者,您可以在CSS檔案中定義類別,並在元件的「CSS類別」屬性中指定類別名稱。
在元件中加入用戶端程式庫,以一致地套用使用該元件之最適化表單或片段的樣式。 如需詳細資訊,請參閱建立最適化表單頁面元件。
在最適化表單容器屬性的CSS檔案路徑欄位中,指定用戶端資料庫的路徑,以套用用戶端資料庫中定義的樣式來選取最適化表單。
若要建立樣式的用戶端資料庫,您可以在「主題編輯器」基本的clientlib或「表單容器」屬性中設定自訂CSS檔案。
最適化表單提供面板版面配置,例如互動式、標籤式、收合式和精靈,以控制表單元件在面板中的排版方式。 您可以建立自訂面板版面,並讓表單作者使用。 如需詳細資訊,請參閱建立最適化表單的自訂版面元件。
您也可以自訂特定的最適化表單元件,例如欄位和面板版面。
有關處理PII資料的建議,請參閱處理個人識別資訊。
使用側欄中的「物件」瀏覽器,快速存取表單階層中深層的欄位。 您可以使用搜索框在表單或對象樹中搜索對象,以便從一個對象導航到另一個對象。
要在邊欄的元件瀏覽器中查看和編輯元件的屬性,請選擇該元件並按一下。 您也可以按兩下元件,在屬性瀏覽器中檢視其屬性。
使用鍵盤快速鍵,在表單上快速動作。 請參閱AEM Forms Keyboard Shortcuts。
建議只在最適化表單頁面中使用最適化表單元件。 這些元件對其父級層次具有依賴性。 因此,請勿在AEM頁面中使用它們。
此外,請參閱製作最適化表單簡介中的元件說明和最佳實務。
AEM Forms提供規則編輯器,可讓您建立規則,將動態行為新增至最適化表單元件。 使用這些規則,您可以評估條件並觸發元件上的動作,例如顯示或隱藏欄位、計算值、動態變更下拉式清單等。
規則編輯器提供可視編輯器和代碼編輯器,用於編寫規則。 使用程式碼編輯器模式編寫規則時,請考慮下列事項:
在撰寫規則時,為表單欄位和元件使用有意義且唯一的名稱,以避免任何可能的衝突。
使用this
運算子,讓元件在規則運算式中參照自身。 它可確保即使元件名稱變更,規則仍然有效。 例如,field1.valueCommit script: this.value > 10
。
參照其他表單元件時,請使用元件名稱。 使用value
屬性來擷取欄位或元件的值。 例如,field1.value
。
依相對唯一階層來參考元件,以避免任何衝突。 例如,parentName.fieldName
。
在處理複雜或常用的規則時,請考慮將商業邏輯編寫為個別用戶端程式庫中的函式,以便您指定並跨調適性表單重複使用。 用戶端程式庫應是獨立的程式庫,除jQuery和Undershore.js外,不應有任何外部相依性。 您也可以使用用戶端程式庫,對已提交的表單資料強制伺服器端重新驗證。
最適化表單提供一組API,您可用來與最適化表單通訊,並對其執行動作。 部分關鍵API如下。 如需詳細資訊,請參閱適用於Adaptive Forms的JavaScript程式庫API參考。
guideBridge.reset()
:重設表單。
guideBridge.submit()
:提交表格。
guideBridge.setFocus(somExp, focusOption, runCompletionExp)
:將焦點設定為欄位。
guideBridge.validate(errorList, somExpression, focus)
:驗證表單。
guideBridge.getDataXML(options)
:以XML格式取得表單資料。
guideBridge.resolveNode(somExpression)
:獲取表單對象。
guideBridge.setProperty(somList, propertyName, valueList)
:設定表單對象的屬性。
此外,您還可使用下列欄位屬性:
field.value
來更改欄位的值。ield.enabled
以啟用/停用欄位。field.visible
變更欄位的可見度。最適化表單作者可能需要編寫JavaScript程式碼,才能建立表單中的商業邏輯。 雖然JavaScript功能強大而且有效,但可能會在安全性預期上造成損害。 因此,您必須確保表單作者是受信任的人物,而且在表單投入生產之前,有需要檢閱和核准JavaScript程式碼的程式。 管理員可以根據用戶組的角色或功能限制對規則編輯器的訪問權限。 請參閱授予規則編輯器對選定用戶組的訪問權限。
您可以在規則中使用運算式,讓最適化表單變為動態。 所有運算式都是有效的JavaScript運算式,並使用最適化表單指令碼模型API。 這些運算式會傳回特定類型的值。 如需有關運算式和最佳實務的詳細資訊,請參閱最適化表單運算式。
主題最適化可讓您建立可重複使用的樣式,可套用至各種表單,以提供一致的外觀和樣式。 建議使用「主題」來定義表單元件和面板的樣式。 主題的一些最佳做法如下:
如需詳細資訊,請參閱主題。
表單製作者和使用者通常在以編寫模式或執行時期載入大型表單時,會遇到效能問題。 隨著表單中物件(欄位和面板)數目增加,製作與執行時期的體驗開始降低。 此外,它還可防止多位作者同時協作和製作表單。
請考慮下列最佳實務,以克服大型表單的效能問題:
建議使用XSD表單資料模型建立最適化表單,即使將XFA轉換為最適化表單(如果可能)亦然。
在可從使用者擷取資訊的最適化表單中,僅包含這些欄位和面板。 請考慮將靜態內容保持在最小,或使用URL在個別視窗中開啟。
雖然每個表格都是專為特定用途而設計,但大部分表格中都有一些常見的區段。 例如,個人詳細資料、地址、雇傭詳細資料等。 建立最適化表單片段以用於一般表單元素和區段,並跨表單使用。 您也可以將現有表單中的面板儲存為片段。 片段中的任何變更都會反映在所有相關的最適化表單中。 它可促進協作製作,因為多位作者可同時處理組成表單的不同片段。
使用「儲存並繼續」與自動儲存功能,定期儲存最適化表單,讓使用者稍後可重新造訪以完成表單。
設定片段以延遲載入。 在執行時期,標籤為緩慢載入的片段只會在需要時顯示。 它可大幅降低大型表單的載入時間。 可重複面板的片段也支援它。 如需詳細資訊,請參閱設定延遲載入。
您可以預先填入從後端擷取的資料,以協助使用者快速填入表格並避免輸入錯誤。
AEM Forms提供預先填寫服務,可從預先定義的資料XML檔案讀取資料,並以預先填寫的XML檔案中的內容預先填寫最適化表單的欄位。
預填充資料XML必須與與自適應表單相關聯的表單模型的模式相容。
在預填充XML中包括afBoundedData
和afUnBoundedData
區段,以在自適應表單中預填充綁定和未綁定欄位。
針對以表單資料模型為基礎的最適化表單,AEM Forms提供現成可用的表單資料模型預填服務。 預填充服務在自適應表單中查詢資料模型對象的資料源,並在呈現表單時預填充欄位值。
您也可以使用檔案、crx、服務或http通訊協定,預先填寫最適化表單。
AEM Forms支援自訂的預填服務,您可將這些服務外掛為OSGi服務,以預填最適化表單。
如需詳細資訊,請參閱預填最適化表單欄位。
最適化表單需要「提交」動作來處理使用者指定的資料。 「提交」操作決定使用自適應表單對提交的資料執行的任務。
您可以在最適化表單中運用Adobe Sign的多重簽署體驗。 在最適化表單中設定Adobe Sign時,請考慮下列事項。 如需詳細資訊,請參閱在最適化格式中使用Adobe Sign。
記錄檔案(DoR)是可列印、簽署或封存之最適化表單的平面化PDF版本。
根據自適應表單所基於的表單資料模型,可以按如下方式為DoR配置模板:
直接從最適化表單編輯器的「記錄檔案」索引標籤,設定頁首、頁尾、影像、顏色、字型等。
使用DoRService
以程式設計方式產生DoR。
從DoR排除隱藏欄位。
使用afAcceptLang
請求參數在其他地區設定中檢視DoR。
AEM Chrome Plug-inis是Google Chrome的瀏 覽器擴充功能,提供調試最適化表單的工具。表單作者和開發人員可使用這些工具:
如需詳細資訊,請參閱AEM Chrome外掛程式——最適化表單。
Calvin SDK是Adaptive Forms開發人員用來測試Adaptive Forms的公用API。 Calvin SDK建立在Hobbes.js測試架構之上。 您可使用架構來測試下列項目:
如需詳細資訊,請參閱自動測試最適化表單。
需要進行伺服器端驗證,以防止任何嘗試略過用戶端驗證,以及資料提交和違反業務規則的可能危害。 伺服器端驗證是透過載入所需的用戶端程式庫來在伺服器上執行。
AEM提供翻譯工作流程,讓您用來本地化最適化表單。 如需詳細資訊,請參閱使用AEM轉譯工作流程來本地化最適化表單。
在本地化自適應表單時的一些最佳做法如下:
針對表單中的常用元素使用最適化表單片段,並本地化片段。 它可確保片段本地化一次,並反映所有使用本地化片段的形式。
新增元件或在本地化表單中套用指令碼等任何修改都不會自動本地化。 因此,在本地化表單之前,您必須先完成表單的定版作業,以避免出現多個本地化週期。
使用afAcceptLang
請求參數來覆寫瀏覽器地區設定,並在指定的地區設定中轉譯表單。 例如,下列URL將強制以日文地區來轉換表單,而不考慮瀏覽器設定中指定的地區:
https://[*server*]:[*port*]/<*contextPath*>/<*formFolder*>/<*formName*>.html?wcmmode=disabled&afAcceptLang=ja
AEM Forms目前支援以英文(en)、西班牙文(es)、法文(fr)、義大利文(it)、德文(de)、日文(ja)、葡萄牙文——巴西(pt-BR)、中文-(zh-CN)、中文——台灣(zh-TW)和韓文(ko-KR)語言環境將調適性表單內容本地化。 不過,您可以在執行時期新增對最適化表單新地區設定的支援。 如需詳細資訊,請參閱支援最適化表單本地化的新地區設定。
您可以設定位於安全區防火牆後方的額外AEM Forms伺服器例項。 您可將此例項用於:
您通常需要將AEM專案從一個環境移至另一個環境。 移動時要記住的一些關鍵事項如下:
以下是設定AEM以改善整體效能的一些最佳實務:
從Felix Console為JavaScript和CSS啟用HTML用戶端程式庫壓縮。 請參閱Clientlibs,其說明由example說明。
快取/etc.clientlibs/fd
處的所有用戶端程式庫,以及AEM Dispatcher上任何其他自訂用戶端程式庫,以提高已發佈表單的回應速度與安全性。 有關詳細資訊,請參見Dispatcher。
不快取/content/forms/af/
和/content/dam/formsanddocuments/*
路徑。 有關配置自適應表單快取的詳細資訊,請參見快取自適應表單。
透過網頁伺服器壓縮模組啟用HTML。 如需詳細資訊,請參閱AEM Forms伺服器的效能調整。
增加大型表單的每個請求組態的呼叫。 請參閱優化大型和複雜表單的效能。
建立由錯誤處理程式顯示的自定義錯誤頁。
保全AEM Forms伺服器。
nosamplecontent
執行模式,確保生產伺服器上沒有部署示例內容和示例用戶。 請參閱在生產就緒模式中執行AEM。將堆大小保持在至少8 GB。 如需其他設定,請參閱AEM Forms伺服器的效能調整。
使用服務用戶會話而不是管理會話來執行服務級別任務。 如需詳細資訊,請參閱服務驗證。
在生產環境中,建議不要將提交的表單資料儲存在AEM儲存庫中。 Forms Portal Store、Store Content和Store PDF提交動作的預設實作會將表單資料儲存在AEM儲存庫中。 這些提交動作僅用於演示目的。 此外,「儲存和繼續」和「自動儲存」功能預設會使用入口儲存空間。 因此,請考慮以下建議:
儲存草稿資料:如果您使用最適化表單的「草稿」功能,則應實作自訂的「服務提供介面」(SPI),將草稿資料儲存在更安全的儲存中,例如資料庫。如需詳細資訊,請參閱將草稿和提交元件與資料庫整合的範例。
儲存提交資料:如果您使用表單入口提交儲存,則應實施自定義SPI以將提交資料儲存在資料庫中。如需整合範例,請參閱將草稿和提交元件與資料庫整合的範例。
您也可以撰寫自訂的提交動作,將表單資料和附件儲存在安全儲存空間中。 如需詳細資訊,請參閱撰寫最適化表單的自訂提交動作。
組織面臨的主要挑戰之一,是如何處理個人識別(PII)資料。 一些將幫助您處理此類資料的最佳做法如下: