需求:
生成一种单据:发货单。
发货单分为头和行,头根据行的一些属性分组产生。
需要各种验证。
同时要插入批次表。
在整个系统中,不止一处会需要生成发货单。
分析:
在系统中每次都要生成发货单的地方都写一套程序,会发现每套程序都比较类似。
面对比较类似的程序时,就要分解程序,把相同的部分和不同的部分区分开。
针对该程序,变化的是每次单据的数据,不变的是分组,验证,插相关表的操作。所以,要把数据和操作分开。
对策:
一个接口表,包含行和头的需要的字段。对于这种头行结构的单据,接口表是保持头行结构还是扁平化,是需要考量的一个问题。针对该例,头根据行的数据分组产生,所以接口表扁平化,可以把分组过程写进通用程序中。
一个程序,从接口表中取数据,执行分组,验证,插相关表的操作。
扩展:
为了支持并发,可以加入批次机制,用一个GROUP_ID来区分每次要处理的数据。
为了给出是否成功的犯规,可以加入PROCESS_FLAG等。
为了给出错误信息的反馈,可以加入一个错误信息表。