01 基于SAAS架构通过双租户实现单位和项目细粒度数据隔离

1 需求

  1. 项目部署到云上,供多家单位不同部门人员使用。如图Ⅰ
  2. 不同单位有不同项目,在每个项目中会邀请不同单位不同部门人员进行协同办公。如图Ⅱ
    01 基于SAAS架构通过双租户实现单位和项目细粒度数据隔离
    图Ⅰ 多单位多用户
    01 基于SAAS架构通过双租户实现单位和项目细粒度数据隔离
    图Ⅱ 多项目多人员

2 思考

  1. 多家单位数据如何隔离?
  2. 多个项目数据如何隔离?
  3. 同一项目人员如何协同办公?
  4. 同一用户参加不同项目,在各项目中权限不一样如何解决?
  5. 同单位人员在不同项目中的数据如何共享?

3 解决方案

3.1 双框架

本案例基于Jeesite4.X专业版。

  1. 搭建两个Jeesite项目WEB端, U-WEB和P-WEB;
  2. U-WEB以单位为租户做数据隔离;
  3. P-WEB以项目为租户做数据隔离;

3.2 团队管理

  1. 项目创建时,同步在P-WEB中创建项目租户;
  2. 各单位人员通过邀请码或链接等方式加入项目;
  3. 加入后的人员成为P-WEB的用户;
  4. 加入后的人员除租户字段为项目租户字段外,其它信息与U-WEB中的用户信息相同,并增加扩展字段关联U-WEB用户建立关系;
  5. U-WEB项目更新时同步更新P-WEB租户;
  6. U-WEB人员更新时同步更新P-WEB用户;

这样,U-WEB和P-WEB两个项目根据不同的需求,授予不同人员不同的功能权限和数据权限。单位与单位之间,项目与项目之间,互不影响,以项目为租户的框架下人员也可以通过流程流转进行协同办公。

如何确保数据同步一定成功呢?类似平台提现到银行,如何确保用户只需要操作一次,确保提现一定到账。

请阅读 02 通过线程池同步数据确保用户请求只会发送一次

如何实现一处登录,两个框架不同项目之间共享回话呢?

请阅读03 整合CAS实现一处登陆多处共享会话

框架前后端分离,如何确保是同一回话呢?

请阅读04 Jeesite4.x 登录后重定向到自定义请求,前后端分离时确保是同一会话