OpenEdge ABL 语言 客户关系管理系统实战

OpenEdge ABL阿木 发布于 20 天前 3 次阅读


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