OpenEdge ABL 语言客户关系管理系统实战
OpenEdge ABL(Advanced Business Language)是Progress公司开发的一种高级业务语言,它广泛应用于企业级应用开发中。本文将围绕OpenEdge ABL语言在客户关系管理系统(CRM)开发中的应用,通过实战案例,展示如何使用OpenEdge ABL语言实现CRM系统的核心功能。
OpenEdge ABL 简介
OpenEdge ABL是一种面向对象的编程语言,它结合了高级编程语言的特点,如面向对象、过程式编程和函数式编程。OpenEdge ABL具有以下特点:
- 面向对象:支持类、对象、继承、封装和多态等面向对象编程概念。
- 过程式编程:支持传统的过程式编程风格,如循环、条件语句等。
- 函数式编程:支持函数式编程风格,如高阶函数、递归等。
- 跨平台:可以在Windows、Linux、Unix等多种操作系统上运行。
- 强大的数据库支持:与Progress公司的Progress OpenEdge数据库紧密集成。
CRM系统概述
客户关系管理系统(CRM)是一种帮助企业管理客户信息、销售、营销和服务等业务流程的应用软件。一个典型的CRM系统通常包括以下功能模块:
- 客户信息管理
- 销售管理
- 营销管理
- 服务管理
- 报表分析
实战案例:客户信息管理模块
以下是一个使用OpenEdge ABL语言实现的客户信息管理模块的示例代码。
1. 数据库设计
我们需要设计一个客户信息表(Customer):
sql
CREATE TABLE Customer (
CustomerID INT NOT NULL,
CustomerName VARCHAR(100),
ContactName VARCHAR(100),
Address VARCHAR(255),
City VARCHAR(100),
PostalCode VARCHAR(10),
Country VARCHAR(50),
Phone VARCHAR(20),
PRIMARY KEY (CustomerID)
);
2. ABL类设计
接下来,我们定义一个Customer类来表示客户信息:
ABL
CLASS Customer
DATA CustomerID INT;
DATA CustomerName VARCHAR(100);
DATA ContactName VARCHAR(100);
DATA Address VARCHAR(255);
DATA City VARCHAR(100);
DATA PostalCode VARCHAR(10);
DATA Country VARCHAR(50);
DATA Phone VARCHAR(20);
PROCEDURE Initialize()
CustomerID = 0;
CustomerName = '';
ContactName = '';
Address = '';
City = '';
PostalCode = '';
Country = '';
Phone = '';
END PROCEDURE;
PROCEDURE Save()
IF CustomerID = 0 THEN
INSERT INTO Customer (CustomerName, ContactName, Address, City, PostalCode, Country, Phone)
VALUES (CustomerName, ContactName, Address, City, PostalCode, Country, Phone);
CustomerID = GETID();
ELSE
UPDATE Customer SET CustomerName = CustomerName, ContactName = ContactName, Address = Address, City = City, PostalCode = PostalCode, Country = Country, Phone = Phone WHERE CustomerID = CustomerID;
END-IF;
END PROCEDURE;
PROCEDURE Delete()
DELETE FROM Customer WHERE CustomerID = CustomerID;
END PROCEDURE;
END CLASS;
3. 客户信息管理界面
下面是一个简单的客户信息管理界面,使用OpenEdge ABL的WebSpeed技术实现:
ABL
CLASS CustomerForm
DATA customer Customer;
PROCEDURE Initialize()
customer.Initialize();
END PROCEDURE;
PROCEDURE SaveCustomer()
customer.CustomerName = CustomerName;
customer.ContactName = ContactName;
customer.Address = Address;
customer.City = City;
customer.PostalCode = PostalCode;
customer.Country = Country;
customer.Phone = Phone;
customer.Save();
END PROCEDURE;
PROCEDURE DeleteCustomer()
customer.CustomerID = CustomerID;
customer.Delete();
END PROCEDURE;
END CLASS;
4. WebSpeed页面
我们创建一个WebSpeed页面来展示和管理客户信息:
```ABL
<%@ LANGUAGE="ABL" %>
<%@ PAGE TITLE="Customer Management" %>
<%@ PAGE LANGUAGE="ABL" %>
<%@ PAGE FRAMEWORK="WebSpeed" %>
<%@ PAGE FRAMEWORK_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE="WebSpeed" %>
<%@ PAGE FRAMEWORK_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS="WebSpeedPage" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH="WebSpeedPage" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE="WebSpeedPage" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE="WebSpeedPage" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE="WebSpeedPage" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE="WebSpeedPage" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE="WebSpeedPage" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE="WebSpeedPage" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE="WebSpeedPage" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE="WebSpeedPage" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION="10.2" %>
<%@ PAGE FRAMEWORK_TYPE_CLASS_PATH_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE_VERSION_TYPE
Comments NOTHING