江西广告网
标题:
XML组件技术让客户订单系统流程化
[打印本页]
作者:
蓝信子
时间:
2008-12-24 11:58
标题:
XML组件技术让客户订单系统流程化
通过使用XML程序,Excel,Access以及ASP(Active Server Pages),我们能帮助企业客户订单登陆流程化,节省客户重复输入数据的时间,并避免订单登陆过程中发生错误。真正吸引客户的是能够减少重复性工作,节省时间和金钱的项目。如果能满足上述三点要求,就可以进一步拉近客户的关系。 最近,我受聘对一个现有的订单登陆系统进行升级,下面我将介绍客户所面临的问题,以及解决这些问题的方法。
背景
客户使用第三方系统完成订单登陆、库存维护和货品计价。传统的工作流程是这样的: 1. 客户向销售员申报订单。 2. 销售员将订单输入系统产生订购单。 3. 准备好发货的时候,会产生纪录,并将订购货品的数量从库存目录中扣除。 4. 给客户产生一个发货单。 这个系统还包含了一个电子商务组件,为客户提供网上交易,他们能通过公司的网站进行订购。在这种情况下,销售员不需要将订单输入系统,订单将在网上商店里产生,并在当天结束营业时上传到系统。 我的客户还拥有两家出版物供应商,他们也有自己的订单登陆系统。订单最初要登陆到其他系统,因此客户将收到两方的订单通知。 客户通过Web浏览器登陆到第一家供应商的系统申报订购的项目。第二家供应商的订单登陆系统则将向客户发送电子邮件。在这两种情况下,客户公司的售货员都必须重复地向订单登陆系统键入订单信息。初步估计,每个售货员每周有超过60个小时在重复键入这些订单。 而我的任务是将订单登陆流程自动化,从而减少重复键入数据的时间,并避免任何订单登陆失误。
解决方案
将订单登陆到系统有两种方法。第一种是打开桌面客户端并键入订单。第二种则是在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 6编写了这个组件,创建了一个ActiveX DLL工程并添加ORDER和LINEITEM对象的类。我首先处理ORDER类,为每个XML元素添加属性。 XML schema中的第一个元素是ORDER ordernum="abcde12345"。这个ORDER 类将包含一个叫做ordernum的属性。 在VB6中定义属性需要2个步骤。首先,需要创建一个私有变量来存储属性值。接着,将ordernum属性定义为长度为10个字符的字符串。 Private strOrderNum as String 这个属性对于所有Let属性和Get属性子程序类的用户都是可访问的。这些子程序将私有变量约束为公共属性,并同时实现必须的有效性检查。在这个情况下,保证订单号码是10个字符。 这个类的用户现在能通过下面的程序行来获得或设置ordernum属性: Dim objOrder as Order Set objOrder = new Order objOrder.OrderNum = "111222333x" 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属性 shipAddrLine1: 对应SHIPPING_LOC 元素中的ADDR_LINE_1元素 shipAddrLine2: 对应SHIPPING_LOC 元素中的ADDR_LINE_2元素 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文件。 <
欢迎光临 江西广告网 (http://bbs.jxadw.com/)
Powered by Discuz! X3.2