使用 AEM 工作流实现自适应表单与数据库集成

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

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

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

数据库集成

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

先决条件

  • 设置AEM 6.4或6.5创作实例
  • 为您的AEM实例安装最新Service Pack
  • 最新版本的AEM Forms附加组件包
  • 配置Automated forms conversion服务
  • 设置数据库。 示例实现中使用的数据库是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. 在“导出方式”列中,检查包是否由任何包导出。 如果包未被任何包导出,则继续。
  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数据集成允许您配置不同的数据源并将其连接到不同的数据源。 使用转换过程生成自适应表单后,您可以根据表单数据模型、XSD或JSON架构定义表单模型。 您可以使用数据库、Microsoft Dynamics或任何其他第三方服务来创建表单数据模型。

本教程使用MySQL数据库作为创建表单数据模型的源。 在数据库中创建架构,并根据自适应表单中可用的字段将​contacts​表添加到架构中。

示例数据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实例与数据库之间的连接

执行以下配置步骤以在AEM实例与MYSQL数据库之间创建连接:

  1. 转到位于http://server:port/system/console/configMgr的AEM Web控制台配置页面。

  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

创建表单数据模型

将MYSQL配置为数据源后,请执行以下步骤以创建表单数据模型:

  1. 在AEM创作实例中,导航到​Forms > Data Integrations

  2. 点按 Create > Form Data Model.

  3. 在​Create Form Data Model​向导中,指定​workflow_submit​作为表单数据模型的名称。 点按 Next.

  4. 选择您在上一部分中配置的MYSQL数据源,然后点按​Create

  5. 点按​Edit​并展开左窗格中列出的数据源,以选择​contacts​表、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绑定的自适应表单

使用Automated forms conversion服务将 联系我们表单转换为具有数据绑定的自适应表单。 确保在生成自适应表单时不选中​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数据的工作流模型

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

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

    调用表单数据模型服务

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

配置自适应表单提交

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

  1. 选择​Forms & Documents​的​output​文件夹中提供的已转换的“联系我们”表单,然后点按​Edit

  2. 点按​Form Container,然后点按配置,以打开自适应表单属性。

  3. 在​Submission​部分中,从​Submit Action​下拉列表中选择​Invoke an AEM workflow,选择在上一部分中创建的工作流模型,然后在​Data File Path​字段中指定​data.xml

  4. 点按Save以保存属性。

  5. 点按​Preview,在自适应表单字段中输入值,然后点按​Submit。 现在,提交的值显示在MYSQL数据库表中,而不是​crx-repository​中。

配置自适应表单以预填充数据库中的值

请执行以下步骤,以根据表中定义的主键值(本例中为“电子邮件”)配置自适应表单,从MYSQL数据库中预填充值:

  1. 点按自适应表单中的​E-mail​字段,然后点按编辑规则

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

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

  4. 在​Input​部分中选择​E-mail,在​Output​部分选择表单数据模型的其余三个字段:名称电话号码​和​问题说明。 点按​Done​以保存设置。

    配置电子邮件预填充设置

    因此,根据MYSQL数据库中的现有电子邮件条目,您可以在自适应表单的​Preview​模式下预填其余三个字段的值。 例如,如果您在​E-mail​字段中指定aya.tan@xyz.com(基于本文Prepare form data model部分中的现有数据)并跳出该字段,则其余三个字段(Name电话号码​和​问题说明)会自动显示在自适应表单中。

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

获取文件

在此页面上