(15) 常用管理类软件需求征集 -- 通用菜单模块管理

开发大型管理类软件项目时,经常会遇到庞大的菜单项的管理,例如我们现在开发的项目里,菜单项大概有400-500个以上,我们经常会需要:

1。要增加一个菜单项
2。要删除一个菜单项
3。要修改一个菜单项的名称
4。经常要菜单项的先后顺序要改变
5。菜单项要移动到其他菜单下的子菜单里
6。导出数据给客户看菜单的布局等
7。某些菜单是公开,所有用户都可以访问。
8。停用暂时某些菜单项,过段时间再开放。

虽然这些工作不是天天发生,但是自己维护数据库,看密密麻麻的一大堆数据,真的是会眼花缭乱,当只有50个以内的菜单新项,你通过直接维护数据里的数据,想怎么弄就可以怎么弄是可以的,但是数据有500个以上的数据,你想怎么折腾就像怎么折腾就很困难了,想随心所欲修改数据,维护数据就变得蛮困难了。

我们经常也会发现,某些菜单是公开的,就是所有的用户都可以访问的,有些菜单是有相应权限的人才可以访问,有些菜单也需要临时停用,可能开发好了,才启用,也不能是删除了,再恢复过来也很折腾,所以有一个类似是否生效的功能。

下图是密密麻麻的数据库里的数据,大概有500多条记录,顺序也是很乱的,因为菜单也不是一次性能成行的,不断的修改、增加、减少、移动最后才形成了500多个菜单项,你把这些数据想按理想化的维护,是很痛苦的事情了。
(15) 常用管理类软件需求征集 -- 通用菜单模块管理

下图是我的后台C\S管理工具,我所有的应用程序都用这个一个后台进行统一配置管理设定权限等,可以开发不同的B\S的项目,原因是C\S的开发效率高,调试也方便,还有集成了系统报警信息的提醒功能等,还有简易的内部即时通讯工具。
(15) 常用管理类软件需求征集 -- 通用菜单模块管理

后台管理工具里集成了一个简易的即时通讯工具、有报警消息即时提醒功能,也可以显示用户的在线状态,这个功能模块也很稳定,测试了很多次,在网络不稳定时,网络带宽很低时,也不会出现错误,程序都进行了优化,功能比较稳定成熟。
这个后台管理工具特别适合在公司内部使用,是按公司的组织机构显示用户,想找哪个部门的谁,沟通什么事情等很方便。
(15) 常用管理类软件需求征集 -- 通用菜单模块管理

这个是我的菜单管理工具,我一般习惯性的叫“模块管理”,总觉得说是菜单管理有把范围限定得太小的感觉,可以对模块的顺序调整,不是自己手工输入排序码的那种,那种太笨了,不友善,我不喜欢,我觉得菜单的顺序不能调整,那会搞死人的,还是由按钮来控制排序顺序是很方便的,当然能支持拖动是最理想的,我技术能力还没能打到那个境界。
(15) 常用管理类软件需求征集 -- 通用菜单模块管理

下面解图是编辑状态时的效果,按ESC就可以退出,我很重视键盘操作,这些常用的功能,一定要注意,不是非要点关闭,点退出才能退出窗体,那太笨重了,我的窗体也一般支持回车换行的功能,因为毕竟是是国产软件,应该符合大部分用户的习惯比较好,我们都习惯了回车换行。
(15) 常用管理类软件需求征集 -- 通用菜单模块管理

这个是右键快捷菜单功能项目,这个还是蛮有必要的,操作起来会更简便一些,当然我的程序一般都支持拖动功能,树型机构上的数据都支持拖动功能。
(15) 常用管理类软件需求征集 -- 通用菜单模块管理


模块配置功能就是让系统里的哪些模块生效,那些模块停用的功能设置部分。
(15) 常用管理类软件需求征集 -- 通用菜单模块管理 

下图是在B\S项目中的运行效果图
(15) 常用管理类软件需求征集 -- 通用菜单模块管理

也没有什么过多的管理思想,就是把一个菜单模块表维护好,想怎么折腾就怎么折腾,这个模块涉及到的表也很少,如下图
我有自己配套的代码生成器,可以快速生成设计好的模型的相关代码,这样写程序也更快捷一些。
(15) 常用管理类软件需求征集 -- 通用菜单模块管理

此功能模块的难点:
1。数据量比较庞大时,软件的运行速度一定要快,不能太慢。
2。数据的灵活排序问题解决。
3。移动菜单项时的逻辑判断。
4。树型机构的导航功能的窗体的代码的量很大,需要相应的页面操作逻辑处理的代码比较多。
5。即时通讯工具又跟其他很多模块集成在一起,运行又很稳定,一般菜鸟也是搞不定的。
6。开发一个稳定的即时通讯小软件,也是不是那么容易的,需要熟练的C\S开发经验。
7。模块管理是一个独立的部分,又需要受权限控制等的约束,这些都需要写得又合理又清晰。

我的观点:
我们什么都会,但是需要什么,想要什么都需要花时间去在去弄,别人弄的都不放心,别人写的程序质量不行,要么运行不稳定,要么效率不高,要么数据库设计得不合理,要么功能定位不正确,要么某些细节处理得不好,用起来不方便,要么就是界面态丑陋,代码太乱不好维护。

若真的是一个很菜的功能,或者是很一般的东西,我也不敢叫卖,我有时候会想,我做了10年开发,我什么东西可以为别人服务?我能做什么?我天天做开发,当然是我软件开发中遇到的问题,解决的问题,有提供给别人帮助的可能性,有变成产品化软件的希望,虽然大家没有消费工具类软件,消费组件类软件的习惯,大家的产品也不能得到别人的信任的情况下,我还是需要继续走这条不归路,一直努力,早晚会得到大家的认可的。别的我也不懂行,也干不了,只能把这条道走到黑了。

欢迎大家指点批评。

将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。



本文转自 jirigala 51CTO博客,原文链接:http://blog.51cto.com/2347979/448340,如需转载请自行联系原作者
上一篇:基于 RocketMQ 构建阿里云事件驱动引擎——EventBridge


下一篇:svnant不支持svn版本1.7