Chinaunix首页 | 论坛 | 博客
  • 博客访问: 657853
  • 博文数量: 751
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 4990
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 09:48
文章分类

全部博文(751)

文章存档

2011年(1)

2008年(750)

我的朋友

分类:

2008-10-28 09:49:06


  通过使用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文件。
【责编:admin】

--------------------next---------------------

阅读(466) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~