1 引言
考虑到系统SaaS需求,就成熟的SaaS应用而言,元数据服务是为用户提供定制和配置应用、满足其特定需求的主要手段。
可配置能力主要反映在这4个方面:1 程序外观;2 工作流程与业务规则;3 数据模型;4 用户及最终用户的存储权限。 这种自定义的能力应该在易配置性和配置能力两个方面做好权衡,最优结果是通过最方便的配置手段来实现最复杂的自定义功能,但是这个并不容易做到,所以有可能需要针对复杂需求提供基于已有系统的二次开发能力。
2 程序外观
用户界面,客户通常希望具有用户界面的调整功能,以反映各自公司的品牌风格,因此SaaS应用通常都提供相关特性,以使客户能够更改诸如图形、色彩、字体等相关内容。外观的配置其实包括的内容很多,比较核心的内容是界面元素的多力度模块化,只有实现这一点,才有可能让用户在多个力度级别上去定义自己想显示什么、以什么样的界面风格去显示。
在实现多力度的模块化界面设计时,需要注意以下几个点:
- 符合用户的使用习惯和心理预期,设计时应该从用户的角度出发,考虑用户的使用习惯和心理预期,以便设计出更符合用户需求的界面模块;
- 保持一致性,在设计多个界面模块时,应该保持一致的设计风格和交互方式,以便用户能够快速适应整个应用的操作方式;
- 提供可自定义的选项,为了让用户能够根据自己的使用习惯进行个性化设置,应该提供可自定义的选项,如调整快捷方式的位置、选择需要显示的快捷方式等。
- 考虑不同设备的屏幕尺寸和分辨率,由于不同设备的屏幕尺寸和分辨率不同,因此在设计界面模块时需要考虑不同设备的适配问题,以确保界面的可读性和可操作性。
用于提高易用性的设计原则有10个,在设计程序外观的时候可以作为参考使用。
设计原则 | 说明 | 例子 |
---|---|---|
用户界面适用于软件的功能 | 用户界面的合适性是指界面与软件功能相融洽的程度 | 一个三维建模软件,如用户不能使用鼠标对模型进行旋转、移动、缩放等操作,那么这个软件的用户界面就不适合于软件的功能。即使这个软件的内核功能很强(如算法很先进),这个软件也很难卖出去 |
容易理解 | 用户可以根据界面即可理解设计者的操作意图,界面结构清晰能够反映工作流程,以便引导用户按部就班的操作 | 界面中的所有元素(如菜单、工具条)没有错误,也不会让人误解。所有的界面元素应当提供充分而必要的提示,例如当鼠标移动到工具条上的某个图标按钮,应当在该图标旁边出现功能提示。对于复杂界面,最好提供界面“向导” |
风格一致 | 同类的界面元素应当有相同的视感和相同的操作方式 | 例如命令按钮是最常见的界面元素,所有命令按钮的形状、色彩以及对鼠标的响应方式都是一致的 |
及时反馈信息 | 用户进行某项操作后,如果过了一会儿(几秒钟)用户界面一点反应都没有,这将使用户感到迷茫和不安,因为他不知道是自己操作错了还是软件死机了。所以及时反馈信息很重要,至少要让用户心里有数,知道该任务处理得怎么样了,有什么样的结果 | 例如下载一个文件,界面上应当显示“百分比”或相关数字来表示下载的进度,否则人们不知道要等待多少时间。如果某些事务处理不能提供进度等数据,那么至少要给出提示信息如“正在处理,请等待……” |
出错处理 | 用户在使用软件的过程中,不可避免地会出现一些错误的操作。在设计用户界面时必须考虑出错处理,避免用户怕犯错误而提心吊胆、小心翼翼地操作。 | 如提供对输入数据进行校验的功能。当用户输入错误的数据时,及时提醒用户改正数据。 |
适应各种用户 | 一个软件产品可能有许多类型的用户,例如有些用户对计算机比较外行,有一些用户可能是计算机的行家。在设计用户界面时应当尽可能多地了解用户的需求和技能水平,努力使用户在操作软件的时候感觉不到差异和麻烦。 | 例如使用Windows下的文件管理器,对于一个初学者来说,他愿意使用鼠标和菜单一步一步地操作;而对于技术专家而言,他也许更愿意使用热键来获取更高的效率。 |
国际化 | 在设计用户界面的时候应当充分考虑语言和文化的差异。尽可能使用标准的图解方式和国际通行的语言,要求简单易懂,易于翻译,方便于不同母语的用户。 | 如字体、提示信息、在线帮助;货币、度量单位;数字、日期格式;人的名字、电话号码、通信地址;图标、标签;声音;阅读顺序或习惯; |
个性化 | 用户界面的“个性化”与“一致性”之间存在微妙的矛盾关系。对于一些非常注重安全性的商业软件(如银行软件)而言,用户界面的“一致性”要比“个性化”重要得多,因为一致的界面可以减少用户出错的几率。 | 例如,国内所有银行的自动取款机的用户界面都是非常相似的,谁也不会想着设计一些新花样。 |
合理的布局 | 首先,界面的布局应当符合逻辑,最好能够与工作流程吻合。界面设计人员只有仔细地分析软件的需求,才能提取对界面布局有价值的信息。其次,界面的布局应当整洁(整齐清爽)。界面元素应当在水平或者垂直方向对齐,行、列的间距保持一致。窗体的尺寸要合适,各种控件不能过分拥挤也不能过分宽松。要善于利用窗体和控件的空白,以及分割用的线条。 | |
和谐的色彩 | 用户界面是否美观,主要取决于该界面的布局和色彩搭配。 |
3 工作流程与业务规则
为了能广泛地向潜在客户提供服务,任务关键型SaaS应用必须能够满足不同工作流程的需要。如,对于跟踪发票流转的应用而言,一家客户可能要求所有发票均由同一名经理批准;另一家客户则要求每张发票都由两名经理先后批准,第三家客户则要求每张发票得到两名经理批准,而不考虑先后。这时,不同客户应能根据需要自行配置应用的工作流程,以满足各自的商业进程要求。
所谓业务流程,其实应该属于经典的工作流(workflow)问题。所以这一方面尽管非常重要与复杂,但重点主要是两个,一个是对工作流方法论的研究。另一个是对现存的工作流工具的研究。系统可以考虑做成可配置的,一种做成可以对接外部工作流系统,另一种做出使用内置工作流,针对不同类型的用户配置不同的工作流方式。
考虑到公司个性化需求除了配置项还可以通过规则引擎来实现业务规则和应用程序代码相分离。通过编辑业务规则可以定制应用表现。规则引擎可以选择Drools,它是为Java量身定制的基于Charles L. Forgy的Rete算法实现的,支持Java代码直接嵌入到规则文件中。
Drools是一款基于Java语言开发的开源规则引擎,可以将复杂且多变的业务规则从硬编码中解放出来,以规则脚本的形式存放在文件或特定的存储介质中(如存放在数据库中),使得业务规则的变更不需要修改项目代码、重启服务器就可以在线上环境立即生效。而且在项目中使用Drools,既可以单独使用也可以整合Spring使用。如果单独使用只需要导入pom依赖即可。
4 数据模型
数据模型的扩展。对于许多数据驱动型SaaS应用而言,单个模型显然不能满足所有需要。即便对于相对简单的任务专用应用而言,如果数据字段和表格一成不变,也会给客户造成麻烦。可扩展的数据模型使客户能自由地让应用根据自身需要工作,而不必为了满足应用的要求而改变底层数据逻辑。
一个好的数据模型需要对字段、表与表的关系、表的名字进行梳理和构建。字段是一个数据模型中最重要也是唯一需要的部分,是定义一个字段列表。字段列表包括字段名、字段类型、字段长度、校验表达式、默认值等。重点需要关注字段名的命名规则,不能与系统数据库的保留字段同名,字段名是可识别的。字段类型应该是可扩展的自定义型,不能仅只有数据库默认的那几种。
表与表的关系有一对多关系和多对多关系。父子表是种一对多关系,兄弟表是种多对多的关系。表与表的关系通过主键与外键相关联。所以实体-关系的抽象合理是构建良好数据模型的必要条件。
表的名字与一篇文章的标题一样重要,一个好的表名让人可以立刻知道这个表的作用,表中存放了哪些数据。系统应该提供一个选项,如db_table用来定义与模型映射在一起的数据库表的名字。
5 用户及最终用户的存取权限
需要结合业务需求给定。