如何为用户提供不同的组织机构树
需求如下
1,用户隶属于组织
2,组织机构以树型式呈现
3,用户查看时,根据其权限,只能查看到整个组织树的子树,不能看到其他组织节点
4,可以方便的修改用户查看组织机构树的权限
开发平台为
ASP.net 2.0 和Oracle10g
使用TreeView呈现树
我现在想到3个方案
方案1
使用Oracle XML数据库,这部分知识我不了解,我现在想就是使能不能把给每个用户都定义一个组织架构XML文件,然后直接存在Oracle数据库里,跟用户做关联.
不知道是否可行,效率如何.还请赐教
方案2
为每个用户的组织架构保留一个XML文件在服务端,每个XML文件只保留一个用户的组织机构树信息.使用数据库记录用户和其对应的XML文件路径及文件名,直接把这个XML文件作为组织机构树的数据源.
我觉得这个方法最为简单,但是不知道性能如何:比如当用户访问量大的时候,性能如何,会不会遇到问题?作为文件存储,安全性又如何等等
保留的XML如下,通过这样的结构,可以方便的添加属性,
<Org name="集团" guid="">
<Org name="建设一公司" guid="">
<Org name="机关" guid="">
</Org>
<Org name="经理部" guid="">
</Org>
<Org name="财务部" guid="">
</Org>
<Org name="人事行政部" guid="">
</Org>
<Org name="项目一" guid="">
</Org>
<Org name="项目二" guid="">
</Org>
<Org name="项目三" guid="">
</Org>
</Org>
<Org name="建设二公司" guid="">
</Org>
<Org name="投资公司" guid="">
</Org>
<Org name="管理公司" guid="">
</Org>
</Org>
方案3
使用程序遍历生成:
需要添加表格记录用户可以查看的部门根节点,子接点需要通过程序遍历生成.如果有多个根(用户查看到的根并不一定是整个组织机构树的根,因此用户可能查看到多个根节点)的情况,需要追溯其上级节点,最后生成一整课组织机构树
使用这种方法,需要维护表,添加数据,程序开发的难度大.但使用Orecle表存储,安全性有保证.多用户并发访问也比较安全
我不知道这种办法由于需要对树进行遍历,性能影响如何
还请有这方面经验的高手指点,或者某一方面有什么不足和您有什么建议,望多多提出啊!小弟写过了!!