我们正在研究新要求,我们需要根据与客户的合同启用功能。它是一个基于 Saas 的软件,支持多租户。该软件默认启用基本功能。
基本功能
用户管理
基本计费/发票
通过电子邮件通知
付款
高级功能
通过短信通知
工作流程
ETC
所有客户端都由相同的软件(显然是相同的部署)提供服务,但数据将存储在不同的数据库模式中。
在这种情况下如何处理基本、高级、附加和专业功能?
我们正在使用spring和hibernate。
AFAIK,您应该在应用程序内部处理这些功能,以便将通知、工作流等功能标记为应用程序功能,并且对于每个租户,租户 ID 和功能之间将存在映射,以便租户只能访问他订阅的功能。
因此,当租户或其用户登录系统时,我们会识别他可以访问的功能和内容,然后将它们展示给用户。这称为租户许可系统。
此外,无论何时使用某个功能,您的代码都应该记录使用该功能的租户以及使用量、时间和与使用度量单位相关的成本。
更详细的讨论,请参考这里
虽然这些都是用 C# 解释的,但在概念理解上应该没有障碍。