Show Menu
主題×

使用 AEM 工作流程整合最適化表單與資料庫

「自動表單轉換」服務可讓您將非互動式PDF表單、Acro表單或以XFA為基礎的PDF表單轉換為最適化表單。 在開始轉換程式時,您可以選擇是否使用資料系結產生最適化表單。
如果您選擇產生不含資料系結的最適化表單,則轉換後可將轉換的最適化表單與表單資料模型、XML架構或JSON架構整合。 對於表單資料模型,您需要手動將自適應表單欄位與表單資料模型系結。 不過,如果您產生具有資料系結的最適化表單,轉換服務會自動將最適化表單與JSON結構描述關聯,並在最適化表單和JSON結構描述中可用的欄位間建立資料系結。 然後,您可以將最適化表單與您選擇的資料庫整合、填寫表單中的資料,並將它送出至資料庫。 同樣地,在成功與資料庫整合後,您可以配置轉換的自適應表單中的欄位,以便從資料庫中檢索值並預填充自適應表單欄位。
下圖描述了將已轉換的自適應表單與資料庫整合的不同階段:
本文說明成功執行所有這些整合階段的逐步指示。

先決條件

  • 設定AEM 6.4或6.5作者實例
  • 為您 的AEM實例安裝 最新的Service Pack
  • AEM Forms附加元件套件的最新版本
  • 設定資料庫。 示例實施中使用的資料庫是MySQL 5.6.24。不過,您可以將轉換的最適化表單與您選擇的任何資料庫整合。

範例自適應表單

若要執行使用案例,以使用AEM工作流程將轉換的最適化表單與資料庫整合,請下載下列範例PDF檔案。
您可以使用下列方式下載範例聯絡我們表單:
PDF檔案是Automated Forms Conversion服務的輸入。 服務將此檔案轉換為自適應格式。 下圖以PDF格式描述範例聯絡我們表單。

安裝mysql-connector-java-5.1.39-bin.jar檔案

對所有作者和發佈實例執行以下步驟以安裝mysql-connector-java-5.1.39-bin.jar檔案:
  1. 導覽至 http://server:port/system/console/depfinder 並搜尋com.mysql.jdbc套件。
  2. 在「導出者」(Exported by)列中,檢查軟體包是否由任何包導出。 如果軟體包未由任何包導出,請繼續。
  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)關閉您作業系統的系統防火牆。

為表單模型準備資料

AEM Forms Data Integration可讓您設定並連線至不同的資料來源。 使用轉換程式產生最適化表單後,您可以根據表單資料模型、XSD或JSON結構描述來定義表單模型。 您可以使用資料庫、Microsoft Dynamics或任何其他協力廠商服務來建立表單資料模型。
本教程使用MySQL資料庫作為源來建立表單資料模型。 在資料庫中建立模式,並根 據自適應表單中可用的欄位 ,將Contacttus表添加到模式。
可以使用以下DDL語句在資料庫中創 建Contacttus 表。
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例項與資料庫之間的連線

執行下列設定步驟,以建立AEM例項與MYSQL資料庫之間的連線:
  1. 請前往「AEM Web Console設定」頁面(網址為 http://server:port/system/console/configMgr )。
  2. 在「Web控制台配置」中, Apache Sling Connection Pooled DataSource 查找並按一下以在編輯模式下開啟。 指定屬性的值,如下表所述:
    屬性
    資料來源名稱
    用於從資料源池中過濾驅動程式的資料源名稱。
    JDBC驅動程式類
    com.mysql.jdbc.driver
    JDBC連接URI
    jdbc:mysql://[host]:[port]/[schema_name]
    使用者名稱
    對資料庫表進行驗證和執行操作的用戶名
    密碼
    與用戶名關聯的密碼
    事務隔離
    READ_COMMITTED
    最大活動連接數
    1000
    最大空閒連接數
    100
    最小空閒連接數
    10
    初始大小
    10
    最大等待
    100000
    借閱測試
    已核取
    空閒時測試
    已核取
    驗證查詢
    示例值包括SELECT 1(mysql)、從dual(oracle)中選擇1、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 並展開左窗格中所列的資料來源,以選 取Contact 表格、 get ​和 insert 服務,然後點選 Add Selected
  6. 在右窗格中選取資料模型物件,然後點選 Edit Properties 。 從 get 和下 insert Read Service 式清單中選 Write Service 擇和。 指定讀取服務的引數,然後點選 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 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資料

執行以下步驟以建立工作流模型,以便將自適應表單資料提交到資料庫:
  1. 開啟「工作流模型」控制台。 預設URL為 https://server:port/libs/cq/workflow/admin/console/content/models.html/etc/workflow/models
  2. 選擇 Create ,然後 Create Model 。 此時將 Add 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 型,並從 insert 下拉列 Service 表中選擇。
  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架構系結。

設定最適化表單提交

執行以下步驟,將最適化表單提交到您在上一節中建立的工作流模型:
  1. 在中,選取資料夾中可用的轉換「聯絡我 output 們」表單, Forms & Documents 然後點選 Edit
  2. 點選並點選「設定」,以開啟 Form Container 最適化的表
  3. 在區 Submission 段中, Invoke an AEM workflow 從下拉式清 Submit Action 單中選取,選取您在上一區段中建立的工作流程模型,並在欄位中指 定data.xml Data File Path
  4. 點選「 」以儲存屬性。
  5. 點選 Preview 、在最適化表單欄位中輸入值,然後點選 Submit 。 提交的值現在顯示在MYSQL資料庫表中,而不是 crx-repository

配置自適應表單以從資料庫預填充值

執行以下步驟,以根據表中定義的主鍵(在本例中為電子郵件)配置自適應表單以預填充MYSQL資料庫中的值:
  1. 點選最適 化表單中的 「電子郵件」欄位,並點選「編
  2. 點選 Create is changed 從區段 Select State 的下拉式清單中選 When 取。
  3. 在該 Then 節中,選 Invoke Service ​並取得您在本文上一節中建立的表單資料模型。
  4. 節中選擇E-mail , Input 並在其餘三個欄位中選擇表單資料模型、 名稱 Output 電話號、Oracle Phone Issue Description中的E-mail。 點選 Done 以儲存設定。
    因此,根據MYSQL資料庫中現有的E-mail條目,可以在自適應表單模式中預填充其餘三個字 Preview 段的值。 例如,如果在 E-mail field(根據本文「 Prepare form model 」一節的現有欄位中指定aya.tan@xyz.com ,並跳出欄位,則其餘三個欄位、 Name 、Phone NumberTacklist、 Callusion Issue Description自動在最適化表單中顯示資料。
您可以使用下列方式下載範例轉換的最適化表單: