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

组织架构首先一定是树状的,这就是为什么我们要抛弃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    ENDGOif not exists (select * from dbo.sysobjects where id = object_id(N'{databaseOwner}[{objectQualifier}RedStart_DeptUser]') and OBJECTPROPERTY(id, N'IsTable') = 1)    BEGIN        CREATE TABLE {databaseOwner}[{objectQualifier}RedStart_DeptUser]        (            [DeptID] [int] NOT NULL,            [UserID] [int] NOT NULL,            [UserPrio] [int] NOT NULL,            [IsLead] [bit] NOT NULL DEFAULT(0),            [IsValid] [bit] NOT NULL DEFAULT(1)        )        ALTER TABLE {databaseOwner}[{objectQualifier}RedStart_DeptUser] ADD CONSTRAINT [PK_{objectQualifier}RedStart_DeptUser] PRIMARY KEY CLUSTERED  ([DeptID], [UserID])        ALTER TABLE {databaseOwner}[{objectQualifier}RedStart_DeptUser] WITH NOCHECK ADD CONSTRAINT [FK_{objectQualifier}RedStart_DeptUser_{objectQualifier}RedStart_Department] FOREIGN KEY ([DeptID]) REFERENCES [{objectQualifier}RedStart_Department] ([DeptID]) ON DELETE CASCADE NOT FOR REPLICATION        ALTER TABLE {databaseOwner}[{objectQualifier}RedStart_DeptUser] WITH NOCHECK ADD CONSTRAINT [FK_{objectQualifier}RedStart_DeptUser_{objectQualifier}Users] FOREIGN KEY ([UserID]) REFERENCES [{objectQualifier}Users] ([UserID]) ON DELETE CASCADE NOT FOR REPLICATION    END

有了数据结构和概念之后,剩下的事情就是将之编码出来的过程了,这个相对来说比较简单一点,我们略过。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索null
, not
, 组织架构
一个
dotnetnuke、dotnetnuke中文社区、dotnetnuke 8.0 中文、dotnetnuke 中文网、dotnetnuke教程,以便于您获取更多的相关知识。

时间: 2024-10-30 12:19:26

在DotNetNuke中加入组织架构(二)的相关文章

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

当我们将组织架构的功能开发完成之后,就可以在系统中添加组织架构了. 在这里,有一点需要抱怨一下DotNetNuke,并且赞扬一下Joomla等CMS,Joomla和Drupal都是可以比较方便的增加管理模块的,也就是非普通模块,而是后台管理的模块,如果大家到Joomla的网站上去看一下它的Extentions的话,就可以发现Joomla有多少管理模块了:但是--,也可能是因为我的无知,我还不知道如何将我的某一个功能添加到DotNetNuke的"主机管理"或者"网站管理&quo

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

稍微解释一下:我希望用DotNetNuke不但可以做Internet的东西,而且也可以做Intranet的业务:从目前的情况来看,一般来说,Intranet的业务逻辑可能比Internet的业务逻辑要稍微复杂一点--当然,这并不是确定的事情.在这方面做了一些探索,希望将之分享出来. 对于DotNetNuke来说,已经有了"安全角色","安全角色"在DotNetNuke中非常重要,是用来控制页面和模块权限非常重要的概念,在我们的系统中,安全角色和权限,形成了一个权限矩

WCF中的REST架构二 (支持AJAX的WCF服务

我在昨天的文章WCF中的REST架构一(REST 概述)谈了REST的基本概要,并提出了从HI REST (高REST)到 LO REST (低REST) 的RESTFULness(REST度)的概念.在今天的文章中,我将详细介绍大家可能最为熟悉的REST风格的WCF 服务:支持AJAX的服务.此类服务应属于LO REST的范畴.现在很多人直觉地将"好"等同于"高大全",因而低估了这种LO REST实现的价值.本篇将告诉你这决非事实,支持AJAX的WCF服务是足够强

笙淋:网络推广团队中的组织架构分析

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 最近利用一点时间,把我们网络推广团队的大概组织架构与大家分享一下,希望做网络推广的朋友可以利用一下. 电子商务主管: 负责整个网络推广中心的管理,进行工作分工与协调.监督.考核.所有网络推广中心账号密码的 管理.负责管理所有网络推广方案.网络广告标准.电子杂志.负责网络培训与交流经验. 数据分析部: 每日填写百度竞价监测表及其他网络广告监测数

企业微信组织架构同步优化的思路与实操演练

作为企业级的微信,在业务快速发展的背景下,迭代优化的要求也越发急迫.企业微信初版的全量同步方案在快速的业务增长面前已经捉襟见肘,针对其遇到的问题,怎样做好组织架构同步优化?这是又一篇来自微信团队的技术实战. 写在前面 企业微信在快速发展过程中,陆续有大企业加入使用,企业微信初版采用全量同步方案,该方案在大企业下存在流量和性能两方面的问题,每次同步消耗大量流量,且在 iPhone 5s 上拉取 10w+ 成员架构包解压时会提示 memory warning 而应用崩溃. 全量同步方案难以支撑业务的

MySQL中数据目录的组织架构

归根到底,MySQL是运行在操作系统上的一个软件,它需要借助于文件系统存储数据,本文主要介绍MySQL数据目录的 组织架构. 数据目录的位置 可以通过以下几个方法查看MySQL数据目录的位置: 1)对于一个正在运行的MySQL服务器来说,可以通过查看mysqld的进程获取MySQL数据目录的位置,如下所示: [root@lx202 /data/mysql/data ]# ps -ef|grep mysqld root 5841 7337 0 15:09 pts/1 00:00:00 grep -

解码知乎:知乎组织架构模型“大剖析” UGC 网站优化如何借鉴

中介交易 SEO诊断 淘宝客 云主机 技术大厅 本文深度剖析知乎目前的内容架构模型,对于社区应用开发者可将其中的架构思维推广到一般 UGC 网站产品的优化上. 知乎是目前国内用户平均素质最高的网站,其日均访问 IP 在 60 万以上.对于这样一个用户活跃度极高.产出大量优质内容(UGC)网站来说,如何把内容更好地组织呈现并将其中优质部分的价值最大化,非常重要. 基础模块(1 问题-n 回答-n 评论模块) 知乎基础模块中一个问题对应于 n 个回答,一个回答又对应于 n 个评论,因此我们可以把基础

苏宁宣布组织架构调整:新增三大经营总部

中介交易 SEO诊断 淘宝客 云主机 技术大厅 苏宁云商集团组织架构图 苏宁云商旗下电子商务经营总部组织架构图 新浪科技讯 2月21日上午消息,苏宁今天上午召开新闻发布会,宣布组织架构调整,新增连锁平台经营总部.电子商务经营总部.商品经营总部三大总部,形成三大经营事业群.28个事业部.60个大区的新架构. 苏宁副总裁孟祥胜介绍说,专业.垂直.开放.融合.扁平.自主是此次苏宁组织调整的关键词,最大的变化是从原有的矩阵式转变为事业群组织. 在总部层面,苏宁设立了连锁开发.市场营销.服务物流.财务信息

国美调整组织架构 业务中心转向事业部

新浪科技讯 3月5日上午消息,国美方面称,国美近日实施全新组织架构.其基本思路是建立以品牌及战略规划为龙头,以采购.销售等经营体系事业部制为核心,以IT信息技术.物流.售后.财务.人资等支持体系为服务平台的矩阵式组织架构.组织架构调整有三个方面变化:一是以消费者体验为导向,重视运营:二是以供应链整合为焦点,强化采销.国美将以事业部为单位与供应商进行互动,在新ERP系统构建的协同平台上与供应商实现信息共享:三是以强化未来增长引擎为目标,增设新业务单元,国美此次组织结构调整对电子商务.物流.售后等业