<AppML> 案例研究 - 应用程序模型


此案例研究演示了如何构建一个完整的 <AppML> 互联网应用程序,具有针对数据库中的若干表进行信息列举、编辑和搜索的功能。

应用程序模型

在本章中,我们将为数据库中的 Customers 表建立一个完整的应用程序模型。

<AppML> 过滤器

如需允许过滤 <AppML> 数据,只需简单地向模型添加一个 <filters> 元素:

实例:

  1. <filters>
    <query>
    <field label="Customer">CustomerName</field>
    <field>City</field>
    <field>Country</field>
    </query>
    <order>
    <field label="Customer">CustomerName</field>
    <field>City</field>
    <field>Country</field>
    </order>
    </filters>

如需全面了解,请参阅 <AppML> 参考手册。

<AppML> 更新

如需允许更新 <AppML> 数据,只需简单地向模型添加一个 <update> 元素:

实例:

  1. <update>
    <item><name>LastName</name></item>
    <item><name>FirstName</name></item>
    <item><name>BirthDate</name></item>
    <item><name>Photo</name></item>
    <item><name>Notes</name></item>
    </update>

且向 <database> 元素添加一个 <maintable> 和 <keyfield> 元素:

实例:

  1. <maintable>Customers</maintable>
    <keyfield>CustomerID</keyfield>

如需全面了解,请参阅 <AppML> 参考手册。

<AppML> 安全

您可以通过向 <AppML> 标签添加一个 security 属性来很容易地为 <AppML> 模型添加安全。

实例:

  1. <appml security="admin">

在上面的实例中,只有用户登录成为用户组 "admin" 的会员才能访问模型。

如需为 <update> 元素设置安全,只需简单地向 <update> 元素添加一个 security 属性:

实例:

  1. <update security="admin">
    <item><name>LastName</name></item>
    <item><name>FirstName</name></item>
    <item><name>BirthDate</name></item>
    <item><name>Photo</name></item>
    <item><name>Notes</name></item>
    </update>

完整的 Customers 模型

在本章中,我们将为数据库中的每个表设立一个应用程序模型。

创建一个名为 Models 的新文件夹。在 Models 文件夹中,为每个应用程序创建一个模型。

模型:Customers.xml

  1. <appml security="">

    <datasource>
    <database>
    <connection>Demo</connection>
    <maintable>Customers</maintable>
    <keyfield>CustomerID</keyfield>
    <sql>SELECT * FROM Customers</sql>
    <orderby>CustomerName,City,Country</orderby>
    </database>
    </datasource>

    <filters>
    <query>
    <field label="Customer">CustomerName</field>
    <field>City</field>
    <field>Country</field>
    </query>
    <order>
    <field label="Customer">CustomerName</field>
    <field>City</field>
    <field>Country</field>
    </order>
    </filters>

    <update security="admin">
    <item><name>CustomerName</name></item>
    <item><name>ContactName</name></item>
    <item><name>Address</name></item>
    <item><name>PostalCode</name></item>
    <item><name>City</name></item>
    <item><name>Country</name></item>
    </update>

    </appml>

模型视图

创建一个模型视图,把它保存为 Demo_Model.html,并尝试一下:

视图:Demo_Model.htm

  1. <h1>Customers</h1>
    <div id="List01"></div>

    <script src="appml.js"></script>
    <script>
    customers=new AppML("appml.htmlx","Models/Customers");
    customers.run("List01");
    </script>
 

现在把所有的合并在一起

然后,通过少量 JavaScript 编码,为所有模型创建一个测试页面:

Demo_Model_Views.htm

  1. <!DOCTYPE html>
    <html>
    <head>
    <link rel="stylesheet" href="appml.css" />
    </head>

    <body>
    <h1>Demo Applications</h1>

    <button onclick='myOpen("Customers")'>Customers</button>
    <button onclick='myOpen("Products")'>Products</button>
    <button onclick='myOpen("Suppliers")'>Suppliers</button>
    <button onclick='myOpen("Shippers")'>Shippers</button>
    <button onclick='myOpen("Categories")'>Categories</button>
    <button onclick='myOpen("Employees")'>Employees</button>
    <button onclick='myOpen("Orders")'>Orders</button>
    <button onclick='myOpen("OrderDetails")'>OrderDetails</button>
    <br><br>

    <div id="Place01"></div>

    <script src="appml.js"></script>
    <script>
    function myOpen(pname)
    {
    var app_obj
    app_obj=new AppML("appml.php","Models/" + pname);
    app_obj.run("Place01");
    }
    </script>

    </body>
    </html>