SaaS软件系统可配置性

/ 0评 / 21

为了降低定制开发的成本,SaaS软件系统必定需要满足不同租户对软件系统的需求,比如:不同租户之间的订单流转流程不一样、为了迎合不同的租户风格商城风格也需要不一样的展示……。
如果不是定制开发,那解决方案必然是可配置,通过系统界面我们可以对订单流程进行配置,对商城进行装修。
那么针对于软件系统可配置性的实现,是否就简单粗暴的用于key-value的形式进行定义?

我们在考虑SaaS软件系统可配置性时,需要考虑到一点就是配置性尤其多,配置含义也是五花八门,如果只是用key-value的形式,可行但虽然配置项越来越多,开发工作量也会越来越多。
可配置性比较通用的实现方式,就是通过MetaData元数据来实现的。

针对SaaS软件系统可配置性,主要有以下4大范围:
1、数据可配置
2、功能可配置
3、界面可配置
4、流程可配置

这些配置,对比传统系统的配置存在一些特点:
1、在系统运行过程中配置
2、一个租户一份或多份配置
3、由租户所属的用户进行配置
4、配置只是对单一个租户有效
5、使用时动态装载,并非系统初始时装载。

一、数据可配置

这个就说某些租户需要在下单时候除了备注以外还增加其他字段进行保存,这种情况几乎很难说服租户采用备注字段进行复用。可以称为数据需要可配置,也就是扩展数据。
实现数据可配置的主要有以下3种方案:
1、定制字段
2、预分配字段
3、名称值对,通用的MetaData元数据,将数据表的横向扩展转换为纵向的数据集。

二、功能可配置

每个租户对于软件系统而言,可能暂时只需要一部分,按需使用·按需购买。那么在技术设计上如何实现?

第一步:领域划分及功能划分,比如仓库、订单 可以相互独立的领域。
第二步:功能依赖关系,比如订单领域必须依赖商品领域。
第三步:应用包设计,比如系统存在不同专业版本、旗舰版本。还存在应用市场,额外的功能可以通过应用市场进行购买。

三、页面可配置

除了细粒度的账号权限管理以外,还需要对功能权限名称进行定义。 比如:客户 - 顾客 - 用户 - 商户 ,都可以代表同个意思,但在不同租户来看,使用习惯完全不一样。
更加具有代表性的,就是商城界面可以通过拖拽实现不同的展示风格页面。

四、流程可配置

流程可配置我认为是可配置中最为复杂的,工作流程的变动会影响到数据流的变更,还需要考虑到数据流变更后是否原有数据未流转的情况。
比较完整流程可配置方案支持是用于工作流引擎支持,但这样必然带来更高的复杂度。 
我们结合业务的评估,在实现中我们并没有采用工作流引擎的方式,梳理出核心业务流程通过MetaData元数据的配置方式进行流转。
对于代码而言简单清晰不复杂,也适应流程配合多样性的问题。

发表评论

您的电子邮箱地址不会被公开。