使用AEM工作流程整合最適化表單與資料庫 submit-forms-to-database-using-forms-portal
automated forms conversion服務(AFCS)可讓您將非互動式PDF表單、Acro表單或XFAPDF表單轉換為最適化表單。 起始轉換程式時,您可以選擇產生具有或不具有資料繫結的最適化表單。
如果您選擇產生沒有資料繫結的調適型表單,則可以在轉換後整合已轉換的調適型表單與表單資料模型、XML結構描述或JSON結構描述。 對於表單資料模型,您需要手動將最適化表單欄位與表單資料模型繫結。 不過,如果您產生具有資料繫結的調適型表單,轉換服務會自動將調適型表單與JSON結構描述建立關聯,並在調適型表單和JSON結構描述中可用的欄位之間建立資料繫結。 然後,您可以將最適化表單與您選擇的資料庫整合、在表單中填寫資料,並將資料提交至資料庫。 同樣地,成功與資料庫整合後,您可以在轉換後的調適型表單中設定欄位,以從資料庫擷取值並預填調適型表單欄位。
下圖說明將轉換後的適用性表單與資料庫整合的不同階段:
本文會說明如何成功執行所有這些整合階段的逐步指示。
必要條件 pre-requisites
- 設定AEM 6.4或6.5編寫執行個體
- 為您的AEM執行個體安裝最新Service Pack
- 最新版本的AEM Forms附加元件套件
- 設定Automated forms conversion服務
- 設定資料庫。 範例實作中使用的資料庫是MySQL 5.6.24。不過,您可以將轉換後的最適化表單與您選擇的任何資料庫整合。
最適化表單範例 sample-adaptive-form
若要執行使用案例以使用AEM工作流程將轉換後的適用性表單與資料庫整合,請下載以下範例PDF檔案。
您可以使用以下下載範例「聯絡我們」表單:
PDF檔案可作為Automated forms conversion服務(AFCS)的輸入。 此服務會將此檔案轉換為最適化表單。 下圖是以PDF格式呈現的範例連絡人表格。
安裝mysql-connector-java-5.1.39-bin.jar檔案 install-mysql-connector-java-file
在所有作者和發佈執行個體上執行以下步驟,以安裝mysql-connector-java-5.1.39-bin.jar檔案:
- 瀏覽至
http://server:port/system/console/depfinder
並搜尋com.mysql.jdbc套件。 - 在「匯出者」欄中,檢查封裝是否由任何束匯出。 如果套件未由任何套件組合匯出,請繼續。
- 瀏覽至
http://server:port/system/console/bundles
並按一下 Install/Update。 - 按一下 Choose File 並瀏覽以選取mysql-connector-java-5.1.39-bin.jar檔案。 此外,選取 Start Bundle 和 Refresh Packages 核取方塊。
- 按一下 Install 或 Update。 完成後,請重新啟動伺服器。
- (僅限Windows)關閉作業系統的系統防火牆。
為表單模型準備資料 prepare-data-for-form-model
AEM Forms資料整合可讓您設定並連線至不同的資料來源。 使用轉換程式產生最適化表單後,您可以根據表單資料模型、XSD或JSON結構描述定義表單模型。 您可以使用資料庫、Microsoft Dynamics或任何其他協力廠商服務來建立表單資料模型。
本教學課程使用MySQL資料庫作為建立表單資料模型的來源。 在資料庫中建立結構描述,並根據最適化表單中可用的欄位,將 contactus 資料表新增到結構描述中。
您可以使用下列DDL敘述句在資料庫中建立 contactus 資料表。
CREATE TABLE `contactus` (
`name` varchar(45) NOT NULL,
`email` varchar(45) NOT NULL,
`phonenumber` varchar(10) DEFAULT NULL,
`issuedesc` varchar(1000) DEFAULT NULL,
PRIMARY KEY (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
設定AEM執行個體與資料庫之間的連線 configure-connection-between-aem-instance-and-database
執行以下設定步驟來建立AEM執行處理與MYSQL資料庫之間的連線:
-
移至
http://server:port/system/console/configMgr
的AEM Web主控台設定頁面。 -
在Web主控台組態中尋找並按一下以編輯模式開啟 Apache Sling Connection Pooled DataSource。 指定特性值,如下表所述:
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 8-row-2 9-row-2 10-row-2 11-row-2 12-row-2 13-row-2 14-row-2 15-row-2 html-authored 屬性 值 資料來源名稱 從資料來源集區篩選驅動程式的資料來源名稱。 JDBC驅動程式類別 com.mysql.jdbc.Driver JDBC連線URI jdbc//[host]:[port]/[schema_name] 使用者名稱 用於驗證資料庫表格並執行動作的使用者名稱 密碼 與使用者名稱關聯的密碼 交易隔離 READ_COMMITTED 最大使用中連線 1000 最大閒置連線 100 最小閒置連線 10 初始大小 10 等待上限 100000 借入時測試 已核取 閒置時測試 已核取 驗證查詢 範例值為SELECT 1(mysql)、select 1 from dual(oracle)、SELECT 1(MS Sql Server) (validationQuery) 驗證查詢逾時 10000
建立表單資料模型 create-form-data-model
設定MYSQL做為資料來源後,請執行以下步驟來建立表單資料模型:
-
在AEM作者執行個體中,瀏覽至 Forms > Data Integrations。
-
點選 Create > Form Data Model。
-
在 Create Form Data Model 精靈中,將 workflow_submit 指定為表單資料模型的名稱。 點選 Next。
-
選取您在上一節中設定的MYSQL資料來源,然後點選 Create。
-
點選 Edit 並展開左窗格中列出的資料來源,以選取 contactus 表格、get 和 insert 服務,然後點選 Add Selected。
-
在右窗格中選取資料模型物件,然後點選 Edit Properties。 從 Read Service 和 Write Service 下拉式清單中選取 get 和 insert。 指定讀取服務的引數,然後點選 Done。
-
在 Services 標籤中,選取 get 服務並點選 Edit Properties。 選取 Output Model Object、停用 Return array 切換功能,然後點選 Done。
-
選取 Insert 服務並點選 Edit Properties。 選取 Input Model Object 並點選 Done。
-
點選 Save 以儲存表單資料模型。
您可以使用以下下載範例表單資料模型:
產生具有JSON繫結的最適化表單 generate-adaptive-forms-with-json-binding
使用Automated forms conversion服務(AFCS)將 聯絡我們表單轉換為具有資料繫結的最適化表單。 確保在產生最適化表單時不要選取 Generate adaptive form(s) without data bindings 核取方塊。
選取可在 Forms & Documents 的 output 資料夾中取得的 連絡我們表單,然後點選 Edit。 點選 Preview,在最適化表單欄位中輸入值,然後點選 Submit。
登入 crx-repository 並導覽至 /content/forms/fp/admin/submit/data,以檢視JSON格式的提交值。 以下是您提交轉換的 聯絡我們 最適化表單時,JSON格式的範例資料:
{
"afData": {
"afUnboundData": {
"data": {}
},
"afBoundData": {
"data": {
"name1": "Gloria",
"email": "abc@xyz.com",
"phone_number": "2346578965",
"issue_description": "Test message"
}
},
"afSubmissionInfo": {
"computedMetaInfo": {},
"stateOverrides": {},
"signers": {},
"afPath": "/content/dam/formsanddocuments/docs_conversion/output/sample_form_json",
"afSubmissionTime": "20191204014007"
}
}
}
您需要立即建立工作流程模型,以便處理此資料,並使用您在前幾節中建立的表單資料模型將其提交至MYSQL資料庫。
建立工作流程模型以處理JSON資料 create-workflow-model
執行以下步驟來建立工作流程模型,以將最適化表單資料提交至資料庫:
-
開啟「工作流程模型」主控台。 預設URL為
https://server:port/libs/cq/workflow/admin/console/content/models.html/etc/workflow/models
。 -
選取 Create,然後選取 Create Model。 Add Workflow Model 對話方塊隨即顯示。
-
輸入 Title 和 Name (選擇性)。 例如,workflow_json_submit。 點選 Done 以建立模型。
-
選取工作流程模型並點選 Edit 以在編輯模式中開啟模型。 點選+並將 Invoke Form Data Model Service 步驟新增至工作流程模型。
-
點選 Invoke Form Data Model Service 步驟並點選 。
-
在 Form Data Model 索引標籤中,選取您在 Form Data Model path 欄位中建立的表單資料模型,並從 Service 下拉式清單中選取 insert。
-
在 Input for Service 索引標籤中,從下拉式清單中選取 Provide input data using literal, variable, or a workflow metadata, and a JSON file,選取 Map input fields from input JSON 核取方塊,選取 Relative to payload,並提供 data.xml 作為 Select input JSON document using 欄位的值。
-
在 Service Arguments 區段中,為表單資料模型引數提供下列值:
請注意,表單資料模型欄位(例如contactus dot name)對應至 afData.afBoundData.data.name1,這表示已提交的最適化表單的JSON結構描述繫結。
設定最適化表單提交 configure-adaptive-form-submission
執行以下步驟,將最適化表單提交至您在前一節中建立的工作流程模型:
-
選取 Forms & Documents 中 output 資料夾中可用的轉換連絡人表單,然後點選 Edit。
-
點選 Form Container,然後點選 ,開啟最適化表單屬性。
-
在 Submission 區段中,從 Submit Action 下拉式清單中選取 Invoke an AEM workflow,選取您在上一區段中建立的工作流程模型,並在 Data File Path 欄位中指定 data.xml。
-
點選 以儲存屬性。
-
點選 Preview,在最適化表單欄位中輸入值,然後點選 Submit。 送出的值現在顯示在MYSQL資料庫表格中,而非 crx-repository。
設定最適化表單以預填資料庫的值
執行以下步驟來設定最適化表單,以根據表格中定義的主索引鍵從MYSQL資料庫預先填入值(在此案例中為電子郵件):
-
點選最適化表單中的 電子郵件 欄位,然後點選 。
-
點選 Create 並從 When 區段的 Select State 下拉式清單中選取 is changed。
-
在 Then 區段中,選取 Invoke Service 和 get 作為您在此文章前一個區段中建立的表單資料模型的服務。
-
在 Input 區段中選取 電子郵件,並在 Output 區段中選取表單資料模型的其餘三個欄位、名稱、電話號碼 以及 問題說明。 點選 Done 以儲存設定。
因此,您可以根據MYSQL資料庫中現有的電子郵件專案,以最適化表單的 Preview 模式預先填入其餘三個欄位的值。 例如,如果您在 電子郵件 欄位中指定aya.tan@xyz.com (根據本文的準備表單資料模型區段中的現有資料)並以標籤退出欄位,其餘三個欄位(名稱、電話號碼 和 問題說明)會自動顯示在最適化表單中。
您可使用以下方式下載範例轉換後的最適化表單: