教程:创建表单数据模型

为交互通信创建表单数据模型

04-create-form-data-model-main

本教程是创建您的第一个交互式通信系列中的一个步骤。 建议按照时间顺序按照系列来了解、执行和演示完整的教程用例。

关于教程

AEM Forms数据集成模块允许您从AEM用户用户档案、RESTful Web服务、基于SOAP的Web服务、OData服务和关系数据库等不同的后端数据源创建表单数据模型。 您可以在表单数据模型中配置数据模型对象和服务,并将其与自适应表单关联。 自适应表单字段绑定到数据模型对象属性。 这些服务使您能够预填自适应表单并将提交的表单数据写入数据模型对象。

有关表单数据集成和表单数据模型的详细信息,请参阅AEM Forms数据集成

本教程将指导您逐步准备、创建、配置表单数据模型并将其与交互式通信相关联。 在本教程的结尾,您将能够:

表单数据模型类似于以下内容:

form_data_model_callouts

A.配 置的数 据源B. 数据源 模式 C.可 用服务 D.Data 模型 对象E.Configured Services

前提条件

在开始之前,请确保您具有以下各项:

第1步:设置数据库

数据库是创建交互式通信的必备工具。 本教程使用数据库来显示Interactive Communications的表单数据模型和持久性功能。 设置包含客户、帐单和调用表的数据库。
下图说明了客户表的示例数据:

sample_data_cust

使用以下DDL语句在数据库中创建​customer​表。

CREATE TABLE `customer` (
   `mobilenum` int(11) NOT NULL,
   `name` varchar(45) NOT NULL,
   `address` varchar(45) NOT NULL,
   `alternatemobilenumber` int(11) DEFAULT NULL,
   `relationshipnumber` int(11) DEFAULT NULL,
   `customerplan` varchar(45) DEFAULT NULL,
   PRIMARY KEY (`mobilenum`),
   UNIQUE KEY `mobilenum_UNIQUE` (`mobilenum`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

使用以下DDL语句在数据库中创建​bills​表。

CREATE TABLE `bills` (
   `billplan` varchar(45) NOT NULL,
   `latepayment` decimal(4,2) NOT NULL,
   `monthlycharges` decimal(4,2) NOT NULL,
   `billdate` date NOT NULL,
   `billperiod` varchar(45) NOT NULL,
   `prevbal` decimal(4,2) NOT NULL,
   `callcharges` decimal(4,2) NOT NULL,
   `confcallcharges` decimal(4,2) NOT NULL,
   `smscharges` decimal(4,2) NOT NULL,
   `internetcharges` decimal(4,2) NOT NULL,
   `roamingnational` decimal(4,2) NOT NULL,
   `roamingintnl` decimal(4,2) NOT NULL,
   `vas` decimal(4,2) NOT NULL,
   `discounts` decimal(4,2) NOT NULL,
   `tax` decimal(4,2) NOT NULL,
   PRIMARY KEY (`billplan`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

使用以下DDL语句在数据库中创建​调用​表。

CREATE TABLE `calls` (
   `mobilenum` int(11) DEFAULT NULL,
   `calldate` date DEFAULT NULL,
   `calltime` varchar(45) DEFAULT NULL,
   `callnumber` int(11) DEFAULT NULL,
   `callduration` varchar(45) DEFAULT NULL,
   `callcharges` decimal(4,2) DEFAULT NULL,
   `calltype` varchar(45) DEFAULT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

呼叫​表包括呼叫日期、呼叫时间、呼叫号码、呼叫持续时间和呼叫费用等呼叫详细信息。 customer​表使用“移动号码”(mobilenum)字段链接到调用表。 对于​customer​表中列出的每个移动号码,调用​表中有多个记录。 例如,您可以通过引用​调用​表来检索​1457892541​移动号码的调用详细信息。

帐单​表包括帐单详细信息,如帐单日期、帐单期间、每月费用和通话费。 customer​表使用“清单计划”字段链接到​bills​表。 在​customer​表中有一个与每个客户关联的计划。 清单​表包含所有现有计划的定价详细信息。 例如,您可以从​customer​表中检索​Sarah​的计划详细信息,并使用这些详细信息从​bills​表中检索定价详细信息。

第2步:将MySQL数据库配置为数据源

您可以配置不同类型的数据源以创建表单数据模型。 在本教程中,您将配置已配置并填充示例数据的MySQL数据库。 有关其他受支持数据源以及如何配置数据源的信息,请参见AEM Forms数据集成

执行以下操作以配置MySQL数据库:

  1. 将MySQL数据库的JDBC驱动程序作为OSGi捆绑安装:

    1. 以管理员身份登录到AEM Forms作者实例,然后转到AEM Web控制台包。 默认URL为http://localhost:4502/system/console/bundles
    2. 点按​安装/更新。 将显示​上载/安装捆绑包​对话框。
    3. 点按​选择文件​以浏览并选择MySQL JDBC驱动程序OSGi捆绑。 选择​开始包​和​刷新包,然后点按​安装​或​更新。 确保Oracle公司的MySQL JDBC驱动程序处于活动状态。 已安装驱动程序。
  2. 将MySQL数据库配置为数据源:

    1. 转到位于http://localhost:4502/system/console/configMgr的AEM Web控制台。

    2. 找到​Apache Sling Connection池化DataSource​配置。 点击以在编辑模式下打开配置。

    3. 在配置对话框中,指定以下详细信息:

      • 数据源名称: 您可以指定任何名称。例如,指定​MySQL
      • DataSource服务属性名称:指定包含DataSource名称的服务属性的名称。将数据源实例注册为OSGi服务时指定它。 例如,datasource.name
      • JDBC驱动程序类:指定JDBC驱动程序的Java类名称。对于MySQL数据库,指定​com.mysql.jdbc.Driver
      • JDBC连接URI:指定数据库的连接URL。对于在端口3306和模式电话上运行的MySQL数据库,URL为:jdbc:mysql://[server]:3306/teleca?autoReconnect=true&useUnicode=true&characterEncoding=utf-8
      • 用户名: 数据库的用户名。需要启用JDBC驱动程序以建立与数据库的连接。
      • 口令: 数据库的口令。需要启用JDBC驱动程序以建立与数据库的连接。
      • 借阅测试:启 用“ 借阅测试 ”选项。
      • 返回时测试: 启用 返回时 测试。
      • 验证查询: 指定SQL SELECT查询以验证池中的连接。查询必须至少返回一行。 例如,选择*来自customer
      • 事务隔离:将该值设 置为READ_COMMITTED

    保留默认值values的其他属性,然后点按​保存

    将创建与以下配置类似的配置。

    apache_configuration

第3步:创建表单数据模型

AEM Forms为从配置数据源创建表单数据模式l提供直观的用户界面。 您可以在表单数据模型中使用多个数据源。 对于本教程中的用例,您将使用MySQL作为数据源。

执行以下操作以创建表单数据模型:

  1. 在AEM作者实例中,导航到​Forms > 数据集成

  2. 点按​创建 > 表单数据模型

  3. 在“创建表单数据模型”向导中,为表单数据模型指定​名称。 例如,FDM_Create_First_IC。 点按​下一步

  4. 选择数据源屏幕列表所有已配置的数据源。 选择​MySQL​数据源并点按​创建

    fdm_mysql_data_source

  5. 单击​完成。将创建​FDM_Create_First_IC​表单数据模型。

第4步:配置表单数据模型

配置表单数据模型包括:

添加数据模型对象和服务

  1. 在AEM作者实例上,导航到​Forms > 数据集成。 默认URL为http://localhost:4502/aem/forms.html/content/dam/formsanddocuments-fdm

  2. 此处列出您之前创建的​FDM_Create_First_IC​表单数据模型。 选择它并点按​编辑

    所选数据源​MySQL​显示在​数据源​窗格中。

    mysql_fdm

  3. 展开​MySQL​数据源树。 从​teleca​模式中选择以下数据模型对象和服务:

    • 数据模型对象:

      • 帐单
      • 呼叫
      • 客户
    • 服务:

      • 获取
      • 更新

    点按​添加选定项,将选定的数据模型对象和服务添加到表单数据模型。

    select_data_model_objs_services

    清单、调用和客户数据模型对象显示在​模型​选项卡的右侧窗格中。 获取和更新服务显示在​服务​选项卡中。

    data_model_objects

为数据模型对象创建计算的子属性

计算属性是根据规则或表达式计算其值的属性。 使用规则,您可以将计算属性的值设置为文本字符串、数字、数学表达式的结果或表单数据模型中其他属性的值。

根据用例,使用以下数学表达式在​bills​数据模型对象中创建​usagecharges​子计算属性:

  • 使用费=电话费+电话会议费+手机短信费+移动互联网费+漫游国家+漫游国际+ VAS(所有这些属性都存在于帐单数据模型对象中)

    有关​usagecharges​子计算属性的详细信息,请参阅规划交互通信

执行以下步骤为清单数据模型对象创建计算的子属性:

  1. 选中​bills​数据模型对象顶部的复选框以将其选中,然后点按​创建子属性

  2. 在​创建子属性​窗格中:

    1. 输入​usagecharges​作为子属性的名称。
    2. 启用​Computed
    3. 选择​浮动​作为类型,然后点按​完成​将子属性添加到​清单​数据模型对象。

    create_child_property_float

  3. 点按​编辑规则​以打开规则编辑器。

  4. 点按​创建。将打开​设置值​规则窗口。

  5. 从选择选项下拉框中,选择​数学表达式

    usage_charges_rule_editor

  6. 在数学表达式中,选择​callcarges​和​confcallcarges​分别作为第一和第二对象。 选择​加号​作为运算符。 在数学表达式中点击​扩展表达式​以添加​smscargesinternetcargesroamingnationalroamingintnl​和​vas​对象到表达式。

    下图描述了规则编辑器中的数学表达式:

    usage_charges_rule_all

  7. 点按​完成。规则在规则编辑器中创建。

  8. 点按​关闭​以关闭“规则编辑器”窗口。

在数据模型对象之间添加关联

定义数据模型对象后,您可以在它们之间构建关联。 关联可以是一对一或一对多。 例如,可以有多个与某个员工关联的依赖项。 它称为一对多关联,在连接相关数据模型对象的线上由1:n描述。 但是,如果关联为给定的员工ID返回唯一的员工名称,则它称为一对一关联。

在数据源中向表单数据模型添加关联数据模型对象时,它们的关联会保留并显示为通过箭头线连接。

根据用例,在数据模型对象之间创建以下关联:

协会 数据模型对象
1:n 客户:呼叫(在每月账单中,可以与客户关联多个呼叫)
1:1 客户:帐单(一个帐单与特定月份的客户关联)

请执行以下步骤以创建数据模型对象之间的关联:

  1. 选中​customer​数据模型对象顶部的复选框以将其选中,然后点按​添加关联。 将打开​添加关联​属性窗格。

  2. 在​添加关联​窗格中:

    • 指定关联的标题。 它是可选字段。
    • 从​类型​下拉列表中选择​一至多
    • 从​模型对象​下拉列表中选择​调用
    • 从​服务​下拉列表中选择​get
    • 点按​添加​以将​customer​数据模型对象链接到使用属性的​调用​数据模型对象。 根据用例,调用数据模型对象必须链接到客户数据模型对象中的移动号码属性。 添加参数​对话框打开。

    add_association

  3. 在​添加参数​对话框中:

    • 从​名称​下拉列表中选择​mobilenum。 移动号码属性是客户中可用并调用数据模型对象的公用属性。 结果,它用于在客户和调用数据模型对象之间创建关联。

      对于客户数据模型对象中的每个可用移动号码,调用表中有多个可用的调用记录。

    • 为参数指定可选标题和说明。

    • 从​绑定到​下拉列表中选择​customer

    • 从​绑定值​下拉列表中选择​mobilenum

    • 点按​添加

    add_association_argument

    mobilenum属性显示在​Arguments​部分。

    add_argument_association

  4. 点按​完成,在客户和调用数据模型对象之间创建1:n关联。

    在创建客户与调用数据模型对象之间的关联后,在客户与清单数据模型对象之间创建1:1关联。

  5. 选中​customer​数据模型对象顶部的复选框以将其选中,然后点按​添加关联。 将打开​添加关联​属性窗格。

  6. 在​添加关联​窗格中:

    • 指定关联的标题。 它是可选字段。

    • 从​类型​下拉列表中选择​一到一

    • 从​模型对象​下拉列表中选择​清单

    • 从​服务​下拉列表中选择​getbillplan​属性是清单表的主键,已在​参数​部分中可用。

      清单和客户数据模型对象分别使用开单计划(清单)和客户计划(客户)属性进行链接。 在这些属性之间创建一个绑定,以检索MySQL数据库中任何可用客户的计划详细信息。

    • 从​绑定到​下拉列表中选择​customer

    • 从​绑定值​下拉列表中选择​customerplan

    • 点按​完成​以在开单计划属性和自定义计划属性之间创建绑定。

    add_association_customer_bills

    下图描绘了数据模型对象与用于创建它们之间关联的属性之间的关联:

    fdm_associations

编辑数据模型对象属性

在创建客户与其他数据模型对象之间的关联后,编辑客户属性以定义从数据模型对象检索数据的属性。 根据用例,使用移动号码作为属性从客户数据模型对象检索数据。

  1. 选中​customer​数据模型对象顶部的复选框以将其选中,然后点按​编辑属性。 将打开​编辑属性​窗格。

  2. 将​customer​指定为​顶级模型对象

  3. 从​读取服务​下拉列表中选择​get

  4. 在​参数​部分中:

    • 从​绑定到​下拉列表中选择​请求属性
    • 指定​mobilenum​作为绑定值。
  5. 从​写入​服务下拉列表中选择​更新

  6. 在​参数​部分中:

    • 对于​mobilenum​属性,从​绑定到​下拉列表中选择​customer
    • 从​绑定值​下拉列表中选择​mobilenum
  7. 点按​完成​以保存属性。

    configure_services_customer

  8. 选中​调用​数据模型对象顶部的复选框以将其选中,然后点按​编辑属性。 将打开​编辑属性​窗格。

  9. 为​调用​数据模型对象禁用​顶级模型对象

  10. 点按​完成

    重复步骤8 - 10,为​bills​数据模型对象配置属性。

配置服务

  1. 转到​服务​选项卡。

  2. 选择​get​服务,然后点按​编辑属性。 将打开​编辑属性​窗格。

  3. 在​编辑属性​窗格中:

    • 输入可选标题和说明。
    • 从​输出模型对象​下拉列表中选择​customer
    • 点按​完成​以保存属性。

    edit_properties_get_details

  4. 选择​update​服务,然后点按​编辑属性。 将打开​编辑属性​窗格。

  5. 在​编辑属性​窗格中:

    • 输入可选标题和说明。
    • 从​输入模型对象​下拉列表中选择​customer
    • 点按​完成
    • 点按​保存​以保存表单数据模型。

    update_service_properties

第5步:测试表单数据模型和服务

您可以测试数据模型对象和服务,以验证表单数据模型配置是否正确。

执行以下操作以运行测试:

  1. 转至​Model​选项卡,选择​customer​数据模型对象,然后点按​测试模型对象

  2. 在​测试表单数据模型​窗口中,从​选择模型/服务​下拉列表中选择​读取模型对象

  3. 在​Input​部分,为配置的MySQL数据库中存在的​mobilenum​属性指定一个值,然后点按​测试

    将获取与指定mobilenum属性关联的客户详细信息并在“输出”部分中显示,如下所示。 关闭对话框。

    test_data_model

  4. 转到​服务​选项卡。

  5. 选择​get​服务并点按​测试服务。

  6. 在​Input​部分,为配置的MySQL数据库中存在的​mobilenum​属性指定一个值,然后点按​测试

    将获取与指定mobilenum属性关联的客户详细信息并在“输出”部分中显示,如下所示。 关闭对话框。

    test_service

编辑并保存示例数据

表单数据模型编辑器允许您为表单数据模型中的所有数据模型对象属性(包括计算属性)生成示例数据。 它是一组随机值,它们符合为每个属性配置的数据类型。 您还可以编辑和保存数据,即使重新生成示例数据,数据也会保留。

执行以下操作以生成、编辑和保存示例数据:

  1. 在表单数据模型页上,点按​编辑示例数据。 它会在“编辑示例数据”窗口中生成并显示示例数据。

    edit_sample_data

  2. 在​编辑示例数据​窗口中,根据需要编辑数据,然后点按​保存。 关闭窗口。

在此页面上