使用AEM Workflow集成自适应表单与数据库 submit-forms-to-database-using-forms-portal

利用自动表单转换服务(AFCS),您可以将非交互式PDF表单、Acro表单或基于XFA的PDF表单转换为自适应表单。 启动转换过程时,您可以选择生成带数据绑定或不带数据绑定的自适应表单。

如果选择生成无数据绑定的自适应表单,则可以在转换后将已转换的自适应表单与表单数据模型、XML架构或JSON架构集成。 对于表单数据模型,您需要手动将自适应表单字段与表单数据模型绑定。 但是,如果生成具有数据绑定的自适应表单,则转换服务会自动将自适应表单与JSON架构相关联,并在自适应表单中的可用字段与JSON架构之间创建数据绑定。 然后,您可以将自适应表单与所选的数据库集成,在表单中填写数据并将其提交到数据库。 同样,成功与数据库集成后,您可以在转换后的自适应表单中配置字段,以从数据库中检索值并预填充自适应表单字段。

下图描述了将已转换的自适应表单与数据库集成的不同阶段:

数据库集成

本文介绍了成功执行所有这些集成阶段的分步说明。

先决条件 pre-requisites

  • 设置AEM 6.5或AEM 6.5 LTS创作实例
  • 为您的AEM实例安装最新的Service Pack
  • 最新版本的AEM Forms附加组件包
  • 配置自动表单转换服务
  • 设置数据库。 示例实施中使用的数据库是MySQL 5.6.24。但是,您可以将转换后的自适应表单与所选的任何数据库集成。

自适应表单示例 sample-adaptive-form

要执行用例以使用AEM工作流将转换后的自适应表单与数据库集成,请下载以下示例PDF文件。

您可以使用以下地址下载示例“联系我们”表单:

获取文件

PDF文件用作自动表单转换服务(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//[主机]:[端口]/[架构名称]
    用户名 用于对数据库表进行身份验证和执行操作的用户名
    密码 与用户名关联的密码
    事务隔离 读取已提交
    最大活动连接数 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 ​并展开左窗格中列出的数据源以选择​ contactus ​表、get​和​ insert ​服务,然后点按​Add Selected

    示例数据mysql

  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-forms-with-json-binding

使用自动表单转换服务(AFCS)将 联系我们表单转换为具有数据绑定的自适应表单。 确保在生成自适应表单时未选中​ Generate adaptive form(s) without data bindings ​复选框。

具有JSON绑定的 自适应表单

选择在​ ​文件夹中提供的转换后的​ 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

执行以下步骤来创建工作流模型,将自适应表单数据提交到数据库:

  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 ​节中,为表单数据模型参数提供以下值:

    调用表单数据模型服务

    请注意,表单数据模型字段(例如,contactact点名称)映射到​afData.afBoundData.data.name1,该字段引用了所提交自适应表单的JSON架构绑定。

配置自适应表单提交 configure-adaptive-form-submission

执行以下步骤,将自适应表单提交到您在上一节中创建的工作流模型:

  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数据库预填充值(本例中为Email):

  1. 点按自适应表单中的​ 电子邮件 ​字段,然后点按 编辑规则

  2. 点按​ Create ​并从​ is changed ​部分的​ Select State ​下拉列表中选择​When

  3. 在​ Then ​部分中,选择​ Invoke Service ​和​ get ​作为您在此文章的上一部分中创建的表单数据模型的服务。

  4. 在​ 部分中选择 ​电子邮件​Input,在​ 部分中选择表单数据模型的其余三个字段: ​名称​ ​电话号码​ ​问题描述​Output。 点按​ Done ​以保存设置。

    配置电子邮件预填充设置

    因此,您可以基于MYSQL数据库中的现有电子邮件条目,在自适应表单的​ Preview ​模式下预填充其余三个字段的值。 例如,如果您在​ 电子邮件 ​字段(基于本文的准备表单数据模型部分中的现有数据)中指定aya.tan@xyz.com并以跳出字段的方式指定,则其余三个字段​姓名电话号码​和​ 问题描述 ​会自动显示在自适应表单中。

您可以使用以下方式下载示例转换后的自适应表单:

获取文件

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