SaaS可配置性设计要点

1 引言

      考虑到系统SaaS需求,就成熟的SaaS应用而言,元数据服务是为用户提供定制和配置应用、满足其特定需求的主要手段。
      可配置能力主要反映在这4个方面:1 程序外观;2 工作流程与业务规则;3 数据模型;4 用户及最终用户的存储权限。 这种自定义的能力应该在易配置性和配置能力两个方面做好权衡,最优结果是通过最方便的配置手段来实现最复杂的自定义功能,但是这个并不容易做到,所以有可能需要针对复杂需求提供基于已有系统的二次开发能力。

2 程序外观

      用户界面,客户通常希望具有用户界面的调整功能,以反映各自公司的品牌风格,因此SaaS应用通常都提供相关特性,以使客户能够更改诸如图形、色彩、字体等相关内容。外观的配置其实包括的内容很多,比较核心的内容是界面元素的多力度模块化,只有实现这一点,才有可能让用户在多个力度级别上去定义自己想显示什么、以什么样的界面风格去显示。

      在实现多力度的模块化界面设计时,需要注意以下几个点:

  1. 符合用户的使用习惯和心理预期,设计时应该从用户的角度出发,考虑用户的使用习惯和心理预期,以便设计出更符合用户需求的界面模块;
  2. 保持一致性,在设计多个界面模块时,应该保持一致的设计风格和交互方式,以便用户能够快速适应整个应用的操作方式;
  3. 提供可自定义的选项,为了让用户能够根据自己的使用习惯进行个性化设置,应该提供可自定义的选项,如调整快捷方式的位置、选择需要显示的快捷方式等。
  4. 考虑不同设备的屏幕尺寸和分辨率,由于不同设备的屏幕尺寸和分辨率不同,因此在设计界面模块时需要考虑不同设备的适配问题,以确保界面的可读性和可操作性。

      用于提高易用性的设计原则有10个,在设计程序外观的时候可以作为参考使用。

设计原则说明例子
用户界面适用于软件的功能用户界面的合适性是指界面与软件功能相融洽的程度一个三维建模软件,如用户不能使用鼠标对模型进行旋转、移动、缩放等操作,那么这个软件的用户界面就不适合于软件的功能。即使这个软件的内核功能很强(如算法很先进),这个软件也很难卖出去
容易理解用户可以根据界面即可理解设计者的操作意图,界面结构清晰能够反映工作流程,以便引导用户按部就班的操作界面中的所有元素(如菜单、工具条)没有错误,也不会让人误解。所有的界面元素应当提供充分而必要的提示,例如当鼠标移动到工具条上的某个图标按钮,应当在该图标旁边出现功能提示。对于复杂界面,最好提供界面“向导”
风格一致同类的界面元素应当有相同的视感和相同的操作方式例如命令按钮是最常见的界面元素,所有命令按钮的形状、色彩以及对鼠标的响应方式都是一致的
及时反馈信息用户进行某项操作后,如果过了一会儿(几秒钟)用户界面一点反应都没有,这将使用户感到迷茫和不安,因为他不知道是自己操作错了还是软件死机了。所以及时反馈信息很重要,至少要让用户心里有数,知道该任务处理得怎么样了,有什么样的结果例如下载一个文件,界面上应当显示“百分比”或相关数字来表示下载的进度,否则人们不知道要等待多少时间。如果某些事务处理不能提供进度等数据,那么至少要给出提示信息如“正在处理,请等待……”
出错处理用户在使用软件的过程中,不可避免地会出现一些错误的操作。在设计用户界面时必须考虑出错处理,避免用户怕犯错误而提心吊胆、小心翼翼地操作。如提供对输入数据进行校验的功能。当用户输入错误的数据时,及时提醒用户改正数据。
适应各种用户一个软件产品可能有许多类型的用户,例如有些用户对计算机比较外行,有一些用户可能是计算机的行家。在设计用户界面时应当尽可能多地了解用户的需求和技能水平,努力使用户在操作软件的时候感觉不到差异和麻烦。例如使用Windows下的文件管理器,对于一个初学者来说,他愿意使用鼠标和菜单一步一步地操作;而对于技术专家而言,他也许更愿意使用热键来获取更高的效率。
国际化在设计用户界面的时候应当充分考虑语言和文化的差异。尽可能使用标准的图解方式和国际通行的语言,要求简单易懂,易于翻译,方便于不同母语的用户。如字体、提示信息、在线帮助;货币、度量单位;数字、日期格式;人的名字、电话号码、通信地址;图标、标签;声音;阅读顺序或习惯;
个性化用户界面的“个性化”与“一致性”之间存在微妙的矛盾关系。对于一些非常注重安全性的商业软件(如银行软件)而言,用户界面的“一致性”要比“个性化”重要得多,因为一致的界面可以减少用户出错的几率。例如,国内所有银行的自动取款机的用户界面都是非常相似的,谁也不会想着设计一些新花样。
合理的布局首先,界面的布局应当符合逻辑,最好能够与工作流程吻合。界面设计人员只有仔细地分析软件的需求,才能提取对界面布局有价值的信息。其次,界面的布局应当整洁(整齐清爽)。界面元素应当在水平或者垂直方向对齐,行、列的间距保持一致。窗体的尺寸要合适,各种控件不能过分拥挤也不能过分宽松。要善于利用窗体和控件的空白,以及分割用的线条。
和谐的色彩用户界面是否美观,主要取决于该界面的布局和色彩搭配。

3 工作流程与业务规则

      为了能广泛地向潜在客户提供服务,任务关键型SaaS应用必须能够满足不同工作流程的需要。如,对于跟踪发票流转的应用而言,一家客户可能要求所有发票均由同一名经理批准;另一家客户则要求每张发票都由两名经理先后批准,第三家客户则要求每张发票得到两名经理批准,而不考虑先后。这时,不同客户应能根据需要自行配置应用的工作流程,以满足各自的商业进程要求。
      所谓业务流程,其实应该属于经典的工作流(workflow)问题。所以这一方面尽管非常重要与复杂,但重点主要是两个,一个是对工作流方法论的研究。另一个是对现存的工作流工具的研究。系统可以考虑做成可配置的,一种做成可以对接外部工作流系统,另一种做出使用内置工作流,针对不同类型的用户配置不同的工作流方式。
      考虑到公司个性化需求除了配置项还可以通过规则引擎来实现业务规则和应用程序代码相分离。通过编辑业务规则可以定制应用表现。规则引擎可以选择Drools,它是为Java量身定制的基于Charles L. Forgy的Rete算法实现的,支持Java代码直接嵌入到规则文件中。
在这里插入图片描述
      Drools是一款基于Java语言开发的开源规则引擎,可以将复杂且多变的业务规则从硬编码中解放出来,以规则脚本的形式存放在文件或特定的存储介质中(如存放在数据库中),使得业务规则的变更不需要修改项目代码、重启服务器就可以在线上环境立即生效。而且在项目中使用Drools,既可以单独使用也可以整合Spring使用。如果单独使用只需要导入pom依赖即可。

4 数据模型

      数据模型的扩展。对于许多数据驱动型SaaS应用而言,单个模型显然不能满足所有需要。即便对于相对简单的任务专用应用而言,如果数据字段和表格一成不变,也会给客户造成麻烦。可扩展的数据模型使客户能自由地让应用根据自身需要工作,而不必为了满足应用的要求而改变底层数据逻辑。
      一个好的数据模型需要对字段、表与表的关系、表的名字进行梳理和构建。字段是一个数据模型中最重要也是唯一需要的部分,是定义一个字段列表。字段列表包括字段名、字段类型、字段长度、校验表达式、默认值等。重点需要关注字段名的命名规则,不能与系统数据库的保留字段同名,字段名是可识别的。字段类型应该是可扩展的自定义型,不能仅只有数据库默认的那几种。
      表与表的关系有一对多关系和多对多关系。父子表是种一对多关系,兄弟表是种多对多的关系。表与表的关系通过主键与外键相关联。所以实体-关系的抽象合理是构建良好数据模型的必要条件。
      表的名字与一篇文章的标题一样重要,一个好的表名让人可以立刻知道这个表的作用,表中存放了哪些数据。系统应该提供一个选项,如db_table用来定义与模型映射在一起的数据库表的名字。

5 用户及最终用户的存取权限

      需要结合业务需求给定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/176897.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信便利签怎么弄?微信中有便捷操作的便签小程序吗

微信在日常办公及生活中比较重要的作用就是:聊天、视频会议、语音会议等,这是大家认知中的微信。除了这些功能以外,微信中还有很多小程序,小程序也能够辅助大家日常的办公。 比如,工作中我们需要制定工作计划&#xf…

vscode开启emmet语法

需要在setting.json中添加配置 首先进入设置,然后点击右上角 Vue项目添加如下配置 "emmet.syntaxProfiles": { "vue-html": "html", "vue": "html" },React项目添加如下配置 "emmet.includeLanguages&quo…

一体化模型图像去雨+图像去噪+图像去模糊(图像处理-图像复原-代码+部署运行教程)

本文主要讲述了一体化模型进行去噪、去雨、去模糊,也就是说,一个模型就可以完成上述三个任务。实现了良好的图像复原功能! 先来看一下美女复原.jpg 具体的: 在图像恢复任务中,需要在恢复图像的过程中保持空间细节…

transformers-Generation with LLMs

https://huggingface.co/docs/transformers/main/en/llm_tutorialhttps://huggingface.co/docs/transformers/main/en/llm_tutorial停止条件是由模型决定的,模型应该能够学习何时输出一个序列结束(EOS)标记。如果不是这种情况,则在…

Mybatis—基础操作

mybatis入门后,继续学习mybatis基础操作。 目录 Mybatis基础操作准备工作删除操作日志输入预编译SQLSQL注入参数占位符 新增操作基本新增添加后返回主键 更新操作查询操作根据id查询数据封装条件查询条件查询 Mybatis基础操作 准备工作 根据下面页面原型及需求&am…

vlc打开网络流(如rtmp),并查看媒体信息(如编码格式等编码信息)

打开vlc 选择媒体,打开网络串流 输入rtmp地址,点击播放 选择工具-编解码信息 可以查看节目的编码信息什么的

SpringCloud 微服务全栈体系(九)

第九章 Docker 三、Dockerfile 自定义镜像 常见的镜像在 DockerHub 就能找到,但是我们自己写的项目就必须自己构建镜像了。 而要自定义镜像,就必须先了解镜像的结构才行。 1. 镜像结构 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而…

Reading:Deep dive into the OnPush change detection strategy in Angular

原文连接:IndepthApp 今天深入阅读并总结Angualr中onPush更新策略。 1. 两种策略 & whats Lview? Angular 实现了两种策略来控制各个组件级别的更改检测行为。这些策略定义为Default和OnPush: 被定义为枚举: export enum…

Spring系统之IOC与AOP

前言 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 IOC 1.IOC的概念 控制反转(IoCInversion of Control)IoC,用白话来讲,就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码…

python manage.py createsuperuser运行错误

我把思念作笺,随风而去,落在你常路过的那个街角… 错误复现 PS D:\教学文件\Django\djangoProject\webDemo02> python manage.py createsuperuser System check identified some issues:WARNINGS: ?: (urls.W005) URL namespace admin isnt unique…

Maven入门与开箱即用

一、初识 Maven(了解) 1、项目遇到的问题 构建:编译代码,运行测试,打包,部署应用,运行服务器等;依赖:项目依赖大量的第三方包,第三方包又依赖另外的包&…

OpenSSL生成CA证书

基本概念 证书类别 根证书:生成服务端证书,客户端证书的基础。自签名。服务端证书:由根证书签发。配置在服务器上。客户端证书:由根证书签发。配置在浏览器、移动APP等客户端上。 认证方式 单向认证(Client鉴权Serv…

2022最新版-李宏毅机器学习深度学习课程-P32 Transformer

一、 seq2seq 1. 含义 输入一个序列,机器输出另一个序列,输出序列长度由机器决定。 文本翻译:文本至文本;  语音识别:语音至文本;  语音合成:文本至语音;  聊天机器人&#…

HiQPdf Library for .NET - HTML to PDF Crack

HiQPdf Library for .NET - HTML 到 PDF 转换器 .NET Core,用于 .NET 的 HiQPdf HTML 到 PDF 转换器 :HiQPdf HTML to PDF Library for .NET C# 和 HTML to PDF .NET Core 为您提供了一个现代、快速、灵活且强大的工具,只需几行代码即可创建复…

CSS标点符号换行问题

最近遇到一个奇怪的现象,元素中中文文本正常显示,但是加了一堆符号后中文文本居然换行了. div{width: 200px;border: 1px solid blue;word-break: break-all;} <div>文本</div>经过研究发现&#xff0c;因为标点符号不允许出现在行首和行尾&#xff0c;连带着符号…

echarts 画散点图, x周,y周在指定位置标志一下

文章目录 echarts 画散点图&#xff0c; x周&#xff0c;y周在指定位置标志一下示例一例子二示例三 echarts 画散点图&#xff0c; x周&#xff0c;y周在指定位置标志一下 示例一 let scatterData {data: [[[-0.2, -0.6],[0.4, 0.3],[0.1, 0.4],[0.3, 0.5],[0.09, 0.1],[0.7,…

安卓现代化开发系列——从生命周期到Lifecycle

由于安卓已经诞生快二十载&#xff0c;其最初的开发思想与现代的开发思想已经大相径庭&#xff0c;特别是Jetpack库诞生之后&#xff0c;项目中存在着新老思想混杂的情况&#xff0c;让许多的新手老手都措手不及&#xff0c;项目大步向屎山迈进。为了解决这个问题&#xff0c;开…

NI USB-4431对标国产化4路同步采集卡解决方案

102.4 kS/s , 100 dB , 0.8 Hz AC/DC耦合&#xff0c;4输入/单输出声音与振动设备 USB-4431专为声音和振动应用而设计。输入通道集成了用于加速度计和麦克风的集成电路压电式(IEPE)信号调理功能。四个USB-4431的输入通道可同步对输入信号进行数字化。模拟输出(AO)通道是激励响…

成集云 | 钉钉集成用友T费用报销付款接口 |解决方案

源系统成集云目标系统 方案介绍 钉钉是一款免费沟通和协同的多端平台&#xff0c;提供PC版、Web版和手机版&#xff0c;支持手机和电脑间文件互传。钉钉帮助中国企业通过系统化的解决方案&#xff08;微应用&#xff09;&#xff0c;提升中国企业的沟通和协同效率。应用场景包…

Springboot 集成 Seata

Seata 是一款开源的分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式&#xff0c;为用户打造一站式的分布式解决方案。Seata官网 1.找到适合的Seata版本 参考&#xff1a;SpringCloudAlibaba S…