通過使用XML程序
Excel
Access以及ASP(Active Server Pages)
我們能幫助企業客戶訂單登陸流程化
節省客戶重復輸入數據的時間
並避免訂單登陸過程中發生錯誤
真正吸引客戶的是能夠減少重復性工作
節省時間和金錢的項目
如果能滿足上述三點要求
就可以進一步拉近客戶的關系
最近
我受聘對一個現有的訂單登陸系統進行升級
下面我將介紹客戶所面臨的問題
以及解決這些問題的方法
背景 客戶使用第三方系統完成訂單登陸
庫存維護和貨品計價
傳統的工作流程是這樣的
客戶向銷售員申報訂單
銷售員將訂單輸入系統產生訂購單
准備好發貨的時候
會產生紀錄
並將訂購貨品的數量從庫存目錄中扣除
給客戶產生一個發貨單
這個系統還包含了一個電子商務組件
為客戶提供網上交易
他們能通過公司的網站進行訂購
在這種情況下
銷售員不需要將訂單輸入系統
訂單將在網上商店裡產生
並在當天結束營業時上傳到系統
我的客戶還擁有兩家出版物供應商
他們也有自己的訂單登陸系統
訂單最初要登陸到其他系統
因此客戶將收到兩方的訂單通知
客戶通過Web浏覽器登陸到第一家供應商的系統申報訂購的項目
第二家供應商的訂單登陸系統則將向客戶發送電子郵件
在這兩種情況下
客戶公司的售貨員都必須重復地向訂單登陸系統鍵入訂單信息
初步估計
每個售貨員每周有超過
個小時在重復鍵入這些訂單
而我的任務是將訂單登陸流程自動化
從而減少重復鍵入數據的時間
並避免任何訂單登陸失誤
解決方案 將訂單登陸到系統有兩種方法
第一種是打開桌面客戶端並鍵入訂單
第二種則是在Web站點上登陸訂單
Web站點不直接連接到訂單登陸系統
每天
鍵入Web站點的訂單被寫成一個XML文件
它隨後又被拷貝到應用服務器上
接著被系統導入並產生訂單
這是我的突破口
我將從供應商的系統中獲取數據
產生一個和網站上相同schema的XML文件
接著將其加載到應用服務器上
我將我的想法傳遞給廠商
經核實
這種方法是有效的
在取得同意之後
我獲得了我需要的XML schema
我的解決方案的體系結構是簡單易行的
我將通過Microsoft Excel提供的功能打開第一家供應商網站的報告
通過Excel Object Model 提取訂單數據
並將數據傳遞給產生XML文件的組件
針對第二家供應商的方法相當簡單
我將在Microsoft Outlook中獲取其電子郵件
通過Outlook Object Model提取訂單數據
並將數據傳遞給產生XML文件的組件
這給了我第三種選擇
銷售員經可以在家中通過虛擬專用網(VPN)訪問我的客戶的系統
或許是從應用服務器向桌面客戶端傳遞的數據量過於龐大原因
訂單登陸程序並不能通過VPN連接運行
銷售員需要做的只是登陸訂單
我開發出一套簡單而高效的解決方案
在公司內部網創建一個簡單的表格
可以在這裡登陸訂單數據
Web服務器(運行ASP的Microsoft IIS)將從表格提取數據並傳遞到XML生成組件
(VPN和內部網被認為是足夠安全的
以至於打開訂單登陸程序不需要另外登陸
)
現在
我已經擁有三個相同的XML組件的前端
它們能將數據上載到訂單登陸系統
計劃的開始是建立XML組件
因為它是公共元素
能被Excel接口
Outlook接口以及ASP表格處理
XML組件 XML生成器將包含一個ORDER對象來描述訂單
這個對象將負責從前端接收訂單數據並輸入XML文件
出於簡單考慮
文件路徑被復雜地編碼
但非常容易被配置文件讀取
ORDER對象將包含描繪上述每個元素的屬性
它還將封裝一個LINEITEM的集合
描繪項目的細節
LINEITEM對象將包含描繪XML schema中相應數據的屬性
ORDER對象將接受訂單數據
創建所需的LINEITEM對象
通過訂單數據創建XML文件結構
並將此結構寫入一個XML文件
文件將根據訂單編號命名
這個編號是唯一的
它將由前端生成
擁有獨立的前綴和時間標記
XML組件編程 我在Visual Basic
編寫了這個組件
創建了一個ActiveX DLL工程並添加ORDER和LINEITEM對象的類
我首先處理ORDER類
為每個XML元素添加屬性
XML schema中的第一個元素是ORDER ordernum=
abcde
這個ORDER 類將包含一個叫做ordernum的屬性
在VB
中定義屬性需要
個步驟
首先
需要創建一個私有變量來存儲屬性值
接著
將ordernum屬性定義為長度為
個字符的字符串
Private strOrderNum as String
這個屬性對於所有Let屬性和Get屬性子程序類的用戶都是可訪問的
這些子程序將私有變量約束為公共屬性
並同時實現必須的有效性檢查
在這個情況下
保證訂單號碼是
個字符
這個類的用戶現在能通過下面的程序行來獲得或設置ordernum屬性
Dim objOrder as Order
Set objOrder = new Order
objOrder
OrderNum =
x
MsgBox objOrder
OrderNum
ORDER類也包含下面XML元素的屬性
clientNum: 對應CLIENT_NUM元素
orderDate: 對應DATE元素
clientCostCenter: 對應CLIENT_COST_CENTER元素
clientPurchaseOrder: 對應CLIENT_PURCHASE_ORDER元素
attn: 對應 ATTN 元素
shipTrackNo: 對應SHIPPING元素
shipCompany: 對應SHIPPING元素
company屬性
shipAddrLine
: 對應SHIPPING_LOC 元素中的ADDR_LINE_
元素
shipAddrLine
: 對應SHIPPING_LOC 元素中的ADDR_LINE_
元素
shipAddrCity: 對應SHIPPING_LOC 元素中的ADDR_CITY元素
shipAddrState: 對應SHIPPING_LOC 元素中的ADDR_STATE元素
shipAddrZipCode: 對應SHIPPING_LOC 元素中的ADDR_ZIP元素
comments: 對應COMMENTS元素
LINE_ITEMS屬性的實現略微有些不同
ORDER類將包含一個lineItems屬性
它搜集LINEITEMS對象
首先
存儲集合的私有變量聲明如下
Private colLineItems as Collection
接著
將創建一個添加項目的子程序
它能將LINEITEM添加到colLineItems集合中去
LINEITEM類本身和ORDER類的實現方法相同
包含對應以下XML元素的屬性
itemCatalog: 對應 ITEM 元素
catalog屬性
itemID: 對應ITEM元素
description: 對應DESCRIPTION元素
unitPrice: 對應UNIT_PRICE元素
quantity: 對應QUANTITY元素
接下來的一步
我已經定義了為完成描述訂單的XML文件所需的所有組件的屬性
今後
我將會把重點放到建立Excel 接口
通過Excel Object Model 提取第一家供應商訂單數據
並將數據傳遞給XML文件
From:http://tw.wingwit.com/Article/os/youhua/201311/10875.html