需求等功能等描述:
数据由表A转移到表B的过程。根目标表B的相关设置映射规则(比如说目标表字段长度、数据类型、常量等操作)完成数据的转移、迁入、引用等操作。
当将一个分类(源分类)中的数据“复制”到另一个分类(目标分类)的时候,如果这两个分类不拥有相同的根分类,即表结构有所不同,这时则需要定义“复制”的规则——即映射。这里的映射是指表字段与表字段之间的映射,映射是单向的,映射需支持一些常用的表达式、SQL查询计算,及环境变量系统变量等,例:可以把A 表的 A字段 乘以 B字段 的结果,映射到 B表的 A字段。
由于不管,先画完图再说,由于半路出家,画图的功夫不是很到家也知道什么是什么图,管他3721乱画一把了。首先ipo图:
流程图:
实体图:
界面效果图:
接着定义配置文件等相关的规则:
Fieldname:表示目标分类的字段名称
Sqltype:表示目标分类字段的数据类型
Length:表示目标分类字段的数据长度
Getvaluetype:取值类型:主要三种方式 1、源字段值 2、常量 3、系统变量
Value:主要内容,如果是源字段值则输入是其表达式,表达式支持常用的相关操作类型XSLT的相关操作,常量为固定值,系统变量为相关参数
分析得出具体实现的相关操作:
整体处理数据方面分为单一处理,以及多条处理(集合处理),单一处理主要应用于分类内容操作,比如(迁入、引用等操作)即时操作。集合处理。对于集合量较为大时(主要应用为分类复制、分类合并等相关操作),采用后台线程队列处理操作。缩短前台用户操作影响界面。
定义出具体的操作类流程:
//初始化规则引擎
MapEnginer me = new MapEnginer("mapping.xml");
//取得源分类表数据
me.GetSourceData(row);
//取得目标实体
PersonEntity pe = me.GetEntity<PersonEntity>();
//取得序列化的XML字符串
string xmlString = me.GetSerializer();
//直接将转换数据写向目标分类表
me.WirteDataBase();
最后还差代码的实现,最为难题,实现完了再把代码补上了。。。。