使用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檔案:

  1. 瀏覽至http://server:port/system/console/depfinder並搜尋com.mysql.jdbc套件。
  2. 在「匯出者」欄中,檢查封裝是否由任何束匯出。 如果套件未由任何套件組合匯出,請繼續。
  3. 瀏覽至http://server:port/system/console/bundles並按一下​ Install/Update
  4. 按一下​ Choose File ​並瀏覽以選取mysql-connector-java-5.1.39-bin.jar檔案。 此外,選取​ Start Bundle ​和​ Refresh Packages ​核取方塊。
  5. 按一下​ Install ​或​ Update。 完成後,請重新啟動伺服器。
  6. (僅限Windows)關閉作業系統的系統防火牆。

為表單模型準備資料 prepare-data-for-form-model

AEM Forms資料整合可讓您設定並連線至不同的資料來源。 使用轉換程式產生最適化表單後,您可以根據表單資料模型、XSD或JSON結構描述定義表單模型。 您可以使用資料庫、Microsoft Dynamics或任何其他協力廠商服務來建立表單資料模型。

本教學課程使用MySQL資料庫作為建立表單資料模型的來源。 在資料庫中建立結構描述,並根據最適化表單中可用的欄位,將​ contactus ​資料表新增到結構描述中。

範例資料mysql

您可以使用下列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資料庫之間的連線:

  1. 移至http://server:port/system/console/configMgr的AEM Web主控台設定頁面。

  2. 在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做為資料來源後,請執行以下步驟來建立表單資料模型:

  1. 在AEM作者執行個體中,瀏覽至​ Forms > Data Integrations

  2. 點選​ Create > Form Data Model

  3. 在​ Create Form Data Model ​精靈中,將​ workflow_submit ​指定為表單資料模型的名稱。 點選​ Next

  4. 選取您在上一節中設定的MYSQL資料來源,然後點選​ Create

  5. 點選​ Edit ​並展開左窗格中列出的資料來源,以選取​ contactus ​表格、get ​和​ insert ​服務,然後點選​ Add Selected

    範例資料mysql

  6. 在右窗格中選取資料模型物件,然後點選​ Edit Properties。 從​ Read Service ​和​ Write Service ​下拉式清單中選取​ get ​和​ insert。 指定讀取服務的引數,然後點選​ Done

  7. 在​ Services ​標籤中,選取​ get ​服務並點選​ Edit Properties。 選取​ Output Model Object、停用​ Return array ​切換功能,然後點選​ Done

  8. 選取​ Insert ​服務並點選​ Edit Properties。 選取​ Input Model Object ​並點選​ Done

  9. 點選​ Save ​以儲存表單資料模型。

您可以使用以下下載範例表單資料模型:

取得檔案

產生具有JSON繫結的最適化表單 generate-adaptive-forms-with-json-binding

使用Automated forms conversion服務(AFCS)將 聯絡我們表單轉換為具有資料繫結的最適化表單。 確保在產生最適化表單時不要選取​ Generate adaptive form(s) without data bindings ​核取方塊。

具有JSON繫結的最適化表單

選取可在​ 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

執行以下步驟來建立工作流程模型,以將最適化表單資料提交至資料庫:

  1. 開啟「工作流程模型」主控台。 預設URL為https://server:port/libs/cq/workflow/admin/console/content/models.html/etc/workflow/models

  2. 選取​ Create,然後選取​ Create ModelAdd Workflow Model ​對話方塊隨即顯示。

  3. 輸入​ Title ​和​ Name (選擇性)。 例如,workflow_json_submit。 點選​ Done ​以建立模型。

  4. 選取工作流程模型並點選​ Edit ​以在編輯模式中開啟模型。 點選+並將​ Invoke Form Data Model Service ​步驟新增至工作流程模型。

  5. 點選​ Invoke Form Data Model Service ​步驟並點選 設定

  6. 在​ Form Data Model ​索引標籤中,選取您在​ Form Data Model path ​欄位中建立的表單資料模型,並從​ Service ​下拉式清單中選取​ insert

  7. 在​ 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 ​欄位的值。

  8. 在​ Service Arguments ​區段中,為表單資料模型引數提供下列值:

    啟動表單資料模型服務

    請注意,表單資料模型欄位(例如contactus dot name)對應至​ afData.afBoundData.data.name1,這表示已提交的最適化表單的JSON結構描述繫結。

設定最適化表單提交 configure-adaptive-form-submission

執行以下步驟,將最適化表單提交至您在前一節中建立的工作流程模型:

  1. 選取​ Forms & Documents ​中​ output ​資料夾中可用的轉換連絡人表單,然後點選​ Edit

  2. 點選​ Form Container,然後點選 設定 ,開啟最適化表單屬性。

  3. 在​ Submission ​區段中,從​ Submit Action ​下拉式清單中選取​ Invoke an AEM workflow,選取您在上一區段中建立的工作流程模型,並在​ Data File Path ​欄位中指定​ data.xml

  4. 點選 儲存 以儲存屬性。

  5. 點選​ Preview,在最適化表單欄位中輸入值,然後點選​ Submit。 送出的值現在顯示在MYSQL資料庫表格中,而非​ crx-repository

設定最適化表單以預填資料庫的值

執行以下步驟來設定最適化表單,以根據表格中定義的主索引鍵從MYSQL資料庫預先填入值(在此案例中為電子郵件):

  1. 點選最適化表單中的​ 電子郵件 ​欄位,然後點選 編輯規則

  2. 點選​ Create ​並從​ When ​區段的​ Select State ​下拉式清單中選取​ is changed

  3. 在​ Then ​區段中,選取​ Invoke Service ​和​ get ​作為您在此文章前一個區段中建立的表單資料模型的服務。

  4. 在​ Input ​區段中選取​ 電子郵件,並在​ Output ​區段中選取表單資料模型的其餘三個欄位、名稱電話號碼 ​以及​ 問題說明。 點選​ Done ​以儲存設定。

    設定電子郵件預填設定

    因此,您可以根據MYSQL資料庫中現有的電子郵件專案,以最適化表單的​ Preview ​模式預先填入其餘三個欄位的值。 例如,如果您在​ 電子郵件 ​欄位中指定aya.tan@xyz.com (根據本文的準備表單資料模型區段中的現有資料)並以標籤退出欄位,其餘三個欄位(名稱電話號碼 ​和​ 問題說明)會自動顯示在最適化表單中。

您可使用以下方式下載範例轉換後的最適化表單:

取得檔案

recommendation-more-help
c40c2ccf-3d1b-4b47-b158-c4646051b46c