`
hotbarsmu
  • 浏览: 7158 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

做减法的Web应用二次开发平台(三)

阅读更多

MARMOT的三大亮点

Marmot为我们解决了企业应用开发中的一些与具体业务无关的基础问题。在该框架中我们除了可以使用标准Dorado所提供的标准功能以外,Marmot还提供了一些扩展的功能,如Dorado表格表单的个性化定制、系统导航菜单的定制、权限异常日志的管理、万能查询的定制保存与加载、系统内部消息发送、业务流程的控制等。这其中Dorado表格表单的个性化定制、权限控制的实现和万能查询的定制保存与加载构成了Marmot的三大亮点。
表格的个性化定制。标准的Dorado表格用户可以改变列头的位置、设置显示和隐藏列、设置锁定列等,一旦页面刷新用户调整的效果也就会丢失,表格会恢复到初始状态。在Marmot中改变了这一局面,默认情况下可以把用户对Dorado表格所做的各种调整都记录下来,这样当用户刷新页面或重登录系统看到的就是他最近一次对表格调整的效果。同时通过Marmot我们还可以对Dorado表格做更为精细的调整(如列名,列组合,单元格编辑器类型等),所有这些调整完成后都可以记录下来,从而达到用户对自己看到的表格的个性化定制。

 

(图:Marmot中的表单自定义)

万能查询与查询预案。查询、检索是信息系统中数据维护的标准功能,每一个应用界面,只要涉及到数据的维护都要求有对数据的检索功能,同时我们又会发现,这些查询功能基本上都是类似的,但为了需求的实现,我们不得不为每一个维护界面开发出检索功能。Marmot中的万能查询可以帮助程序员快速的实现这一功能,在Marmot中,我们只需做些简单的配置就可以呼叫出Marmot的万能查询页面,从而实现对数据的查询与检索。

同时,对于应用系统的某些操作员来说,可能他每次登录系统后都要在某个功能模块页里的查询窗口输入相同或相似的条件来检索到一批结果集进行处理,如果他每次输入的只有一两个条件问题还不是很大,假如他每次要输入四五个甚至上十个条件相信效率是非常低的。在Marmot中的万能查询还提供了另外一个功能,那就是查询预案的保存与加载。通过这种机制,操作员可以把自己在查询窗口里设置的条件保存为一个方案,这样下次就可以通过下拉框选择的形式加载自己保存过的查询方案,这样就可以大大提高操作的效率,同时也给用户带来很好的操作体验。

 

(图:Marmot中的万能查询)

 

权限控制的实现。Marmot可以让用户轻易的实现让某些用户或角色有权或无权访问某些资源,具体分为三层,第一层为URL,第二层为组件以及组件里的元素(如指定表格中的某列为只读等),第三层为后台的Java方法。开发时,程序员不用考虑权限问题,开发完成后,上线之前进行权限配置即可。权限信息来源可以是LDAP,也可以是数据库的中几张表,根据具体情况实现预留的接口即可。

默认情况下当某一个资源没有被分配给任何一个人或角色的时候那么这个资源是公共的,所有的系统用户都有权限访问,一旦该资源分配给了某个用户或角色,那么这个资源只能由该用户或角色可访问,其它用户或角色就无权访问该资源。默认情况下Marmot中的资源访问权限是分配给角色的,同时还提供了一个名为“角色代理的功能,指当一个某个用户因为某些原因不能处理当前自己权限范围可以完成的工作时,可以把自己的这个权限暂时分配给其它人代为处理一下。

 

界面风格的选择是Marmot中提供的一种特色功能。通过在登录页中的Style的选择,用户可以根据自己的喜好,选择自己喜欢的操作界面。开发者可以以这些示例作为应用框架的模版也可以根据需要通过一些简单的配置创建全新风格的主框架。

 

(图:用户操作风格的选择)

 

Marmot提供了以数据库方式存贮系统导航菜单结构的基础实现。包括菜单结构的维护界面、快速生成各种菜单的工具类,通过Marmot提供的菜单工具类可以实现菜单的一次性装载或懒装载。菜单的工具类包含以下两大类:

LazyMenuUtils:用于生成支持懒装载的菜单支持菜单栏、Outlook栏、导航树等多种菜单类型懒装载菜单适合展示菜单层数和项数均较多的菜单通过对菜单项的懒装载可以保证界面的初始化速度不会因菜单过于复杂而降低。

DiligentMenuUtilsDiligentLazy之反义,用于生成一次性装载的菜单支持菜单栏、Outlook栏、导航树、多页标签等菜单类型。一次性装载的菜单适合那些层数和项数均较少的简单菜单。

通过替换MenuFactory的实现类就可以将Marmot的菜单功能与其他存储机制接驳例如:其他结构的数据库、XML并且也可以在MenuFactory的实现类中植入对菜单项的权限控制逻辑。

 

收藏夹是Marmot中提供的一个小的辅助功能。它可以把我们应用操作中常用的页面像浏览器的收藏夹一样收藏起来,这样下次登录系统后可以通过收藏夹功能快速的导航到需要操作的功能模块页面。

实时消息是一套消息发送的功能,利用这个功能可以向系统中的其它用户或用户组发送定时消息(如果不指定时间,那消息会在第一时间送达接收者),同时消息发送过程中用户还可以指定是否同时发送到对方邮箱,当然开发者也可以做适当扩展,加上短消息发送等功能。实时消息的发送不要求接收者一定在线,如果接收者在线它会在指定时间收到发送者发送的消息,如果接收者不在线,下次登录后他还会在指定时间收到消息。

Marmot中提供了默认的数据字典功能的实现,包括内嵌的数据字典读取装载逻辑、数据库结构、专用的数据字段维护界面。数据字典信息的装载支持设计时装载运行时装载方式,其中设计时装载的效率稍高,但不利于实时的反应数据字典中的信息.运行时装载在每次访问页面时读取数据库,可以准确的反应数据字典中的信息变化。

数据字典支持的信息项包括:字段的标题、数据类型、基本的校验规则、是否只读、是否默认可见、编辑模式、下拉方式等。同时,利用对DictionaryFactory接口的实现类,数据字典功能还可以方便的跟第三方的数据接驳。

 

80%的路程坐地铁20%步行

做减法的二次开发平台,从长期技术管理的视角来看,一是降低风险,二是兼容并蓄各方的优势研发成果,不过度依赖于对某个厂商的产品,避免发生“短板木桶现象”;从短期某个具体项目的视角来看,能够开发效率提升,项目可管理度增加,产生“地铁效应”。

Make Web Utility and Facility for the World”既是BSTEK的产品目标,也是众多厂商合作共赢的成果。

(图:Marmot中的表格自定义)

表单的个性化定制。当开发人员完成对dorado里的表单(AutoForm)开发后,用户是无法对表单的布局、编辑器类型、表单分组进行调整的。在Marmot中对标准的Dorado里的表单做了一些扩展,使的普通的用户可以根据自己的喜好对表单的布局、分组、字段的编辑器类型、大小等各种属性做一些个性化的定制,同样定制完成后可以保存下来,这样用户刷新页面或下次登录时就可以见到自己最近一次对表单做的调整。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics