首先,不管针对任何元素进行可配置最终效果还是体现在界面上,主要包括两个方面:一方面是功能菜单,另外一方面是功能页面。
功能菜单作为原子功能的承载体,其包含的上下级及依赖关系直接反应了功能可配置,而功能页面的可定制化可有效的体现租户的特性数据。对于常用SaaS设计,功能菜单定制化可通过系统菜单框架来实现,功能页面定制化可通过功能页面容器来实现。
其次,针对流程、数据、功能的可配置需通过三类主流的工作引擎来实现。流程可配置对应的是工作流引擎,拓展数据的查询、使用、提交及相应的检查可通过拓展数据引擎。最后,设计单独的功能引擎,负责系统内功能的调度和租户功能的使用。
所以,可配置系统的运行,需要包括系统菜单框架、功能页面容器、工作流引擎、拓展数据引擎、功能引擎的配合。
下面将对其进行一一的讲解,需要说明的,下面只是简单的介绍基本概念,至于具体详细设计,笔者将会在后续的文章中做进一步说明。
系统菜单框架
系统菜单框架主要负责系统功能菜单的展示,其主要目的在于满足租户对功能菜单定制化的需求,依托功能菜单框架系统可根据租户所配置的菜单进行装载。
需要注意是的,系统菜单框架需要依托功能引擎。因为在实际产品设计过程中,功能菜单背后所体现的是具体的原子功能。因此,需要结合功能引擎,在系统运行过程中,功能引擎负责为对应的功能菜单装载功能。同时,在菜单被点击时,由功能引擎负责对具体原子功能的调度和使用。
如上图所示,功能菜单可直接展示给租户查看并操作,但底层具体装载和调度还是有功能引擎实现,系统菜单框架只提供功能菜单的配置。
功能页面容器
功能页面容器主要解决的问题包含:页面要素展示、页面功能可用性、可配置数据展示、可配置数据提交。
页面要素展示:页面要素展示就是根据页面的设计或租户的配置,展示页面的各种要素,在实际生产过程中租户来源于各行各业,不同的行业或公司有不同的设计要求,都需要在页面要素展示中通过配置实现。 页面功能可用性:根据租户的购买行为,确定对应的原子功能是否可用。针对不可使用功能,系统可设置为不可用或直接隐藏。 可配置数据展示:根据租户针对页面实现定义可配置数据列表,在页面自动展示。前面在《SaaS可配置化:数据可配置》中提及,用户根据实际需要,会产生添加拓展数据的需求,在系统实际运行过程中需要通过功能页面容器对拓展数据实现特性化展示。 可配置数据提交:租户针对页面实体设计的可配置数据项,当页面提交时,从页面实体中收集可配置的数据内容,和页面实体一并提交。针对需要进行提交验证的数据,采用正则表达式进行验证。 拓展数据引擎
拓展数据引擎主要负责拓展数据的展示,拓展数据的提交,拓展数据的校验与保存。在实际生产过程中,拓展数据引擎需要依赖功能页面容器来实现,其主要工作方式为负责对应拓展数据的转换。例如:拓展数据展示时,系统从后台获取对应的数据,交由拓展引擎负责对其进行相应的类型转换,进而完美的显示到页面。
功能引擎
功能引擎的实现最终还是需要依赖系统菜单框架及功能页面容器两方面的配合,功能引擎主要作用是依据租户所购买的功能包为其分配对应原子功能,而原子功能依托系统功能框架体现到用户端。
在实际使用过程中,功能引擎会确定对应的租户是否可执行相应的功能或操作。
上述对可配置系统运行的核心模块做了简单的介绍,后续将会根据实际工作需要,对其逐一进行详细说明。