我的"框架"之"数据基础操作" (二)

原创|其它|编辑:郝浩|2009-08-18 10:39:56.000|阅读 429 次

概述:我们在进行业务逻辑判断时,可能会弹出一些提示信息供用户选择,控件级别就是控制用户的选择,比如:这个业务规则我们只是提示一下用户,并不需要做什么强制性的操作。有的操作是允许用户选择、有的操作是强制提示并中断程序。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

5概要设计-数据基础操作-删除

5.1名词解释

5.1.1控制级别

我们在进行业务逻辑判断时,可能会弹出一些提示信息供用户选择,控件级别就是控制用户的选择,比如:这个业务规则我们只是提示一下用户,并不需要做什么强制性的操作。有的操作是允许用户选择、有的操作是强制提示并中断程序。

5.2设计方案

5.2.1设计思路

删除操作,就是把数据删除,彻底的从数据库表中删除,以后想再次查询估计都很困难,因此要慎重,做好一切准备工作。在这里,我把删除分成两个部分描述。

第一部分讲解是否允许删除操作,包括对操作员权限的判断等,与修改操作的判断逻辑基本一致,各位看流程图就OK了。

第二部分讲解第一部分允许删除操作后,继续要处理的一系列步骤。删除操作支持批量删除,因此需要考虑的事情要做些。之所以分成两部分,是因为流程有些长,分开讲比较直观。

首先,系统初始检测,有些数据是系统一开始自带的,本身做为框架的一部分使用。这部分数据不允许删除!

其次,数据启用检测,一般的基础编码都有一个IsUsed(是否使用)字段,若数据被使用,则需要进行额外判断。

其次,数据引用检测,就是我们要删除的数据可能被其他某些模块所引用,一般常见于基础编码,我是在后台专门设计一张表,存储这些关系,而不是通过数据库的外键关联功能,这样我自己就可以管理。

其次,单据状态检测,一般的业务单据都有一个BillStatus(单据状态)字段,某些状态(如已完成)的单据,是不允许删除的。

其次,数据阻止删除检测,同数据阻止修改操作功能一致,略

经过以上一系列的检测,我们要判断一下最后真正允许删除的数据个数。提示给用户,有多少条允许删除,多少条不允许?每条原因是什么?此时,要提示下是否真的删除?毕竟这是一个不可逆操作。

数据删除的时候,采用的方法是sql语法提交的方式,我在后台专门建立一张表,用于存储每个模块对应后台的表和主键字段信息,用做删除sql语法拼接使用。这样,我只需要在前台获取主键字段值就可以了。

5.2.2界面设计

5.2.3类图设计

5.2.4程序流程

第一部分流程图

 


                                                       
-6

 

第二部分流程图

 

                                  
-7

5.2.5数据结构

 

                                  
-8

 

数据阻止删除操作

与数据阻止修改操作表结构一致,略。

 

栏目关联引用

字段名称

描述

流水号

主键字段,流水号

模块ID

模块ID

栏目名称

栏目字段名称

栏目类型

栏目字段的类型,如stringint等,映射为net数据类型比较好

引用模块ID

就是哪个模块引用了此数据

引用DB表名称

需要根据这两个字段进行判断

引用DB字段名称

提示信息

若被引用,所提示的信息

控制级别

包括警告、提示、阻止等

备注

就是备注

 

模块删除语法

字段名称

描述

流水号

主键字段,流水号

模块ID

模块ID

DB表名称

模块数据窗口对应的表名称

DB字段名称

模块数据窗口中,相当于主键字段,就是能够识别唯一性的字段名称

DB字段类型

模块数据窗口中,相当于主键字段,就是能够识别唯一性的字段类型

字段值

模块数据窗口中,相当于主键字段,就是能够识别唯一性的字段值,相当于参数名称,使用时直接替换成真正的字段值

是否使用

确定是否使用,与权限无关

备注

就是备注

 

5.2.6注意事项

6概要设计-数据基础操作-保存

6.1名词解释

6.2设计方案

6.2.1设计思路

数据保存,终于说到重点了。管理类软件的重中之重的事情啊。所以要冷静、冷静再冷静!考虑、考虑再考虑。最终,可以肯定地说,我们还是没有想到用户想到的。在这里,我向我们的客户表示由衷的佩服!

好了,废话不多说。保存的逻辑我分成六个部分处理。

第一部分,处理数据的提交与准备。就是从UI层获取用户输入的数据

第二部分,处理数据的检测,包括对数据进行完整性,正确性、准确性的检测等

第三部分,处理功能业务逻辑的检测

第四部分,处理数据的同步,因为我们增加某个业务单据后,会有一些附加操作,比如同步生成XX单等。

第五部分,处理纯行业业务逻辑。

第六部分,处理数据的真正保存。

下面分别讲述,

第一部分,是从UI层获取数据,传递到业务层,UI层就是展示和录入数据的地方,其他什么事情都不要做。我们如何传递呢?我使用的方法是使用datasetdatatable,好处就不必说了。

第二部分,是数据的检测,这个相当重要。有如下几个步骤

数据完整性检测,检测栏目字段数据是否输入完备,哪些必输字段是否已输入数据等。与栏目字段必输设置相关联。

数据正确性检测,检测数据的字段值与其字段类型是否一致,例整型的字段只允许录入数字(可能大家会认为在界面层录入数据时检测,也可以,我在这里处理,是再次检测)。

数据准确性检测,这个是我自已在后台表中建立一张表,存放这些规则的。例:日期字段,要求不允许输入超过某一日期的值,如today。这条规则就可以通过此条设置,只是简单的设置。较为复杂还是要自己写逻辑

数据重复性检测,这里不光包括主键字段的唯一,还包括其他字段的检测,比如名称也要唯一。这个在后台也有张表存放这些规则。

第三部分,是属于功能业务逻辑了,我们要预留一个接口。

第四部分,就数据的同步,我设置了三个地方可以同步数据。

同一窗体内的主表和明细表或tab页表,数据需要同步。有后台表存储规则

不同窗体间采用sqlupdate语法进行数据同步。有后台表存储规则

不同窗体间采用存储过程或其他数据库对象进行数据同步。有后台表存储规则

第五部分,其实和第四部分有些类似,这里要处理的事情是第四部分不能处理的,主要是纯行业的业务逻辑

第六部分,就是数据真正的保存了,我采用的方法是sqlinsert语法保存,即使是多个datatable,也解析成sql语句提交。事务不必说,肯定要用的。

6.2.2界面设计

6.2.3类图设计

6.2.4程序流程


 

6.2.5数据结构

 

 

栏目值准确性检测

字段名称

描述

流水号

主键字段,流水号

模块ID

模块ID

DW类型

栏目字段名称

栏目名称

栏目名称

关系

栏目值与栏目名称的关系

检测值上限

栏目值,上限。若只有一个值,则使用此字段

检测值下限

栏目值,下限

自定义函数

是否自定义函数

函数名称

函数名称

参数名称

函数的参数名称

备注

备注,就是备注

 

栏目重复性检测

字段名称

描述

流水号

主键字段,流水号

模块ID

模块ID

DW类型

栏目字段名称

组合字段

是否组合字段,有时候可能是多个字段一并组合

栏目名称

栏目名称

栏目类型

栏目名称的类型

Db表名称

重复性检测条件,Db表名称

Db字段名称

重复性检测条件,Db字段名称

Db字段类型

重复性检测条件,Db字段类型

是否使用

是否使用,与权限无关

备注

备注,就是备注

 

数据同步设置(InWin

字段名称

描述

流水号

主键字段,流水号

模块ID

模块ID

DW类型

DW类型

编辑类型

编辑类型

栏目名称

栏目名称

目标DW类型

目标DW类型

目标栏目名称

目标栏目名称

目标栏目类型

目标栏目类型

是否计算字段

是否计算字段

备注

备注,就是备注

 

数据同步设置(DbCol

字段名称

描述

流水号

主键字段,流水号

模块ID

模块ID

DW类型

DW类型

编辑类型

编辑类型

Db表名称

Db表名称

Db字段名称

Db字段名称

Db字段类型

Db字段类型

Db字段值

Db字段值,映射为前台的栏目名称

目标Db表名称

目标Db表名称

目标Db字段名称

目标Db字段名称

目标Db字段类型

目标Db字段类型

备注

备注,就是备注

 

数据同步设置(DbObj

字段名称

描述

流水号

主键字段,流水号

模块ID

模块ID

DW类型

DW类型

编辑类型

编辑类型

Db对象名称

Db对象的名称

Db对象参数名称

Db对象的参数名称

Db对象参数类型

Db对象的参数名称的类型

备注

备注,就是备注

 

6.2.6注意事项

7问题讨论


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:博客园

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP