多租户权限,组织架构树

15-10-24 sinaID30957
              

在多租户系统中,需要使用组织架构树控制权限的使用范围,大家谁有好的例子可以参考

              

2
luda
2015-11-10 09:53

组织结构树是设计用来对整个系统中的资源集进行分层排布用的。一个组织结构节点代表的是一个资源子集,组织结构的节点是上不封顶下不封底的,在我们的应用系统内可以认为根节点代表的是“本系统”内的所有资源。但是我们的系统只是外部更大的系统的子节点而已,所以基于扩展性上的考虑,每一个系统内的组织结构树的根节点可以认为是它自己,而根节点的父节点可以认为是void(虚拟节点)从而上不封顶。

一个组织结构节点表示的是一个资源子集,树形的节点是不会交差的。要限制权限的范围就是通过与组织结构树上的节点进行映射来完成的。比如通过<function1, catalog.catalog1>、<function1, catalog.catalog2>、<function1, catalog.catalog3.110>这三条记录就把function1的作用范围限制在了catalog1、catalog2、catalog3.110这三个资源集合中了。同样可以有<role1, catalog.catalog1>等,任何权限元素都可以往目录树上的节点进行映射,然后权限引擎可以在运行时根据这些映射记录(功能级权限记录全部放内存)判断当前的运动是否越界。

另外,树不止一棵。在系统内,根目录可以认为是thisSystem,而thisSystem下的每一个子目录节点可以认为定性了一棵树,系统中有一片森林,有:组织结构树、资源类型树、运行时数据类型树等各种树。合适的树节点下面还会有“字典节点”、“方法节点”、“字段节点”等、根节点下面还有函数节点。

一共是两个维度,一个是资源集维度一个是功能集维度。通过两个维度的任意两两排列组合和对这些排列组合的解释来表达系统内的所有事情。完全的面向数据编程。估计以后的业务系统都是这种样子的完全的面向数据编程一贯到底。