=================================================
一、开源组织机构权限管理系统(fbframe)对使用者的重要性
=================================================
基于EOS实现的开源组织机构权限管理系统(fbframe)对使用者的重要性表现在如下几个方面:
一、对EOS的开发者而言,fbframe是一个非常好的应用系统学习案例:项目中的模型清晰,容易理解,代码质量较高,代码规范性较高,注释清楚,项目中涵盖了一个企业应用常见的技术点,如树的处理、菜单、登录、session处理、ajax等等
二、对应用项目开发组而言,fbframe是一个非常好的业务组件,可以大大减少系统开发的工作量:fbframe提供的组织机构权限管理模型通用性较高,功能比较强大;由于是非常规范的开源系统,功能扩展方便灵活
三、对基于fbframe实现应用系统的最终用户而言,fbframe是一个功能强大,高效稳定,易于维护和扩展的系统功能模块:fbframe具有较强的扩展性,对业务系统的权限模型有较强的兼容性;为未来统一所有业务系统的用户权限管理提供的可能
=================================================
二、系统背景
=================================================
在任何一个企业管理系统中,肯定需要一套基本的组织模型和权限管理的系统,能够完成机构、员工的维护,能够给员工进行授权和管理。在EOS3.X和EOS5.0/5.1产品中内置了一套权限管理和组织机构维护的系统,而且这套系统的角色、机构模型也是EOS工作流管理系统的基础。而这套系统是从EOS的早期版本开发继承过来的,因为早期EOS产品不完善,而这套程序开发人员比较多,代码比较凌乱,而在大多数的EOS应用系统中都可能或多或少的对程序进行修改,因为原来代码凌乱,修改的起来比较困难,而且原来的程序没有使用产品最新特性。因此普元服务部门决定将原来的程序进行重新编写,继承保留了原有产品的数据模型(即数据库基本不变,保证工作流仍然使用),使用EOS5.1的最新特性将产品重新编写了一套。这套也可以做为EOS产品开发的例程提供给初学者做为借鉴。
=================================================
三、系统介绍
=================================================
2.1 系统实现的基本业务模型
用户(EOSOperator):能够使用应用的唯一身份的人
角色(EOSRole):访问应用系统各种权限(包括功能、菜单和数据权限)的集合,一个用户可以有一或多个角色
机构(EOSORG_T_Organization):企业管理中企业分层的基本单元,在本系统中机构只支持单树模型一个企业只有一个根机构(总部),除开根机构其他机构只有一个父机构,可以有多个子机构
岗位(EOSORG_T_Position):一个企业的某个部门的职位(相当于在部门下有相同职能的员工的集合),它隶属于某个具体的部门,并且可以有一个或者多个员工在岗位上任职
员工(EOSORG_T_Employee):企业中的人员,一个人员属于一个机构,一个人员关联一个用户
业务功能(EOSBizCatalog):根据业务在系统中定义的业务操作,一个业务功能包含了多个展现逻辑多个业务逻辑、多个JSP页面
菜单(EOSMenu):在B/S应用中,可以进行点击操作的入口,菜单分为叶子菜单和非叶子菜单,一个非叶子菜单可以有多个叶子菜单和非叶子菜单
数据权限:是在对EOS的数据定义的实体(EOSEntity)进行“查询”,“修改”和“删除”操作时候的过滤条件,每个数据权限是针对一个数据实体定义的过滤条件,在条件中支持变量方式(采用XPATH)可以使用当前会话区中的数据进行过滤。只要使用EOS提供的对EOSEntity进行query、update和delete操作时候,数据权限将生效。一个角色有多个过滤条件,当一个用对某个EOSEntity访问操作时候,这个用户拥有某个角色的对这个EOSEntity的数据过滤条件的关系是AND,而这个用户的多个角色的过滤条件的关系是 OR。
2.1.1 岗位的特别说明
在大多数业务系统中,往往都需要将角色和部门进行关联,而且对于工作流的任务执行者是机构+岗位交集。即某项工作是某个部门下拥有某个角色的员工来完成。因此EOS的下个小版本(5.1.2)中对工作流进行了扩展一个新的对象:岗位(职位)。
在EOS工作流引擎中支持基于岗位的活动参与者方式,即在流程中某个活动可以直接发给某个岗位,这个岗位下的员工就可以领取这个任务去执行;除开岗位做为参与者新支持了角色+机构的方式。如设置流程活动的参与者时候,可以设置一个角色+机构变量(如rolea+$list/org/id),工作流引擎将根据机构id查询当前机构中关联了角色rolea的所有岗位,并且给岗位分配任务。
2.2 实现的功能和技术特性
1、机构管理:机构管理功能中集成了员工的管理,本功能特点是使用了动态tree实现了在一个界面中完成机构的维护、员工维护等功能,在员工的维护中完成了员工对应用户的维护。
2、菜单管理:完成应用系统菜单的维护功能,也是采用动态tree方式进行维护
3、逻辑管理:支持展现逻辑、业务逻辑和JSP页面权限校验的功能。
4、功能管理:采用DateCell技术实现功能的维护,实现了业务功能包含展现逻辑、业务逻辑和JSP页面的维护
5、数据权限管理:提供了数据过滤条件的维护功能,采用了多级级联select技术实现部分功能
6、角色管理:采用DateCell技术实现了角色的维护,完成角色-功能的维护,角色-用户的维护,角色-菜单维护,角色-数据权限维护
7、业务字典维护:实现了一个两级级联的DateCell维护功能。
8、元数据管理:针对某个表,可以通过对数据实体的配置,可以在不做任何开发的情况下,提供对该数据表的维护功能,而且可以结合角色,实现对表及列的操作权限控制
2.3 补充说明
1、机构管理员角色:实现了一个分级授权的机构管理员角色,当一个员工拥有“机构管理员”的角色时,他可以维护他所在机构以及下级机构的员工,并可以把“授权给他的角色”分配给他管辖的员工。在授权给一个员工的角色时候,如果授予了“机构管理员”角色,同样要授权给他“可以授权的角色”。
2、引用头文件:head.jsp 和tail.jsp文件可以在iframe的页面框架和非iframe的框架中进行切换。
3、隐含提交:ajax的XMLHTTP的功能支持(/fbtools/page/hiddensubmit.js),可以在IE浏览器页面中不刷新页面情况下,调用系统的业务逻辑获得系统数据并填写在html页面中框架功能支持,在这个系统中如动态tree的节点删除,两个select之间的切换均采用这种技术实现,具体请参考【系统概要设计】文档中的程序参考使用说明
4、多选页签:这个页签使用功能简单,并可以同时支持DIV和IFRAME两种页面效果,使用手册请参考【系统概要设计】文档
5、界面模板:为项目定制了一套模板,可以将fbframe.tpl导入到当前工作区中,使得开发的界面风格一致。
6、安全机制:采用了filter技术,可以对访问的所有展现逻辑和jsp进行权限检查。所有的安全设置都是在"逻辑管理"功能中设置,只有设置了需要权限校验的逻辑才验证权限,否则可以直接访问。在访问展现逻辑是,展现逻辑调用的业务逻辑和转向的jsp页面时,是不校验调用的业务逻辑和JSP页面的访问权限。只要展现逻辑有权访问,它调用业务逻辑和转向的jsp页面都可以。(特别例外:在weblogic中它的web容器比较特殊,展现逻辑定位的JSP页面也会通过filter进行安全检查,所以在weblogic环境配置校验时候需要注意)
=================================================
四、资源下载及版本更新内容
=================================================
A)下载地址:
>> 开源组织机构权限管理系统(含EOS的AJAX应用框架实现)打包下载(更新日期20071016) <<
提示:如果您的浏览器(或其他网络助手类插件)开启了禁止弹出式窗口功能,请暂时禁用,下载后再开启,以保证您可以正常下载,谢谢
相关链接: EOS的AJAX应用框架的说明
相关链接: 组织机构与权限管理系统开源论坛专题
使用中需要任何支持,请 点此链接
B)下载资源说明:
1、fbframe_install.rar资源包包含:
开源项目部署文件fbframe.epj
EOS源码工程fbframe.zip
开源项目的模版文件
开源项目的部署使用说明install.txt
开源项目的说明readme.txt
开源项目的cvs提取手册
2、fbframe_design.rar资源包包含:
EOS基础业务框架(fbframe)说明书:详细说明了该项目的功能、设计、技术特性等
数据库模型文件EOS-ORG.pdm
概念模型fbframe.cdm
3、fbframe_doc.rar资源包包含
通过EOS Studio自动生成的项目详细设计文档。
C)版本更新说明
V1.1.0R20071016
本次发布的版本没有添加新功能,主要修复了如下BUG,具体见fbframe_install中的fbframebugfixlist.xls:
1、当系统中的组织结构和用户很多时,在维护岗位时,进行删除某岗位对应的角色,系统奇慢无比;
2、 菜单管理中的左侧菜单树没有按displayOrder排序;
3、角色菜单设置中菜单树没有按displayOrder排序;
4、 outlookmenu,点击出错;
5、 机构人员删除以后跳转页面不正确;
6、 字典维护过滤值没有校验数据类型;
7、dropmenu导致页面闪烁问题;
8、数据字典的输入最大长度太小;
9、机构管理员不能分配机构管理员权限给其他用户时,修改用户信息有javascript错误提示的错误;
10、隐含提交没有处理SessionEntity,返回SessionEntity不起效果;
11、删除菜单时如果菜单没有menuSeq时会删除所有菜单的错误。
V1.1.0R20070213
1、规范了代码,增补了源码中的注释、调整了运算逻辑图元的排列方式
2、删除冗余菜单,去掉了非fbframe开源框架的菜单
3、清除Studio中显示的警告信息
4、在管理员角色菜单中增加了元数据维护测试的菜单。
V1.0.0R20061009
1、在业务字典维护功能中的datacell增加一个查询功能
2、当鼠标移到下列菜单中时候,为了避免select对象盖住菜单而隐藏窗口的select对象的问题,不用隐藏select对象
3、角色维护功能中增加查询功能
4、功能管理中增加查询功能
5、优化员工的增加、修改和查询功能
6、为orgSelect增加根据机构类型过滤的属性(orgTypeId)过滤方式采用in 的sql语句方式
7、修改tab不能和其他tag嵌套的问题
8、优化逻辑管理的功能
9、增加一个元数据管理的功能。
=================================================
五、升级原来系统的注意事项
=================================================
1、原来的组织机构模型中,对orgLevel的层次没有正确维护,如果原有的机构树中已经建立好,需要手工修改一下机构表中的orgLevel的字段信息,在原来模型中所有的orgLevel字段值都是"1"
2、如果访问到EOS5.1.1 server环境中缺省提供的页面时候菜单会变成原来菜单样子,如果要将原来的页面的菜单风格统一请参照/fbrole/main/dropmenu/top.jsp文件修改server上缺省提供了hciHead.jsp等文件就可以将原来提供的页面菜单换成统一的菜单风格。需要修改的jsp页面有:
/internet/hciHead.jsp
/internet/BNOM/hciHead.jsp
/internet/eosapp/hciHead.jsp
/internet/WFCOMMON/wfHciHead.jsp
=================================================
六、开源权限管理项目典型截图
=================================================
|
组织机构管理界面
|
角色管理界面
|
菜单管理界面
|
业务逻辑示例
|
页面流转逻辑(展现逻辑)示例
|
|

|

|

|

|

|
|