使用 AEM 工作流程整合最適化表單與資料庫 submit-forms-to-database-using-forms-portal
automated forms conversion服務可讓您將非互動式PDF表單、Acro表單或XFA型PDF表單轉換為最適化表單。 啟動轉換程式時,您可以選擇產生具有或不具有資料繫結的最適化表單。
如果您選擇產生沒有資料繫結的最適化表單,則可以在轉換後將轉換的最適化表單與表單資料模型、XML結構描述或JSON結構描述整合。 對於表單資料模型,您需要手動將最適化表單欄位與表單資料模型繫結。 不過,如果您產生具有資料繫結的最適化表單,轉換服務會自動將最適化表單與JSON結構描述建立關聯,並在最適化表單和JSON結構描述中可用的欄位之間建立資料繫結。 然後,您可以將最適化表單與您選擇的資料庫整合、在表單中填寫資料,然後將其提交到資料庫。 同樣地,成功與資料庫整合後,您可以在轉換後的最適化表單中設定欄位,以從資料庫擷取值並預填最適化表單欄位。
下圖說明將轉換後的適用性表單與資料庫整合的不同階段:
本文會說明如何成功執行所有這些整合階段的逐步指示。
先決條件 pre-requisites
- 設定AEM 6.4或6.5編寫執行個體
- 安裝 最新Service Pack 適用於您的AEM執行個體
- 最新版本的AEM Forms附加元件套件
- 設定 automated forms conversion服務
- 設定資料庫。 範例實作中使用的資料庫是MySQL 5.6.24。不過,您可以將轉換後的最適化表單與您選擇的任何資料庫整合。
最適化表單範例 sample-adaptive-form
若要執行使用案例,以使用AEM工作流程將轉換後的最適化表單與資料庫整合,請下載以下範例PDF檔案。
您可以使用以下下載範例「聯絡我們」表單:
PDF檔案可作為Automated forms conversion服務的輸入。 此服務會將此檔案轉換為最適化表單。 下圖說明以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資料庫之間的連線:
-
前往AEM Web主控台組態頁面,網址為
http://server:port/system/console/configMgr
. -
尋找並按一下以開啟 Apache Sling Connection Pooled DataSource 在「Web主控台設定」的編輯模式中。 依照下表的說明,指定屬性的值:
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. 選取 get 和 insert 從 Read Service 和 Write Service 下拉式清單。 指定讀取服務的引數,然後點選 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服務 此 聯絡我們表單 變更為具有資料繫結的最適化表單。 請確定您沒有選取 Generate adaptive form(s) without data bindings 產生最適化表單時勾選此方塊。
選取已轉換的 聯絡我們表單 可在 output 資料夾位於 Forms & Documents 並點選 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 欄位並選取 insert 從 Service 下拉式清單。
-
在 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 區段,為表單資料模型引數提供下列值:
請注意,表單資料模型欄位(例如接觸點名稱)會對應至 afData.afBoundData.data.name1,指已提交的最適化表單的JSON結構描述繫結。
設定最適化表單提交 configure-adaptive-form-submission
執行以下步驟,將最適化表單提交至您在上一節中建立的工作流程模型:
-
選取中可用的轉換後聯絡我們表單 output 資料夾位於 Forms & Documents 並點選 Edit.
-
點選以開啟最適化表單屬性 Form Container 然後點選 .
-
在 Submission 區段,選取 Invoke an AEM workflow 從 Submit Action 下拉式清單,選取您在上一節建立的工作流程模型,並指定 data.xml 在 Data File Path 欄位。
-
點選 以儲存屬性。
-
點選 Preview,在最適化表單欄位中輸入值,然後點選 Submit. MYSQL資料庫表格現在會顯示提交的值,而非 crx-repository.
設定最適化表單以預填資料庫中的值
執行以下步驟來設定最適化表單,以根據表格中定義的主索引鍵從MYSQL資料庫預先填入值(在此案例中是電子郵件):
-
點選 電子郵件 最適化表單中的欄位並點選 .
-
點選 Create 並選取 is changed 從 Select State 中的下拉式清單 When 區段。
-
在 Then 區段,選取 Invoke Service 和 get 作為您在前一節建立的表單資料模型的服務。
-
選取 電子郵件 在 Input 區段和表單資料模型的其餘三個欄位, 名稱, 電話號碼、和 問題說明 在 Output 區段。 點選 Done 以儲存設定。
因此,您可以根據MYSQL資料庫中現有的Email專案,預先填入 Preview 最適化表單的模式。 aya.tan@xyz.com例如,如果您在 電子郵件 欄位(根據中的現有資料) 準備表單資料模型 區段)並跳出欄位,其餘三個欄位, 名稱, 電話號碼、和 問題說明 會在最適化表單中自動顯示。
您可以使用以下下載範例轉換後的最適化表單: