当前位置:首页 > 产品应用 > 南北技术架构

南北技术架构

 

 

一、概述

 

  南北公司《基于SOA架构的外贸物流ERP软件》(简称SN-ADK,Application Development Kit)是一个基于Java技术研发的、多语言支持的、与国际化接轨的、适用于ERP等基于企业级数据库应用系统的开发平台。SN-ADK作为一个开发平台,一方面为应用系统的研制提供开发、调试工具和必要的组件,另一方面用于快速地构建并发布应用系统,同时也为应用系统的运行提供稳定的服务环境,支持包括目前流行的WEB(B/S结构)应用。SN-ADK具有如下功能与技术特点:

 

  一、基于Java相关技术开发,其中以J2EE为核心技术,遵循JDBC、Java-Mail、JMS、JSP、Servlet等技术规范。SN-ADK平台本身使用纯Java开发,应用系统的业务逻辑与控制以Java作为主要开发语言辅以SN-ADK提供的脚本语言(TAC)作为次开发语言。

 

  二、跨平台运行是Java的主要特点,因此,基于SN-ADK开发的应用系统可以在不同的操作系统上运行,包括Windows、Linux及Unix 等主要操作系统。跨平台特征不仅体现在web服务器、应用服务器和数据库服务器上,同时体现在客户端上。

 

  三、支持WEB(B/S结构)应用环境。B/S结构应用环境是当前环境下企业级应用的主要应用模式,不但避免了对客户端的安装升级工作,而且能够满足远程方式下对移动办公的需要。SN-ADK为应用模式的改变提供多方面的支持。

 

  四、兼容多种数据库系统。企业级应用一般多以数据库应用为主,SN-ADK开发的应用系统通过Java的JDBC技术提供对数据库的访问,支持Oracle、SQL Server、DB2 等主流数据库,同时也提供通过ADO、POI等技术对Access、Excel等轻量级数据库的访问。

  (1)SN-ADK提供应用系统访问数据库的规范与主要接口,同时也提供对数据库维护的一套维护工具,包括数据库生成、表结构维护等等。

  (2)对数据库连接池技术提供支持。SN-ADK运行环境中自身提供数据库连接池,同时也支持使用符合J2EE标准的应用服务器的数据库连接池。SN-ADK通过对数据库访问的封装,应用系统对连接池的使用是透明的,而且,SN-ADK也提供接口,也可以使用应用服务器提供的数据库连接池,供客户根据自身的条件和需要进行选择。

  (3)支持集群数据库使用模式。

 

  五、基于组件体系地、更好地支持面向对象技术开发应用系统。Java及其J2EE技术为面向对象程序设计的支持提供了基础,同时南北公司通过多年的应用系统开发实践,将积累的J2EE组件模块进行规范、抽象,形成了一介丰富的面向对象规范应用的开发组件体系,比如:数据库访问类组件、GUI类组件、工作流管理类组件、程序管理类组件、数据传输类组件、AWT类组件,基础工具类组、邮件服务类组件、打印服务类组件和短信服务类组件,共10个大类600多个组件。应用系统直接使用或继承这些基础组件,能够大大简化开发过程,加快开发速度,并且能增强应用系统的一致性、健壮性和稳定性。

 

  六、工作流引擎为业务层逻辑设计提供统一的设计规范。同时也为业务数据审批流程提供基础技术支持。

 

  七、多语言支持的,在中国,全球化与信息化几乎是同时到来的,走向全球市场是企业业务发展的必然需求,SN-ADK内置语言基础类库,提供多语言、个性化语言定制支持。

 

  八、SN-ADK运行环境为应用系统提供统一的安全认证体系,包括提供的统一的用户身份验证、业务数据加密访问和权限管理等控制。

 

  九、全方位的开放体系。提供多种方式的数据交换接口,支持遵循接口规范的纯文本、XML、Access、Excel、LOTUSl—2 3等不同格式的文件。报表可直接生成浏览器支持的HTML文件在Internet上发布;系统提供开放的数据接口。

 

  十、二次开发脚本语言(TAC)用于应用层开发之上的最终用户的二次开发。

 

  十一、界面生成工具及报表生成工具。

     SN-ADK对个性化的用户界面及输出报表提供支持。

 

  十二、其他:提供邮件系统及消息服务平台(包括系统公告、短信等服务)同,支持与Office等系统的数据交换,提供对用户数据的备份、维护和管理等相关工具。

 

二、应用模型

 

  使用南北公司《基于SOA架构的外贸物流ERP软件》系统(SN-ADK)构建的应用系统其主要应用模式是B/S(Browser/Server)结构模式即浏览器和服务器结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分简单的业务逻辑在前端(Browser)实现,但是主要的业务逻辑均在服务器端(Server)实现,形成通常意义上的三层(3-tier)结构。

 

  在客户端,用户界面主要是浏览器或通过WebStart方式启动的Java界面。这些界面通过SN-ADK的界面生成器生成HTML并配合Ajax技术将数据绑定到HTML页面形成用户的查询页面或数据操作页面。操作的数据也通过Ajax技术机制经应用服务器与数据库交换。使用SN-ADK构建系统界面设计将非常简单,不仅HTML的页面格式自动生成,Ajax数据交换的JavaScript代码也由SN-ADK自动生成。

 

  (1)客户端与应用服务器通过HTTP连接进行数据交换,SN-ADK为此提供了基础控件。

 

  (2)在应用服务器层,应用层的开发更多的关注业务逻辑的实现。在该层上对数据库的访问由SN-ADK运行环境封装的数据库控制器完成。在SN-ADK中,对业务逻辑的实现都有一个统一的规范

 

  在数据库层,需要使用第三方数据库系统,例如SQL Server、Oracle 等。

 

  应用服务器与数据库之间通过JDBC接口,遵循TCP协议连接进行数据访问。

 

  作为最终用户来讲,使用B/S结构的系统较C/S结构来讲也有更多优势:(1)由于在客户端只需要浏览器,不需要安装应用程序,大大简化了客户端电脑载荷;(2)维护和升级方式简单,减轻了系统维护与升级的成本和工作量,降低了客户运营的总体成本;(3)一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;(4)更好的安全性,应用服务器与数据库可以通过防火墙与Internet隔离,安全校验与数据访问在应用服务器上完成,它能有效地保护数据平台和管理访问权限;(5)更好的数据访问效率,通过数据连接池大幅提高单位据库连接的使用效率、减少数据库连接数的个数,而C/S结构由于在客户端需要做数据库连接会因连接数太多导致数据库性能下降;通过在应该服务器上使用数据缓存技术也会有效减少数据库的访问压力。

 

  当然,通过浏览器操作系统可能不会为每个用户所接受,SN-ADK同时支持Java WebStart的应用模式。使用该模式时客户端启动的是Java实现的界面,界面由Java WebStart方式自动下载,不需要用户安装,并能智能升级。Java WebStart应用模式与传统C/S模式的桌面应用程序完全类似,但数据访问使用的是B/S结构模式,具有B/S和C/S的各自的优点。同一环境两种模式可以同时使用。

 

三、数据库访问组件

 

  企业应用的最大特点是面向数据库的应用,所以南北公司《基于SOA架构的外贸物流ERP软件》系统(SN-ADK)中对数据库的访问提供了相关的组件和工具。包括:

 

  数据库生成维护工具。该工具包含在运行环境中,由最终用户的安装程序生成数据库,或者在应用过程中对数据库的日常维护。版本升级可能导致的数据库结构变化也由SN-ADK提供的相关工具自动更新。

 

  数据维护工具包含了数据备份、数据导入/导出等

 

  SQL语句构造器。应用系统中对数据库访问的查询语句、更新语句都会根据业务单据定义的界面由SN-ADK自动生成。数据库应用系统开发中因数据库不同而导致的SQL语法不同的数据库兼容性问题带来的复杂性会使开发工作量加大,而自动生成的优势是避免程序中写SQL而自动生成,在平台一级解决了这个问题,从而实现对数据库透明的访问。

 

  SN-ADK对数据库访问控件进行了封装:

 

  Database 类是一个抽象类,提供数据库访问的基本接口和规范,Jdbc-Database 、EJB-Database、Http-Database 等从 Database 类继承,并按规范实现必要的接口,这些实现由ADK底层实现,在应用层上对数据库访问的具体实现是透明的。使用统一规范访问数据库使得应用系统变得简洁和易于维护。Jdbc-Database 实现通过 JDBC 对数据库的访问;EJB-Database实现通过EJB对数据库的访问;HTTP-Database实现HTTP协议对数据的访问(Java WebStart模式使用)。

 

  数据库连接池的实现。在实现Jdbc-Database , EJB-Database对象过程中,使用了连接池技术减少数据库连接数,提高单位数据库连接的访问效率。

 

  数据缓存技术。应用系统的一个显著特点是大量基础表(例如企业部门人员表、客户表等)、系统配置表被经常访问,这些数据在系统中被缓存,从而使对数据库的访问量明显下降,也降低了网络负载,系统响应速度显著提高。数据缓存由ADK自动管理,会根据用户配置自动更新,根据内存情况自动清理。缓存管理器使用Java的"垃圾回收"技术实现。

 

四、工作流管理

 

  南北公司《基于SOA架构的外贸物流ERP软件》系统(SN-ADK)构建的应用系统中业务单据从新建到审批,以及到最终的执行生效、终结都是基于"工作流管理体系"完成的。工作流管理的基本原理是基于"状态驱动"的方式触发业务单据在各个环节的处理事件,并将相应的任务根据单据的权限在用户之间进行分配,并配合"消息服务平台"完成企业业务处理。

 

  工作流管理包含的内容如下图所示:

 

  工作流系统的核心部分是工作流引擎,引擎是驱动流程流动的主要部件,它负责解释工作流流程定义,创建并初始化流程实例,控制流程流动的路径,记录流程运行状态,挂起或唤醒流程,终止正在运行的流程,与其他引擎之间通讯等等工作。

 

  流程定义工具提供给最终客户根据业务需求生成业务流程。流程定义工具是一个图形化的操作工具,通过定义流程节点、确定节点以及节点之间的关联定义业务的各个流转环节。

 

  消息服务平台包含短信平台、公告系统、邮件系统等,将工作流各环境中产生的任务通知到具体业务员或管理人员。预警系统也将在消息服务平台中产生预警信息通知到具体责任人员。消息服务平台提供与MSN等及时工具的接口;短信平台提供与中国电信短消息中心网关的接口。

 

  管理和跟踪工具提供对业务单据、任务等相关的业务查询和管理。

 

  权限管理:为工作流中任务分配提供权限依据。单据的操作权限包括了在单据各个状态下所能进行的制单、修改、审批、执行,到终结等操作权限。SN-ADK将业务员或管理人员进行岗位划分,以及一套组织机构的管理,从而使权限管理变的简化而灵活。

 

  权限管理包含了任务的操作授权管理,例如审批授权的管理。

 

  客户端接口程序:将工作流系统产生的操作任务与系统自动生成的界面关联起来,应用系统在开发界面中的处理事件程序变得简化。

 

五、界面生成器与Ajax技术

 

  应用系统最终是通过用户界面由用户与系统交互,应用系统的界面开发占据整个开发工作量的相当大的部分,SN-ADK开发平台试图通过界面生成器自动生成业务单据的操作界面与查询界面,减少界面开发的复杂度,从而将开发人员的主要精力集中在业务逻辑的设计与开发上。

 

  编写应用程序时有两种基本的选择:

  桌面应用程序

  Web 应用程序

 

  两者是类似的,桌面应用程序通常以 CD 为介质(有时候可从网站下载)并完全安装到您的计算机上。桌面应用程序可能使用互联网下载更新,但运行这些应用程序的代码在桌面计算机上。Web 应用程序运行在某处的 Web 服务器上 —— 毫不奇怪,要通过 Web 浏览器访问这种应用程序。

 

  不过,比这些应用程序的运行代码放在何处更重要的是,应用程序如何运转以及如何与其进行交互。桌面应用程序一般很快(就在您的计算机上运行,不用等待互联网连接),具有漂亮的用户界面(通常和操作系统有关)和非凡的动态性。可以单击、选择、输入、打开菜单和子菜单、到处巡游,基本上不需要等待。另一方面,Web 应用程序是最新的潮流,它们提供了在桌面上不能实现的服务(比如 Amazon.com 和 eBay)。但是,伴随着 Web 的强大而出现的是等待,等待服务器响应,等待屏幕刷新,等待请求返回和生成新的页面。

 

  显然这样说过于简略了,但基本的概念就是如此。Ajax 尝试建立桌面应用程序的功能和交互性,与不断更新的 Web 应用程序之间的桥梁。可以使用像桌面应用程序中常见的动态用户界面和漂亮的控件,不过是在 Web 应用程序中。

 

  SN-ADK开发平台界面生成器自动根据定义生成业务单据的操作或查询的HTML页面,其中与业务数据的交换方面充分使用Ajax 技术。下面是 Ajax 应用程序所用到的基本技术:

 

  XMLHttpRequest对象。XMLHttpRequest是XMLHTTP组件对象,通过这个对象,Ajax可以象本地应用程序一样只同服务器进行数据层面的交换,而不用每次都刷新界面,也不用每次将数据处理的工作都发送到服务器端做,这样既减轻了服务器端的负担,又加快了界面响应速度、缩短了用户等待的时间。

 

  HTML 用于建立 Web 表单并确定应用程序其他部分使用的字段。

  JavaScript 代码是运行 Ajax 应用程序的核心代码,帮助改进与服务器应用程序的通信。通过JavaScript操纵XMLHttpRequest对象来跟服务器交互。

  DHTML 或 Dynamic HTML,用于动态更新表单。我们将使用 div、span 和其他动态 HTML 元素来标记 HTML。

  文档对象模型 DOM 用于(通过 JavaScript 代码)处理 HTML 结构和(某些情况下)服务器返回的 XML。

  XML(Extensible Markup Language),可以规范的定义结构化数据,是网上传输数据和文档遵循的统一的标准。用XML表述的数据和文档,可以更容易的和所以其他的程序共享。

 

  在SN-ADK开发平台中,Ajax技术的应用主要体现在几个方面:

  (1)使用XHTML和CSS标准化呈现GUI风格;

  (2)使用DOM实现动态显示和交互;

  (3)使用XML和XSTL进行数据交换和处理;

  (4)使用XMLHttpRequest对象进行异步数据读取;

  (5)使用JavaScript绑定和处理所有数据。

 

  界面生成器的主要部分包含以下几个方面:

 

  界面定义工具:提供给最终用户定义操作菜单、查询条件界面、数据管理界面、分析图形界面、输出报表格式等。

 

  生成器核心部分:将用户定义的格式生成到最终表现页面(HTML页面或Java页面对象),并根据单据操作流程和状态,关联必要的业务操作,他们可能是页面上的Ajax代码,或者应用服务器上的业务逻辑处理。

 

  分析图形生成器:用于根据查询数据生成分析报表需要的直方图、饼图等分析图形。

 

  个性化用户页面的设置:包括个性化菜单和个性化的操作、查询界面,个性化的输出报表。操作权限是个性化内容之一,系统会根据权限自动显示、隐藏、禁用界面的相关内容。

 

  实现与应用服务器的通讯管理部分。

 

  对应使用Java Webstart方式启动的客户端,界面生成器可以自动生成兼容的客户端Html页面或Java界面。

 

六、应用程序接口

 

  根据MVC的设计模式,界面生成器解决了V(视图)部分,那么M(模型层)则是SN-ADK提供统一的应用程序开发接口,包括GUI事件接口、数据访问接口等。在这些标准的接口内,提供了大量具有各种不同功能的标准方法。在编写应用程序的时候,程序员只需要实现相应的接口,改写接口中的相应的方法实现业务逻辑,按照统一的约定的方式,配置到具体的界面。SN-ADK在调用统一应用程序界面生成器,生成界面的同时,根据配置到该界面的应用程序接口,生成具体的应用程序接口(模型)对象,实现业务逻辑。对一个应用程序开发者来说,则可以在给定的资源环境里,可以专注于业务模型的设计,不需要费太多时间和精力在程序框架;对于整个应用来说,所有的业务逻辑都是继承于相同的应用程序接口,既提高了应用系统的规范性和可读性,也降低了日后的维护成本。

 

  (1)、GUI事件接口 public interface TableListener

  该接口提供了以下几类方法(响应事件):

  a、数据控制类:装载数据之前方法、装载数据之后方法、行移动之前方法、行移动之后方法、列改变之前方法、列改变之后方法、行提交之前方法、行提交之后方法等等。

  b、界面响应类:鼠标单击事件、鼠标双击事件、鼠标拖拽事件、行被拖动事件、键盘事件等等。

  c、界面行为类:界面初始化事件、界面关闭事件、获得焦点事件、失去焦点事件、刷新事件、界面打印事件等等。

 

  (2)、数据访问接口 public interface DataSetSaveListener

  该接口提供了以下几类方法(响应事件):

  a、数据检索类:表数据查询方法、表连接数据查询方法、一般数据查询方法等等。

  b、数据操纵类:单条数据存盘之前方法、单条数据存盘之后方法、单数据集存盘之前方法、单数据集存盘之后方法、多数据集存盘之前方法、多数据集存盘之后方法.

  SN-ADK的应用程序接口规范,是南北公司在编写软件开发平台过程中多年努力探索和实践的心血和结晶,能切实提高代码的规范性、提高开发效率和降低维护成本,是被很多项目证明过的。

 

七、控制器

 

  上面介绍了南北公司《与国际接轨的外贸物流行业软件应用服务平台》系统(SN-ADK)开发框架的V(视图)部分和M(模型层)部分,同样的SN-ADK也提供自己的C(控制器)部分,即控制器。在目前的SN-ADK开发框架下,控制器是分层实现:

  ▷ 平台级的中央控制器;

  ▷ 行业级的流程适配器;

  ▷ 业务节点级的客户个性化控制器;

 

  (1)、平台级的中央控制器;

  经过多年的发展,南北公司已经形成了自己的基于不同行业的解决方案:外贸行业业务整体解决方案、财务软件、集团财务解决方案、物流解决方案、人力资源解决方案等等。那么对于这些不同行业的解决方案怎么组合,以利于不同行业不同规模的企业根据自己的实际需要,方便灵活的选择呢?在SN-ADK的中,是由平台级的中央控制器实现的,需要用到那个行业解决方案,就在平台级的中央控制器中注册,如果不需要,则将该注册去掉,完全采用热插拔的方式。

 

  (2)、行业级的流程适配器;

  在每个行业解决方案内部,南北公司经过多年的实践,总结经验教训,逐渐沉淀下来该行业典型的业务基础配置、特色业务单据和典型业务流程,通过在行业级流程适配器里注册,组合成该行业的企业级整体解决方案,这是南北公司的核心竞争力。同样的,针对同一行业经营模式不同的企业,其业务流程的控制节点和关键环节不尽相同,通过对行业级的流程适配器的调节,即能满足不同的企业需求。

 

  (3)、业务节点级的客户个性化控制器;

  在南北公司多年的行业软件实施过程中,发现同一行业的同一业务流程的某一个业务环节,不同模式的公司,可能有不尽相同的业务细则,不同的表现方式,针对这一特点,在SN-ADK的中,是由在业务节点级的客户个性化控制器实现的。可以根据该公司的业务细则,注册不同业务细则实现模块;如果该公司的业务细则在南北公司的行业解决方案中没有,经过南北公司的行业专家论证,如果有必要,可以开发出新的业务细则,进入南北公司的行业解决方案中供选择。

 

八、多语言支持

 

  在中国,全球化与信息化几乎是同时到来。通过信息化迎接全球化的挑战是很多企业的选择,但来自不同国家、不同语言环境的管理者很快就发现,他们面临着一个矛盾:一方面,企业希望管理软件提供的产品能够符合企业的本地化经营特色,另一方面,又希望管理软件能满足跨语言环境使用的需要。SN-ADK内置语言基础类库,从底层提供多语言、个性化语言定制支持,为中国企业融入全球助力。

 

九、全方位的开放体系

 

  提供多种方式(HTTP、FTP、EMail或Web Service)的数据交换接口,支持遵循接口规范的纯文本、XML、Access、Excel、LOTUSl—2 3等不同格式的文件。报表可直接生成浏览器支持的HTML文件在Internet上发布;系统提供开放的数据接口。

 

十、二次开发语言(TAC)

 

  南北公司《基于SOA架构的外贸物流ERP软件》(SN-ADK)开发的应用系统在最终用户使用时可能仍有个性化的需要,尽管许多个性化的需要通过系统的设置或配置基本可以解决,例如工作流程的定义,界面输入格式、报表输出格式的定义,系统选项等等,但仍有部分需要进一步开发的工作,可以提供给最终用户ADK开发平台,但需要有Java及相关知识的用户才可以。所以在SN-ADK运行环境中提供一种更为简单的二次开发语言,即TAC语言,用于一般客户的进一步开发。

 

  TAC是一种面向业务层开发的脚本语言,语言中内建了需要业务处理需要的函数或方法,在界面定义或业务流程定义中使用TAC语言根据个性化需求进行进一步的控制或者增加相关操作。

 

  TAC主要功能、特征及相关技术:

  (1)TAC语言是一个面向过程的语言,但能够通过Java来调用SN-ADK运行环境中的业务对象。TAC具有一般语言需要的语句结构,例如基本的赋值语句,循环控制语句等等,以及函数定义等基本功能;

  (2)TAC语言可以理解成解释语言,但通过预编译技术,其执行速度则大大高于一般的解释语言;

  (3)成熟的Yacc技术,Lex技术做词法、语法分析器;

  (4)语言语法简洁,易于一般人员掌握,但又提供了Java接口调用,使得具有Java基础的用户做深度的应用开发;

  (5)进行业务控制时定义了一套规范,二次开发人员可以使用标准的方法做进一步开发。