为适应市场经济需要和增强企业市场竞争力,在建设不锈钢工程时,宝钢集团一钢公司同时建设了企业生产控制与管理系统(简称L3)。2002年6月,委托宝信公司承担L3的软件开发,委托惠普公司承担其系统集成;2004年4月,L3全部功能上线投入运行。该系统面向用户、以财务为中心,以/按合同组织生产“、”力求最小库存“、”以质量求效益“、”集中一贯管理“和/整体优化,最大限度满足客户要求”等为目标,实现了销售管理、质量管理、生产管理、财务管理和能源管理等功能。
L3不但支持300个以上的联机客户端工作,而且还要与19个过程机(L2)之间进行电文通信。L3联机交易数目超过2000个,每个交易所涉及的关联数据表相当多,需要读取和修改大量的数据库表,且所涉及的数据库表之间的关联相当复杂,同时针对每个交易的实时性要求很高。对于这样一个大型的联机交易处理(OLTP)系统,如果采用传统的两层客户端/服务器(C/S)模式,则存在着如下缺点:难以维护、难以扩展、安全性差和性能不好11.因此,一钢L3系统采用了三层架构来实现,其中数据层使用Oracle数据库,中间层使用Tuxedo中间件,表示层(用户界面)米用VB开发。
在三层架构中,中间件是关键,它介于系统软件与应用软件之间,大大降低了应用系统的开发周期和开发成本,提高了系统的稳定性和可移植性,已经成为大型应用系统的一个组成部分,也是软件发展的潮流。虽然我们选择了业界最先进的三层架构产品,但是在L3的开发与应用过程中,我们仍然遇到一些问题,通过对这些问题的解决,提高了三层架构下的应用开发效率、维护管理方便性和系统运行可靠性。
三层架构下的L3开发型,具有性能可靠、执行效率高等优点,并为美国BEA公司推荐的首选,另外考虑到将来的数据量较大,所以确定FML的32位版(即FML32)作为缓冲区数据类型。但是,通过编程实践发现FML的标准用法存在着以下问题:(1)需要多个字段映射文件,对于大规模开发来说,这些文件的一致性维护起来相当困难;(2)向FML缓冲区压字段数据或从FML缓冲区取字段数据存在大量的相似操作,这不利于编程效率。为克服FML标准用法的缺点,采用了如下优化方案:在客户端将FML函数与其他Tuxedo函数封装为一个类BstuxFmlp,在服务器端,开发相应的函数,与客户端的BstuxFmlp类配合使用,客户端的封装类和服务器端的封装函数支持结构体格式。这样,通过封装便可大大地提高编程效率。
标准的服务器端程序的编译过程如下:编写makefile文件,然后进行make.但是,makefile的编写比较复杂,不便于开发人员使用。为解决此问题,对编译过程进行了优化:开发了编译命令tu-cc,并为开发人员分配了Serverld,当开发人员需要编译某个Service时,只需在service.dat文件中配置Service和其对应的Serverld,然后运行tuxcc Serverld,即可实现编译,并将编程成功的Server启动。此优化极大地提高了编译调试效率。
为了便于集成众多开发人员开发的客户端画面,采取了主框架和ActiveXDLL相结合的客户端结构。主框架称为VFVB,每个客户端画面是一个ActiveXDLL.开发人员按规定开发出ActiveXDLL,由主框架VFVB负责集成。这种结构不但便于集成开发人员各自开发的客户端画面,而且利于L3系统的不断扩展。L3客户端画面如所示。
三层架构下的L3授权管理面。
虽然Tuxedo自身带有授权管理功能,但其使用非常不便。对于一钢L3这样一个授权复杂的庞大系统,Tuxedo自身带有的授权管理功能远不能满足要求。因此,宝信公司开发了ePass授权管理系统,以便对一钢L3用户方便地进行授权管理。
ePass的逻辑结构见。ePass的授权信息保存在Oracle数据库中,用户通过IE访问应用服务器上的TomcatWeb服务器,可实现对ePass授权信息的查询或管理,如所示。当用户登陆VFVB时,向应用服务器上Tuxedo域中的TuxedoMessagf-BrokerServer发出授权验证申请,授权验证通过后,便可进入VFVB主框架,进而可调出具组成MP作为MASTER机,ygapp4作为BACKUP机,ygapp3和ygapp5连接ygscgll上的Oracle服务器,ygapp4和ygapp6连接ygscgl2上的Oracle服务器。客户端连接到应用服务器上,由Tuxedo自身实现负责交易的负载均衡。一台HPRP5470ygtxl作为通信服务器,运行宝信公司开发的XCOM通信软件,一旦yg另外一台HPRP5470ygjx2上。发送电文取自L3应用放到Oracle数据库中的电文记录;接收电文一方面放到Oracle数据库中,另一方面调用应用服务器中相应的电文处理服务。此运行系统的设计充分考虑到冗余,以避免单点故障。
自2003年12月8日以来,此运行系统已上线服务器yg scgl2(Tuxedo不具备此功能)。在此情况下,ygapp3和ygapp5仍然对外公布服务,对于L3客户端而言仍然可用,从而导致了L3客户端的50%不可用。对于通信服务器而言,虽然仍然与L3保持着底层通信,但是由于不能写入和读取数据库,从而导致L3接收电文应用完全不可用,往L2发送电文也完全不可用(虽然有50%用户还能发电文,但这些电文不能被发往L2)。为了防止再出现因一台数据库服务器宕机而导致应用不完全可用的问题,经过研究、分析与实验,得出如下解决方案:当一台数据库服务器发生意外宕机时,在另外一台数据库服务器的MC/ServiceGuard中,远程执行应用服务器上的特定脚本(关闭与宕机数据库服务器相连接的TuxedoServer组,并且若当前XC0M通信服务器使用的数据库服务器为宕机的数据库服务器,则切换到另外一台数据库服务器)。此解决方案将运行,L3系统的功能也随之全部投入实际运行。
该系统保证了新建设的生产线能够按合同组织生产,从而最大限度地减少了库存,这对于高价值的不锈钢产品而言具有特别重要的意义。虽然三层架构在一钢L3开发与应用过程出现了一些问题,但是瑕不掩瑜,实践证明三层架构还是比较适合于钢铁企业生产控制与管理系统。在一钢L3开发与应用过程中对原三层架构进行的改进工作,可作为其他类似系统的借鉴,以便更有效地发挥三层架构的优势。