快速业务通道

在DotNetNuke中加入组织架构(二)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21

组织架构首先一定是树状的,这就是为什么我们要抛弃DotNetNuke原有的安全角色而重新另建一套的一个最主要的原因——当然,并不是抛弃,在之前说过,我们希望“安全角色”和“组织架构”可以各司其职,在我们的系统里面各自发挥作用而已。

除了体现上下级关系的“部门”之外,我们还希望仍然保留一个“组”的概念。部门体现的是层级关系,而Group则是体现一种横向的关系,比如,把所有的“部门”的负责人都放到一个“组”里面,以方便选择等。简单来说,一种是体现现有实际组织机构的,另外一种则是为了实际工作方便而较为随意的。看过(一)的细心的朋友可以看得出,我把这两种关系都放在一个数据结构里面了,仅仅是通过一个简单的IsDept字段,来区分当前的架构到底是组,还是部门。组和部门可以任意嵌套,于是,有的时候,我们的组织架构看起来确实有点怪怪的:

在部门下面放一个组如果还觉得合理的话,那么,在组下面放一个部门是什么意思呢?

嗯,如果觉得没意思的话,那就别这么做嘛。

不希望出现在正式的架构中的组或者部门,我们可以将之“无效”,也就是灰掉;一方面是一些组织架构,如果不希望删除(因为可能关联了数据和权限)的话可以这么做;另外一方面,我希望在工作流的流程里面可以绑定一些只有对管理员才有意义的组而对一般用户不可见,这样的话,无效的组织架构,就不用给一般的用户看到。

总之,我只用了两张表,就完成了上述的组织架构:Department和DeptUser,这当然是受 DotNetNuke的启发——用最精简的数据结构完成最可扩展性的业务逻辑(崩溃,DotNetNuke有将近200张表、近千个存储过程,还精简?)用户表当然是使用DotNetNuke的Users表了,所以才能将数据结果做的如此精简。

Code

if not exists (select * from dbo.sysobjects where id = object_id(N''{databaseOwner}[{objectQualifier}RedStart_Department]'') and OBJECTPROPERTY(id, N''IsTable'') = 1)
BEGIN
CREATE TABLE {databaseOwner}[{objectQualifier}RedStart_Department]
(
[DeptID] [int] NOT NULL IDENTITY(1, 1),
[PortalID] [int] NOT NULL,
[ParentID] [int] NULL,
[DeptName] [nvarchar] (50) NOT NULL,
[DeptDescribe] [nvarchar] (200) NULL,
[DeptOrder] [int] NOT NULL,
[IsValid] [bit] NOT NULL DEFAULT(1),
[IsDept] [bit] NOT NULL DEFAULT(1),
[CreateDate] [datetime] NULL ,
[CreateUser] [int] NULL ,
)
ALTER TABLE {databaseOwner}[{objectQualifier}RedStart_Department] ADD CONSTRAINT [PK_{objectQualifier}RedStart_Department] PRIMARY KEY CLUSTERED ([DeptID])
CREATE NONCLUSTERED INDEX [IX_{objectQualifier}RedStart_Department] ON {databaseOwner}[{objectQualifier}RedStart_Department] ([PortalID])
ALTER TABLE {databaseOwner}[{objectQualifier}RedStart_Department] WITH NOCHECK ADD CONSTRAINT [FK_{objectQualifier}RedStart_Department_{objectQualifier}Portals] FOREIGN KEY ([PortalID]) REFERENCES {databaseOwner}[{objectQualifier}Portals] ([PortalID]) ON DELETE CASCADE NOT FOR REPLICATION
END
GO
if not exists (select * from dbo.sysobjects where id = object_id(N''{databaseOwner}[{objectQualifier}RedStart_DeptUser]'') and OBJECTPROPERTY(id, N''IsTable'') = 1)
BEGIN
CREATE TABLE {

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号