企业应用最基本的要求就是只授予用户在他工作职责范围内的权限,一般而言,这种权限都包含两种,一种是对于相应的功能的可见性(或者形象地说,菜单的可见 性,这个是应用层面界面的,这种权限在Siebel里称为View的可见性),这种在Siebel里是由职责(responsibility)来控制的。

   Siebel 里的基础的职责定义了完成一个工种所需要的权限类型,也可以授予一个人多个职责,从而他将具有多个职责的权限。Siebel应用在正常安装后已经定义了一 整套的职责(称为Seed Responsibility),这些职责每个都已经有预定的View权限,当然也可以根据需要创建自己的职责,然后指定该职责所需要的View的权限, 再把职责赋予用户,这样就可以非常严格地控制一个用户所具有的View的权限类型。
    在相应的职责里增加View的时候,可以指定该View做该职责里是“只读的”来防止具有该职责的用户对数据进行修改。View,Responsibility和用户的关系如下图:
siebel_N4-01.jpg

Siebel
  应用里的另一个权限控制是数据权限,也即功能里的数据的可见性(比如一个销售代表可以看见自己的所有销售机会,但是几乎没有什么必要让他看见其他销售代表
的销售机会,而他们的Manager则可以看见他所管理的所有销售代表的销售机会),这称之为数据的可见性,也就意味着哪怕具有相同职责的用户所看见的数据是不一样的,这种Siebel里是通过position职位来控制的,View的控制和数据的控制这两种控制都是彼此独立的,他们结合起来一起控制着Siebel应用用户的权限。

按照数据权限控制的不同,Siebel里的数据可以分为两种类型,一种类型称为Customer Data,这种类型的数据包含销售机会,服务请求等交易类型的数据,这些数据主要由使用Siebel应用的过程中产生,这种数据权限都是控制在记录级别。

另一个相对静态的数据称为Master Data,这些数据相对而言比较静态,包含一些引用类型的数据,比如产品列表,这些数据通常由管理员产生,并按照类型归类,这些数据的权限控制按照类型(catelog)的权限控制进行。

实际上Siebel里的权限控制的思路来源于真实世界里的公司组织里的权限的思路(比如Manager可以看见他所领导的所有的销售的Opportunity),所以Siebel的权限是和公司的组织结构挂钩的,职位在一个组织里形成树状的结构,这样的结构意味着一个层次高的职位可以看见属于他的所有子职位的所有数据,职位并不是这棵树上的所有东西,在这棵上还挂着Division和Organization的概念,Division和Organization和我们平常所见的公司结构图里的分支和部门是一样的概念,其实建立Division和Organization的方法一样,只不过要在建Division的时候选择一个checkbox指定该Division为Organization。但是Organization和Division也有区别,他们都可以用于来设置公司组织架构的层次,但是Divsion里的数据都是共享的(division里可见),如果希望不同的Organization不能够互相看见对方的数据进行数据的控制,则要使用Organization。也就是说Organization可以作为一个数据权限的控制的单位但是Division不可以。
    在Siebel应用里,数据的权限可以划分到用户的ID,职位,所属组织上,下图是雇员,职位和组织的关系:
siebel_N4-02.jpg

即雇员用户可以有多个职位,每个职位也可以属于多个雇员,但是每一个职位一定是属于某个组织的,雇员用户在登录后只能够看见他们当前登录所选择职位的数据,
当然他们登录后也可以改变自己的当前职位,从而能够看见他所赋予的别的职位的数据,我的感觉是,这个Siebel里的职位反而有点象11i里的职责的概
念!

对于动态的Customer Data数据,权限的控制如下图:

siebel_N4-03.jpg

也就是说,记录的权限控制可以是在employee,position或者在Organization级别上又或者它们的一个组合进行,采用哪张方式主要取决于该数据所属的BC的一些特性,通常这些数据都对应着相应的View,如:

My View指得是我的数据,如My Account
         My Teams’ View指的是我的团队的数据(Manager视图)
         All View则是属于一个Organization的所有的数据

通常在一条记录创建的时候,这条的记录的Organization属性就是该用户职位所属的机构,当然也可以手工更改这条记录的机构属性,职位也是一个公司组织结构图上的一个小方块,用于组成公司的上下级汇报关系,而且因为职位远要比雇员要稳定(雇员很可能离职),所以职位的访问控制在企业的很多场景里提供了恰当的数据访问控制方式,,而且使用职位进行访问控制比之使用雇员进行权限控制有更大的稳定性。

前面提到View已经很多次了,但是只有在交代了权限控制之后才能够完全说清楚View的概念,实际上View就是看数据的一种方式,一个View必须以某种权限模式去观察数据(也就是说一个View要么赋予Employee权限,要么赋予position权限,要么赋予Organization权限),如果需要以新的权限方式来观察数据,就需要建立一个新的View,这个就是Siebel里View的概念。

Siebel 基础入门--权限控制的更多相关文章

  1. Java基础—访问权限控制

    Java中访问权限控制的作用: 为了使用户不要触碰那些他们不该触碰的部分,这些部分对于类内部的操作时必要的,但是它并不属于客户端程序员所需接口的一部分. 为了让类库设计者可用更改类的内部工作方式,而不 ...

  2. 25-ESP8266 SDK开发基础入门篇--控制WIFI连接路由器

    https://www.cnblogs.com/yangfengwu/p/11324411.html 说个事情,现在SDK的版本已经出到3.0了,但是我还是使用2.0 如果只是为了学习研究   选择3 ...

  3. <实训|第九天>掌握linux中普通的权限控制和三种特殊的权限(sst),做合格的运维工程师

    linux中,权限的学习是必不可少的,不论是作为一名运维工程师或者是单一的管理者,学习好linux中的权限控制,你就可以保护好自己的隐私同时规划好你所管理的一切. 权限的学习是很多的,不要认为自己已经 ...

  4. Linux学习总结(14)——Linux权限控制

    linux中,权限的学习是必不可少的,不论是作为一名运维工程师或者是单一的管理者,学习好linux中的权限控制,你就可以保护好自己的隐私同时规划好你所管理的一切. 权限的学习是很多的,不要认为自己已经 ...

  5. Sql Server来龙去脉系列 必须知道的权限控制基础篇

    题外话:最近看到各种吐槽.NET怎么落寞..NET怎么不行了..NET工资低的帖子.我也吐槽一句:一个程序猿的自身价值不是由他选择了哪一门技术来决定,而是由他自身能创造出什么价值来决定. 在进入本篇内 ...

  6. 【JAVA零基础入门系列】Day8 Java的控制流程

    什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等.举个栗子,就好比你准备出门买个苹果,把这个过程当成程序的话,可能需要先判断一下 ...

  7. .NET零基础入门之02:源码控制管理器的使用

    一:概述 源码控制管理器,也叫"版本控制"软件,用于存储.追踪目录(文件夹)和文件的修改历史,是软件开发者的必备工具,是专业软件公司的基础工具.它主要是协助在多人团队中控制代码,防 ...

  8. shiro权限控制入门

    一:权限控制两种主要方式 粗粒度 URL 级别权限控制和细粒度方法级别权限控制 1.粗粒度 URL 级别权限控制 可以基于 Filter 实现在数据库中存放 用户.权限.访问 URL 对应关系, 当前 ...

  9. SpringSecurity 3.2入门(7)自定义权限控制介绍

    总结Spring Security的使用方法有如下几种: 一种是全部利用配置文件,将用户.权限.资源(url)硬编码在xml文件中. 二种是用户和权限用数据库存储,而资源(url)和权限的对应关系硬编 ...

随机推荐

  1. [HNOI2014]抄卡组

    [Luogu3234] [LOJ2208] 题解及代码 锻炼哈希码力的一道题 , 具体细节见代码 #include<cstdio> #include<cstring> #inc ...

  2. java的Spring学习2- junit

    1.maven依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...

  3. Hadoop 使用基础

    [摘录自] https://www.yiibai.com/hadoop/hadoop_hdfs_operations.html#article-start 一.HDFS 使用基础 格式化配置HDFS文 ...

  4. python 爬虫系列04-电影天堂连接爬虫

    学习的第四个爬虫 from lxml import etree import requests BASE_D = 'http://www.dytt8.net' headers = { 'User-Ag ...

  5. Android IntentFilter 匹配原则浅析

    1 Intent分为两大类,显式和隐式. 显式事件,就是指通过 component Name 属性,明确指定了目标组件的事件. 比如我们新建一个Intent,指名道姓的说,此事件用于启动名为" ...

  6. DBNull.Value.ToString() == string.Empty

    Console.WriteLine(DBNull.Value.ToString() == string.Empty); //True

  7. STL:vector用法总结

    一:介绍 vector是C++标准模板库,是一个容器,底层是数组,为连续内存.命名空间为std,所属头文件为<vector>   注意:不是<vector.h>vector存储 ...

  8. TOJ 3184 Mine sweeping

    描述 I think most of you are using system named of xp or vista or win7.And these system is consist of ...

  9. unity手游使用terrian注意事项

    1.Terrain比较占性能,普通机器测试,未开terrain  60帧,开启terrain后  30帧 2.Terrain的size大小与占用性能无关,不过越小的Terrain的烘焙上去的阴影越模糊 ...

  10. 简单的 shell 脚本 切分日志

    为避免日志过大,需要按天分割日志,定时计划任务脚本如下: /data/shell/backup_yesterday_nginx_log.sh declare logs_path="/data ...