单据项的多业务引用--Sbo的设计缺陷?

简介:
必须要说,SBO在中小型企业ERP软件中的确是佼佼者,灵活的配置,周延的考虑,不错的泛型适应性,友好的业务结构跟踪,强大的二次开发支持,尽管二次开发包帮助文件中似乎总是欲露还留的那么一手,让开发人员无法展开手脚在其之上自如的开发。
不过,据我观察,SBO也存在着设计上的缺陷--当然也可能是因为本人目前还没有琢磨透SBO的基础构架或者设计理念。今天在此向谈一谈的是SBO在单据对象--即凭证对象上的设计局限。
SBO的单据对象,至少由两个数据表予以业务支持,一个是我在描述中所谓的信息表--SBO中称之为凭证标题,另一个我称之为单据清单--SBO称之为凭证行,SBO的称呼更加合适。当然不同的单据对象在不同的管理方式下可能还存在着不同的业务表单支持,在此不予讨论。
单据信息表--凭证标题--用于记录单据发生时候的状态信息,同时记录了这个凭证的业务对象类型,对应的关键字段为:objType、docEntry、docNum、docDate,这几个字段分别是业务类型、凭证内部编号、凭证号码、凭证日期。尽管每个业务对象对应着不同的数据表,仍然在单据信息表中通过objType字段指明了业务类型。
单据清单--凭证行--用于记录了单据发生时单据项目对应的清单信息,包括项目在单据中所在的位置(LineNum)、项目内容(itemCode, Dscription)、项目发生属性(Quantity、Price、Currency等),同时指明了项目的业务类型(objType)。考虑到单据之间的互相引用,用baseType、baseEntry、baseNum、baseLinNum分别指明引用项在原业务单据中的属性即引用业务项目的业务类型、单据内部编号、单据号码、项目在清单中的行号;同时,单据还用TargetType、TargetEntry指明被引用的目标单据的类型和内部编号。
如果某个单据被另一个单据业务所引用,SBO也缺省在信息表中的备注和Ref1、Ref2字段中指明被引用单据的单据号码。
这的确是个不错的设计方案!熟悉算法的朋友们看到这种结构就会马上联想到双向链表吧,我曾经在电信97工程--电信营销系统中采用过类似的方法,我们当时的确称之谓面向数据表的双向链表,这种设计结构将不同的对象以链表的形式链接在一起了。
不过,用双向链表支持的业务总是简单的,支持更加复杂的多引用业务就会显得力不从心了。因为这个时候数据关系呈现的是树形结构。
是的,SBO是这样的,SBO的单据业务被引用后将导致被引用单据处于关闭状态,其它的单据业务对象无法再引用这张单据。无法让SBO的单据项被引用两次--特别被不同业务单据引用两次甚至更多次数,但是,这种业务还是有很多需求的。比如销售200台电视机,通过三次交货,每次分别交货80台、70台、50台,交货引用这个业务项目的时候,targetEntry到底应该怎么填写呢?结果是,或者根本无法实现多次交货--代客发货,很普遍的业务呀,或者这个targetEntry没有了实际意义。这还是同一业务的分次引用,事实上不同业务引用同一个单据项,又是怎样处理的呢?
不知道SBO到底怎样处理一个单据项目行被不同业务的多次引用是怎样处理的,但是通过其数据结构分析,应该很难支持。到底是因为对SBO了解的过于肤浅,还是SBO的设计局限甚至缺陷,在此还是留个问号吧!


本文转自foresun  51CTO博客,原文链接:http://blog.51cto.com/foresun/40506,如需转载请自行联系原作者
相关文章
|
开发工具 git 开发者
2024最简七步完成 将本地项目提交到github仓库方法
该文章提供了一个简洁的七步教程,指导用户如何将本地项目提交到GitHub仓库。
2024最简七步完成 将本地项目提交到github仓库方法
|
机器学习/深度学习 算法 决策智能
选址问题-精确重心法和遗传算法
选址问题-精确重心法和遗传算法
2299 0
|
NoSQL 关系型数据库 MySQL
Docker-compose封装mysql和redis并初始化数据
Docker-compose封装mysql和redis并初始化数据
725 0
|
缓存
npm install 一直卡着不动如何解决
npm install 一直卡着不动如何解决
7671 0
|
6月前
|
JSON API 数据格式
深入研究:淘宝天猫关键词搜索接口详解
淘宝和天猫提供关键词搜索商品的API接口,支持开发者按关键词获取商品列表及相关数据。功能包括通过搜索关键词(q)返回商品基本信息,如ID、标题、价格、图片、销量等。支持排序(sort)、分页(page_no/page_size)、价格区间筛选(start_price/end_price)及分类搜索(cat)。返回JSON格式数据,含商品ID、标题、价格、图片链接、详情页链接和销量等字段。
|
存储 API PHP
兰空图床Typecho上传插件LskyPluginTypechoV2安装及使用教程
【10月更文挑战第1天】本插件基于isYangs、泽泽站长、兔子君、冷寂等前辈的作品,适用于Typecho。教程包括获取API Token、设置插件及上传图片等步骤。
|
传感器 数据采集 运维
ERP系统中的生产线监控与异常处理解析
【7月更文挑战第25天】 ERP系统中的生产线监控与异常处理解析
625 8
|
域名解析 Unix Linux
AIX上如何正确挂载Linux 的nfs共享目录分享篇
AIX上如何正确挂载Linux 的nfs共享目录分享篇
724 1
|
存储 Java 关系型数据库
【Kafka+Flume+Mysql+Spark】实现新闻话题实时统计分析系统(附源码)
【Kafka+Flume+Mysql+Spark】实现新闻话题实时统计分析系统(附源码)
486 1
【Kafka+Flume+Mysql+Spark】实现新闻话题实时统计分析系统(附源码)