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

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

如果选择生成无数据绑定的自适应表单,则可以在转换后将已转换的自适应表单与表单数据模型、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//[主机]:[端口]/[架构名称]
    用户名 用于对数据库表进行身份验证和执行操作的用户名
    密码 与用户名关联的密码
    事务隔离 读取已提交
    最大活动连接数 1000
    最大空闲连接数 100
    最小空闲连接数 10
    初始大小 10
    最大等待 100000
    借阅测试 已选中
    空闲时测试 已选中
    验证查询 示例值为SELECT 1(mysql),从dual(oracle)中选择1,选择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 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 ​字段中创建的表单数据模型,并从​ 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 ​节中,为表单数据模型参数提供以下值:

    调用表单数据模型服务

    请注意,表单数据模型字段(例如,contactact点名称)映射到​ 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数据库预填充值(本例中为Email):

  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