阿呆的空间

我们一直在努力....

系统组件化接口设计

标签: 业务组件 接口 传递数据 接口调用
1.   定义

这里的系统是指对于一个大系统(如供应链系统)来说划分成的若干小的项目包(如销售管理、采购管理、生产管理)。系统间的接口要讨论的是有关项目包间如何传递数据、数据传递的方式、接口程序及调用方式等问题。

2.    原则 

保持各项目包间的高度独立性,包括设计的独立性和运行的独立性。项目包间接口只允许数据接口,不允许系统间直接引用程序。

3.   方案



系统间接口采用双缓存的方案。即提供数据方与数据需求方都对数据进行缓存,缓存的格式在各系统设计时单独考虑,格式允许不同,由接口程序进行翻译。采用双缓存的方案,优点是:
  • 两个系统可分开独立设计。
  • 设计接口程序时不用涉及单据的内部结构,缓存的结构较单据要简单。
  • 容易与外部系统接口。
  • 接口程序独立于业务系统,容易修改,易与多种系统接口。
对于“需要向其它子系统提供数据”的系统,事先要估计需求方所需的数据内容,并在业务发生时将数据放入缓存即可。只需要保证数据的完整性(记录不多也不能少)。

对于“需要其它子系统提供数据”的系统,要设计一个单据录入模块和一个单据生成模块。单据录入模块用于在没有其它子系统为其提供数据时能够人工录入数据,保持系统的独立性。单据生成模块利用缓存中的数据成批快速地生成单据,需要对已处理的缓存中的数据置“已处理”标记。

接口程序应独立于数据的需求和提供方系统进行设计,它只关心双方的数据结构,将不同结构的数据按数据项的对应关系进行转换。对于转换(处理)过的数据,应在源数据中做标记。

接口程序的运行时机可采用定时、数据提供方或数据需求方调用的方式。采用何种方式,根据系统的运行要求。

4.   举例



【销售管理】项目包向【应收管理】项目包提供发票数据,用于【总帐管理】项目包自动生成销售凭证。【应收管理】项目包向【销售管理】项目包提供回款数据,用于【销售管理】项目包进行客户资信的计算。对于发票数据,【销售管理】项目包是数据的提供者,【应收管理】和【总帐管理】项目包是数据的需求者;对于回款数据,【应收管理】项目包是数据的提供者,【销售管理】项目包是数据的需求者。

当【销售管理】项目包生成发票时,同时将【应收管理】所需的发票数据放入发票数据缓存中,然后调用发票接口程序,将数据存入【应收管理】的发票数据缓存。【应收管理】将财务生成凭证所需的发票数据放入发票数据缓存中,然后调用发票接口程序,将数据存入【总帐管理】的发票数据缓存,系统的销售凭证生成模块利用新的发票数据生成对应的销售凭证。

如果没有【销售管理】项目包,则销售凭证通过凭证录入模块人工录入。

当【应收管理】发生回款时,记录回款的同时将回款数据放入缓存中,然后调用回款接口程序,将数据存入【销售管理】项目包的回款数据中。资信计算程序利用回款数据计算客户资信。

如果没有【应收管理】,则回款数据通过回款录入模块由人工录入。

    评分: 请先登录再投票,同一篇博客一月只能投票一次!
    无人投票

相关博客:


评论

李挺 2010-9-29 18:18:31   回复
精彩,这种接口非常重要,项目包能够独立运行,很大程度上仰仗这些接口的协作,同时该协作又是不侵入的。
游客 2010-11-10 17:41:48  
同意。但接口是不是可以设计在接受数据的组件中
阿呆 2010-11-22 9:40:16   回复
个人认为,一个组件的接口,应该既包括接受数据的接口,也应包括发出数据的接口,这样组件与组件之间才可以相对独立的进行交互

发表评论

关注此文的人们还关注