【原创译文】Moqui 概览 — 基本概念(3)

开发过程

Moqui开发框架为了促进开发实现,采用了一些自然的概念,映射源自于设计阶段的元素,比如:界面概览和线框,页面流图,数据声明以及自动的业务过程描述。这里的每个设计阶段的构件都能够被转化为Moqui工具集中特定的实现构件。

这种设计的构件通常是最好的,特别是在基于明确定义和组织特定的活动,例如必须支持干系人和系统之间互相影响之类的需求上。这些需求应当是清晰的,并且能按照设计进行分解以便辅助驱动设计的决策,同时,必须确保系统中所有关键的方面都被认真考虑到并能覆盖设计。

通过这种方式,实现构件能够引用设计的内容,顺延的,设计能够引用需求的内容。伴随着自然的映射设计时的构件,就能很简单的去开发实现业务构件并能同时分配和验证它们。

按照这种架构设计去实现构件的话,通常首先要求创建构件的这个顺序就无关紧要了。不同的人员甚至可以并行的去工作,比如定义实体和创作界面。

对于基于web的应用系统来说,特别是那些需要个性化艺术设计的公开应用,静态构件类似如图片或者CSS样式等都需要独立于界面XML,以单独的文件进行存储。同时,这些静态构件需要按照子界面的目录结构规范去组织文件结构,并且最外层目录需要与界面名相同。在子界面的层级下,不同界面的资源很自然的可以共享。

真实按照界面和表单XML生成的HTML页面能够被个性化定制,只需要对应每个XML元素的生成输出去重写或者添加FreeMarker的宏定义即可。当有需要时,个性化的HTML页面也是可以被包含到界面中的。框架允许这种半可视化的方式定制生成带样式和脚本的HTML页面,或者需要时直接通过自定义的HTML页面去满足需求。

Web前端设计师能够查看真实的通过独立的CSS或者其他静态资源自动生成的HTML页面进行前端开发工作。当需要个性化定制时,前端开发人员可以先制作出HTML原型页面,然后开发人员可以通过制作模板或者定制参数匹配宏定义将定制部分融入到系统中。

另外一种比较好的做法是,雇佣较多的高级前端工程师去完成整个系统的客制化前端HTML、样式及脚本等,前端使用某个格式的JSON数据通过HTTP协议与后端的服务接口进行交互(注:这也是较流行的单页面或者RESTful风格的架构)。这种方式也比较适合于手机或者桌面终端应用通过web services与服务器端进行交互。Web services你可以使用框架内置的JSON-RPC、XML-RPC或者其他的服务自动映射工具,也可以使用自定义的包装服务去调用内部的服务以支持各种web服务应用架构。

不管怎样,对于一个给定的项目来说,你的团队应该是有分工的,各管一块。框架允许你将一个项目按照设计分割成多个构件,这样就很容易的去分配工作了,大家也可以很方便的在定义好的接口基础上并行进行开发工作。

开发工具

在需求和设计阶段,你需要一组很好用的工具来方便用户、领域专家、需求分析人员、设计人员以及开发人员进行沟通交流。这些工具应当具有以下特性:

  • 层次化的文档结构
  • 文档间或者文档内有链接可以关联(通常是链接显示的是被关联的文档标题)
  • 文档需要支持图片等附件形式
  • 每个文档需要有完整的修订版本历史记录
  • 每个文档需要有线框的评论内容
  • 文档更新能够自动邮件通知
  • 统一库管理,能够在线访问,便于交流

现实中有很多这类的工具可供选择,但是大部分的都不满足上述所有的要求,所以沟通上因此会产生诸多不便。一个很好的商业化的选择是Atlassian公司的Confluence。相对很多面向大规模组织使用的产品,Atlassian提供了一种小团队能够负担的起的本地部署方案。同样开源里面也有很多的选择,包括基于Moqui和Mantle的wiki就用在了HiveMind的项目管理上。

注意下,内容沟通工具通常会与你的代码库隔离,尽管如果你把内容管理工具和你的代码库合并,那么参与你的项目的人会比较方便的使用它。因为Moqui框架本身支持渲染wiki页面和传递二进制的附件,所以你可能会认为这是个Moqui的组件。但这里最大的问题是,除非Moqui有个很完善好用的wiki应用能够很方便的更新内容,否则这将很难去吸引技术较弱的人来参与Moqui的项目。

对于实际的代码库也有很多的选择,但更多的会依赖于个人或者团队的倾向。Moqui本身是存放在GitHub上的,并且GitHub上的私有库的价格是能接受的(特别是些小的项目库)。如果你正好也使用GitHub,从jonesde的moqui库中切分支,在自己的私有库中维护自己的运行时目录,同时定期更新基础的主程序的代码即可。

对于项目开发来说,即使你不使用GitHub,那么使用一个本地或者远程的git代码库也是个很好的管理代码的方式。当然,如果你倾向于使用Subversion或者Mercurial,也是无可厚非的选择。

对于真正的开发过程来说,你也许需要一个编辑器或者开发环境支持以下类型的文件:

  • XML(支持自动完成、验证、显示注释等)
  • Groovy(groovy脚本语法特性支持以及XML文件中的groovy脚本语法特性支持)
  • HTML,CSS和JavaScript脚本
  • FreeMarker(FTL)
  • Java(可选的)

我个人倾向使用的是JetBrains的IDE工具IntelliJ IDEA。社区免费版对于XML和Groovy支持性非常好。对于HTML,CSS,JavaScript以及FreeMarker支持你需要购买商业版,否则IDE只是作为简单文本编辑器支持。我就是使用了商业版完成了大部分Moqui框架的实现,包括复杂的FreeMarker宏定义模板。在购买了个人授权使用商业版后,我开发起来真的很爽,但是社区版本身就已经很强大了。

其他流行的Java IDE比如EclipseNetBeans同样也是很好的开发选择,它们提供了构建和插件功能去支持以上这些类型的文件。我个人喜欢开发工具有自动完成和其他高级的开发辅助功能,但是你如果喜欢简单的文本编辑器,那么选择自己喜欢的就好了。

Moqui 开发框架基于Gradle(1.0及以上版本)构建。虽然包括IntelliJ IDEA在内的IDE都提供了相当好的简化命令任务的用户界面操作支持,但是我个人更喜欢命令行的方式去构建运行项目。




  • 作者: Eric Chang
  • 出处: http://gagaboy.github.io/
  • 本文基于 署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议发布
  • 欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接以及作者(上方两项信息)否则:保留追究法律责任的权利。