OpenEdge ABL 语言供应商评估系统实战
OpenEdge ABL(Advanced Business Language)是Progress公司开发的一种高级业务语言,广泛应用于企业级应用开发。本文将围绕OpenEdge ABL语言,结合供应商评估系统实战,探讨如何使用该语言进行系统开发。
1. 系统需求分析
在开始开发之前,我们需要对供应商评估系统进行需求分析。以下是一个简单的供应商评估系统需求:
- 供应商信息管理:包括供应商的基本信息、联系信息、信用等级等。
- 评估指标管理:定义评估指标,如产品质量、交货时间、售后服务等。
- 评估结果管理:记录供应商的评估结果,包括各项指标的得分。
- 报表生成:生成供应商评估报告。
2. 系统设计
根据需求分析,我们可以将系统分为以下几个模块:
- 供应商信息管理模块
- 评估指标管理模块
- 评估结果管理模块
- 报表生成模块
3. 数据库设计
为了存储供应商信息、评估指标和评估结果,我们需要设计以下数据库表:
- 供应商表(Suppliers):存储供应商的基本信息。
- 评估指标表(EvaluationIndicators):存储评估指标信息。
- 评估结果表(EvaluationResults):存储供应商的评估结果。
4. OpenEdge ABL 代码实现
4.1 供应商信息管理模块
以下是一个简单的供应商信息管理模块的OpenEdge ABL代码示例:
ABL
CLASS SupplierInfo
DATA SOURCE Suppliers
DATA SUPPLIERID LIKE [CHAR(10)] PRIMARY KEY
DATA SUPPLIERNAME LIKE [CHAR(50)]
DATA CONTACTNAME LIKE [CHAR(50)]
DATA PHONE LIKE [CHAR(20)]
DATA CREDITRATING LIKE [CHAR(1)]
PROCEDURE AddSupplier(IN supplierName LIKE [CHAR(50)], IN contactName LIKE [CHAR(50)], IN phone LIKE [CHAR(20)], IN creditRating LIKE [CHAR(1)])
INSERT INTO Suppliers(SUPPLIERID, SUPPLIERNAME, CONTACTNAME, PHONE, CREDITRATING)
VALUES(SUPPLIERID, supplierName, contactName, phone, creditRating)
END-P
PROCEDURE UpdateSupplier(IN supplierId LIKE [CHAR(10)], IN supplierName LIKE [CHAR(50)], IN contactName LIKE [CHAR(50)], IN phone LIKE [CHAR(20)], IN creditRating LIKE [CHAR(1)])
UPDATE Suppliers
SET SUPPLIERNAME = supplierName, CONTACTNAME = contactName, PHONE = phone, CREDITRATING = creditRating
WHERE SUPPLIERID = supplierId
END-P
PROCEDURE DeleteSupplier(IN supplierId LIKE [CHAR(10)])
DELETE FROM Suppliers WHERE SUPPLIERID = supplierId
END-P
END-CLASS
4.2 评估指标管理模块
以下是一个简单的评估指标管理模块的OpenEdge ABL代码示例:
ABL
CLASS EvaluationIndicator
DATA SOURCE EvaluationIndicators
DATA INDICATORID LIKE [CHAR(10)] PRIMARY KEY
DATA INDICATORNAME LIKE [CHAR(50)]
DATA WEIGHT LIKE [DECIMAL(5,2)]
PROCEDURE AddIndicator(IN indicatorName LIKE [CHAR(50)], IN weight LIKE [DECIMAL(5,2)])
INSERT INTO EvaluationIndicators(INDICATORID, INDICATORNAME, WEIGHT)
VALUES(INDICATORID, indicatorName, weight)
END-P
PROCEDURE UpdateIndicator(IN indicatorId LIKE [CHAR(10)], IN indicatorName LIKE [CHAR(50)], IN weight LIKE [DECIMAL(5,2)])
UPDATE EvaluationIndicators
SET INDICATORNAME = indicatorName, WEIGHT = weight
WHERE INDICATORID = indicatorId
END-P
PROCEDURE DeleteIndicator(IN indicatorId LIKE [CHAR(10)])
DELETE FROM EvaluationIndicators WHERE INDICATORID = indicatorId
END-P
END-CLASS
4.3 评估结果管理模块
以下是一个简单的评估结果管理模块的OpenEdge ABL代码示例:
ABL
CLASS EvaluationResult
DATA SOURCE EvaluationResults
DATA RESULTID LIKE [CHAR(10)] PRIMARY KEY
DATA SUPPLIERID LIKE [CHAR(10)]
DATA INDICATORID LIKE [CHAR(10)]
DATA SCORE LIKE [DECIMAL(5,2)]
PROCEDURE AddResult(IN supplierId LIKE [CHAR(10)], IN indicatorId LIKE [CHAR(10)], IN score LIKE [DECIMAL(5,2)])
INSERT INTO EvaluationResults(RESULTID, SUPPLIERID, INDICATORID, SCORE)
VALUES(RESULTID, supplierId, indicatorId, score)
END-P
PROCEDURE UpdateResult(IN resultId LIKE [CHAR(10)], IN score LIKE [DECIMAL(5,2)])
UPDATE EvaluationResults
SET SCORE = score
WHERE RESULTID = resultId
END-P
PROCEDURE DeleteResult(IN resultId LIKE [CHAR(10)])
DELETE FROM EvaluationResults WHERE RESULTID = resultId
END-P
END-CLASS
4.4 报表生成模块
以下是一个简单的报表生成模块的OpenEdge ABL代码示例:
ABL
CLASS ReportGenerator
PROCEDURE GenerateReport(IN supplierId LIKE [CHAR(10)])
DECLARE variable reportText LIKE [CHAR(1000)]
DECLARE variable indicatorName LIKE [CHAR(50)]
DECLARE variable score LIKE [DECIMAL(5,2)]
DECLARE indicatorCursor CURSOR FOR SELECT INDICATORNAME, SCORE FROM EvaluationResults WHERE SUPPLIERID = supplierId
OPEN indicatorCursor
DO WHILE indicatorCursor%NOTFOUND
reportText = reportText & '供应商名称: ' & supplierId & CRLF
reportText = reportText & '评估指标及得分: ' & indicatorName & ' - ' & score & CRLF
END-DO
CLOSE indicatorCursor
PRINT reportText
END-P
END-CLASS
5. 总结
本文通过OpenEdge ABL语言,结合供应商评估系统实战,展示了如何进行系统开发。在实际开发过程中,我们需要根据具体需求对代码进行修改和扩展。OpenEdge ABL语言提供了丰富的功能,可以帮助我们快速开发出高质量的企业级应用。
Comments NOTHING