一、前言

AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台。用于帮助中小型软件企业建立一条适合市场快速变化的开发团队,以达到节省开发成本、缩短开发时间,快速适应市场变化的目的。

AgileEAS.NET SOA中间件平台提供了敏捷快速开发软件工程的最佳实践,通过提供大量的基础支撑功能如IOC、ORM、SOA、分布式体系及敏捷并发开发方法所支撑的插件开发体系,以及提供了大量的实体、数据模型设计生成工具、代码生成工具,用于帮助中小软件开发商快速成长。

AgileEAS.NET平台充分把握目前软件行业快速发展的新趋势,基于敏捷并行开发、快速适应市场这样淳朴的软件工程实践,采用业界广泛使用的Microsoft .Net构件(组件)开发技术实践了这种开发思想,帮助软件企业实现“敏捷变化、快速适合”的目标,从而帮助软件企业在激烈的市场竞争中赢得先机并获得更高的回报。

二、管理信息系统开发之中的字典选择录入问题

AgileEAS.NET SOA中间件平台被广泛的应用于MIS类系统之中,可以说基于AgileEAS.NET SOA中间件开发MIS类真是得天读后,能大大的降低系统的开发难度和开发工作量。

有管理信息系统开发之中有很大一部分工作是实现界面的数据选择录入,比如商品进销存之中的根据输入码、拼音码、检索码查出某部分字典数据并且选择录入,如下图:

这是一个典型的字典选择输入应用,此类应用大量应用于比如像采购入库、采购申请之中的选择要采购的商品信息,商品信息存储在商品字典,本案例是选择药品字典信息,选择录入药品字典信息以便于进行药品入库业务处理。

在传统的此类应用开发过程之中我们需要自己处理当输入焦点在检索文本框之中进行输入的输入事件以及大量的界面、数据检索处理工具,费时费力,如果一个界面之中多出这样几个此类的应用场景,那么这个插件的代码的70%或者以上都用于应对此类场景,就形成了一种代码超长、界面控件、输入控件的事件处理麻烦的境界,如以下这个界面:

这个界面之中有五处此类场景的应用,当然,在一些应用之中可能有十个或者更多的这种场景,整个模块在应对此类情况的代码极其之中,也会慢慢的导致代码的可读性,可维护性越来越差。

三、TextBoxAutoComplete组件

AgileEAS.NET SOA中间件平台在经过多年痛苦的开发应用之中,从各种客户的反馈和开发应用的经验之中积累了一套解决此问题的方案,并创造性的实现了一个基于输入文本框的扩展解决方案,TextBoxAutoComplete组件及其之后的InputDict(输入字典)管理体系。

TextBoxAutoComplete组件:根据其名称我们可以简单的理解为TextBox的自动完成组件,那么其功能就是类似于baidu、google的搜索文本框功能:

TextBox控件配合TextBoxAutoComplete完成类似上图你的自动完成检索功能,只不过baidu、google的搜索文本框展示的是搜搜索关键字,而AgileEAS.NET SOA中间件平台之中的TextBoxAutoComplete展现的是各种字典的录入选择表格,如下图:

TextBox控件配合TextBoxAutoComplete可以完成对任意类型的字典信息的检索录入和自动完成功能。

四、输入字典管理

如果说要实现对任意类型的字典信息的检索录入和自动完成功能,仅TextBoxAutoComplete组件是不够的,为什么呢, 这会涉及到各类输入字典的录入数据规则、检索规则、数据窗口(DataWindow)的数据显示、排序规则、以及对数据源的过滤规则等等。

那么如何解决此问题呢,AgileEAS.NET SOA中间件平台提供了一个字典管理功能“输入字典”:

系统中维护着一组用于控制TextBoxAutoComplete组件的数据检索、显示的各项参数,其中包括如下重要信息:

字典编码:字典编码是一个Guid类型的值,其值必须是唯一的,也早用于控制TextBoxAutoComplete进行重要的重要依据,也是维系TextBox控件与TextBoxAutoComplete的唯一纽带。

数据类型:TextBoxAutoComplete组件工作是所依赖的AgileEAS.NET SOA中间件ORM实体对象类型,即输入字典的数据检索、显示必须依赖于ORM实体对象。

显示参数:数据窗口(DataWindow)的宽度、高度和每次可显示的记录行数。

是否启用缓存:即输入字典的检索行为是基于数据缓存进行的还是基于数据库检索进行的,因为我们的处理很多不常见化的字典信息,比如民族、省份这样的信息不会经常发生变化,AgileEAS.NET SOA中间件平台设计一套基于时间戳的实体缓存体系,如果选择启去缓存,只自动完成的检索不会请求数据库操作,以减少通信和数据库原因,如果选择启用了缓存,则必须要设定缓存属性。

缓存属性:用于控件缓存的增量更新的一个日期时间型字段/实体数据,并且必须在ORM实体的这个属性上面加上CacheUpdated标记:

   1: /// <;summary>
   2: /// 最后更新时间 。
   3: /// <;/summary>
   4: [Column("LMTime", "最后更新时间"),CacheUpdated]
   5: [DisplayName("最后更新时间")]
   6: public DateTime LMTime
   7: {
   8:     get;
   9:     set;
  10: }

并且需要在对就的字典管理/维护程序这中,当增加、修改某一行字典记录之后需要把对应的字段时间更新为最新的修改时间,那么缓存系统就会在一定的延迟规则之后获得这一更新记录。

显示属性:当TextBoxAutoComplete组件完成选择录入之后,显示在关联文本框内的值对应的ORM属性。

缓存间隔:输入字典记录本身的缓存间隔,即TextBoxAutoComplete引擎从数据库中更新对应的字典定义的周期,最小为0分钟,即TextBoxAutoComplete直接读取数据库中的字典记录。

码值属性:当TextBoxAutoComplete组件完成选择录入之后,用于执行其他业务的字典编码属性,一般情况下为字典的主键属性。

显示设置:用于设置DataWindow(数据窗口)之中显示的列信息记录,包括显示那些列、列标题、显示顺序等:

数据源筛选:在数据根据输入的条件检索之前的数据筛选功能:

上图的筛选条件表示仅选择Icd10bksn值为“B”的记录。

搜索条件:用于定制TextBoxAutoComplete组件在经过筛选之后的数据源上的检索行为,例如本文第二张图上的输入的“ys”之后的数据源检索行为:

目前倒提供基于字符串字段的三种检索条件:StartsWith(like ‘ys%’)、EndsWith(like ‘%ys’)和Contains(like ‘%ys%’),基本上能满足99的应用。

五、开发过程

首先我们要有规划,定将好数据实体、在必须的实体上定将好缓存更新标记,最新版本的ORM设计器提供了支持,我们就以DrugShop案例之中的药品字典实体以及在药品入库的录入检索为例进行说明。

药品字典我们考虑使用缓存,即把药品字典缓存在本地,以减少对服务器的请求和通信压力,以下是药品字典人的定义:

其中LMTime为最后更新时间,用于控制缓存的增量更新。

当然需要注意的是,并不是所有的输入字典信息都需要从缓存之中读取,对于实时可变的录入信息,如高品库存信息必须要进行实时读取,就没有必要使用缓存,因为对于这些实时数据,实体缓存的准确率非常之低。

设计好ORM实体模型并且生成代码、编译实体程序集之后,我们使用AgileEAS.NET平台的输入字典创建一个新的输入字典:

打上启用缓存复选框、选择设置缓存属性、码值属性、显示属性如下:

选择显示属性如下:

设置搜索条件如下:

复制下字典的编码,并且保存这个字典设置,接下来我们使用VS打开程序,在药品入库功能之中使用刚才定义好的字典,首页我们概引用平台的EAS.Data.Controls.dll程序集,并且在工具栏之中添加选择项=》选择EAS.Data.Controls.dll程序集,确保把TextBoxAutoComplete组件加载到工具箱之中:

然后我们像界面拖入TextBoxAutoComplete组件,完成后如下:

然后我们设计检索文本框txtSeach的属性如下:

这地方最重要的就是设计TextBox基于TextBoxAutoComplete1组件扩展出来的属性MetadateID,即扩展录入元数据ID,关联自我们定义好的输入字典。

是不是很简单,定义一个输入字典,程序代码之中只需要拖入一个组件,设计一个ID,即完成了需要大量编码才能完成的工具,名至实归的快速开发利器。

六、执行验证

我们编译并且启动DrugShop.Main.exe,使用0001密码sa登录,打开药品入库功能,来试一下是否能够执行自动完成:

OK,使用正常,没有任何问题。

DrugShop案例之中同步提供了本例子的字典定义和使用代码,请大家通过AgileEAS.NET SOA中间件官方网站的最新下载栏目进行下载。

七、联系我们

为完善、改进和推广AgileEAS.NET而成立了敏捷软件工程实验室,是一家研究、推广和发展新技术,并致力于提供具有自主知识产权的业务基础平台软件,以及基于业务基础平台开发的管理软件的专业软件提供商。主要业务是为客户提供软件企业研发管理解决方案、企业管理软件开发,以及相关的技术支持,管理及技术咨询与培训业务。

AgileEAS.NET SOA中间件平台自2004年秋呱呱落地一来,我就一直在逐步完善和改进,也被应用于保险、医疗、电子商务、房地产、铁路、教育等多个应用,但一直都是以我个人在推广,2010年因为我辞职休息,我就想到把AgileEAS.NET推向市场,让更多的人使用。

我的技术团队成员都是合作多年的老朋友,因为这个平台是免费的,所以也没有什么收入,都是由程序员的那种理想与信念坚持,在此我感谢一起奋斗的朋友。

团队网站:http://www.agilelab.cn,

AgileEAS.NET网站:http://www.smarteas.net

官方博客:http://eastjade.cnblogs.com

QQ:47920381,AgileEAS.NET

QQ群:113723486(AgileEAS SOA 平台)/上限1000人

199463175(AgileEAS SOA 交流)/上限1000人

212867943(AgileEAS.NET研究)/上限500人

147168308(AgileEAS.NET应用)/上限500人

172060626(深度AgileEAS.NET平台)/上限500人

116773358(AgileEAS.NET 平台)/上限500人

125643764(AgileEAS.NET探讨)/上限500人

193486983(AgileEAS.NET 平台)/上限500人

邮件:james@agilelab.cn,mail.james@qq.com,

电话:18629261335。

    本文转自魏琼东博客园博客,原文链接:http://www.cnblogs.com/eastjade/p/3480165.html ,如需转载请自行联系原作者

MIS系统开发利器,快速的字典录入解决方案,另类的、可管理的.NET DataWindow相关推荐

  1. [长流支流]的专栏--《金质打印通》、《WebMIS.NET快速开发平台》,MIS/ERP开发利器...

    http://blog.csdn.net/flygoldfish 转载于:https://www.cnblogs.com/smallsoftfox/archive/2012/06/27/2566369 ...

  2. 品优购电商系统开发 第5章 商品录入【1】

    课程目标 目标1:完成商品分类功能 目标2:了解电商概念SPU 和SKU 目标3:掌握富文本编辑器的使用 目标4:掌握上传服务器FastDFS 目标5:掌握angularJS图片上传 1.商品分类 1 ...

  3. 西安健身房共享系统开发如何快速回笼资金?

    上一期给大家分享了健身房该如何利用共享店铺系统快速回笼资金,这期继续给大家更为详细地介绍一下实际操作流程,看完你就明白怎么做了. 那我们利用共享股东在这里充卡的钱作为流动资金,是不是前期就很容易把投进 ...

  4. 智慧社区系统开发,智慧社区平台搭建解决方案

    随着智慧城市概念的推广,全国各地都兴起了一股智慧城市建设的热潮,将智慧城市作为未来城市发展的方向.作为其中最重要的组成部分之一,智慧社区的建设也进行的如火如荼. 智慧城区(社区)是指社区管理的一种新理 ...

  5. ROS系统开发——ROS,realsense风险和解决方案备忘录

    未能确认原因的重大风险问题 开启4个相机时,有时候会出现只能打开2个.或3个相机的情况,还有一个相机无法开启.(2021-3-23) 详细现象:长时间测试4个realsense相机过程中,使用rosl ...

  6. Java全栈开发---Java ERP系统开发:商业ERP(七)登录与密码管理

    登录与密码管理 一.登录与退出 (一)页面的创建于修改 1.管理主界面的构建 (1)在网上找一个后台管理的模板(拷贝到webapp的目录下面) 点击这里下载: (2)访问主界面 2.登录主界面的构建 ...

  7. 基于Case的MIS系统 - 总账模块

    基于Case的MIS系统 - 总账模块 (凭证单据) Case以减少开发量为旨,致力于MIS系统开发的产品.下面介绍如何在Case上以少量代码下开发总账模块中的凭证单据录入界面. 一.在Case中配置 ...

  8. 使用java开发简单的mis系统所需的技术

    开发mis系统用到的技术 1. b/s架构:就broser/server,浏览器/服务器的说法.服务器端要运行tomcat,提供链接数据库服务供java代码读写数据,这个可以在eclipse中配置运行 ...

  9. 企业级管理软件快速开发平台-在同一个数据库上进行多个系统开发

    前几篇博介绍了极致业务基础平台的框架及一些开发效果详细见下面的地址 极致业务基础平台简要介绍: http://www.cnblogs.com/Jeez_JBF/archive/2010/07/29/J ...

最新文章

  1. 改变宇宙之前,GPT-3最先改变的可能是OpenAI
  2. Spring Boot 2.x基础教程:JdbcTemplate的多数据源配置
  3. 【数理知识】《矩阵论》方保镕老师-第3章-矩阵的分解
  4. with grant option mysql_mysql用户及权限(WITH GRANT OPTION)
  5. jdk8 cms g1gc_G1 vs CMS vs平行GC
  6. 百度地图手机和电脑不一致_你可能不知道的电脑手机冷知识
  7. [Topic]Advanced Run Time Type Identification in C++
  8. webpack使用优化(基本篇
  9. java解析未知key json_获取JsonObject某一未知key的值操作
  10. ios 类别(category)
  11. ORACLE SQL功能优化系列(一)
  12. 网页加载出现没有合适的负载均衡器_一篇文章彻底了解清楚什么是负载均衡
  13. 一次性密码本(绝对无法破译)
  14. 工厂智能化远程运营管理系统方案
  15. 官宣!AutoSec第六届中国汽车网络安全周火热来袭,10大特色首度曝光!1000+精准专业观众、60+OEM竞相参与
  16. vue admin html,vue-admin-template笔记(六)
  17. matlab两矩阵乘除,MATLAB矩阵乘法
  18. 股票走势图php源码下载,flex实现股票行情走势图示例代码
  19. mme 服务器位置,NB-IOT的网络架构简介
  20. XML,HTTP协议

热门文章

  1. 云服务器配置代理服务
  2. 统计字符串中字幕出现的数量(Map案例)
  3. SpringBoot redis GEO 实战应用
  4. 跑通SpringBoot + dubbo3.0.8 + zookeeper
  5. luffy-(12)
  6. 计算机房的英语该怎么读,计算机机房硬件维护,Computer room hardware maintenance,音标,读音,翻译,英文例句,英语词典...
  7. 范围变更管控案例_项目范围管理案例之范围确认案例
  8. 使用cloudflare防御假墙攻击和优化配置
  9. 关于星巴克在故宫开店
  10. mysql分隔符_在sql文件中设置MySQL分隔符