1、 COFrame 概要设计说明书Page 1 of 41COFrame 概要设计说明书COFrame 概要设计说明书Page 2 of 41文档修订记录序号版本号 修订日期 修订概述 修订人 审核人 批准人 备注1.2.3.4.5.6.7.8.COFrame 概要设计说明书Page 3 of 41目 录1 引言 .41.1 编写目的 .41.2 名词术语 .41.3 参考资料 .51.4 文档约定 .52 参与者与组织机构设计 .52.1 参与者模型及接口说明 .62.1.1 参与者类型 .122.1.1.1 角色 .122.1.1.2 机构 .122.1.1.3 岗位 .142.1.1.4
2、员工 .152.1.1.5 用户 .172.1.1.6 机构角色 .192.1.2 参与者关系 .192.1.2.1 员工用户 .192.1.2.2 机构机构 .202.1.2.3 机构岗位 .202.1.2.4 机构员工 .212.1.2.5 岗位岗位 .232.1.2.6 岗位员工 .242.1.3 参与者授权 .252.1.3.1 角色用户 .262.1.3.2 角色员工 .262.1.3.3 角色岗位 .262.1.3.4 角色机构 .272.1.4 参与者与工作流的关系 .272.2 参与者权限设计 .292.2.1 参与者权限计算 .292.2.2 用户登录 .322.2.2.1
3、登录密码校验 .322.2.2.2 用户权限信息初始化 .332.3 资源授权设计 .352.3.1 资源注册 .362.3.2 资源授权 .363 应用功能菜单设计 .373.1 应用功能管理 .373.2 菜单管理 .40COFrame 概要设计说明书Page 4 of 411 引言1.1 编写目的本设计说明书文档包括该项目的建设背景、目标、建设内容、系统架构、接口、数据模型、功能模型、部署模型、功能设计等的描述,用于指导该项目的开发与部署,同时,作为该项目的重要技术资料,作为系统未来维护或扩展的参考。本文档的阅读者为本系统的设计、开发人员、接口系统的开发人员、系统维护人员。名词术语1.2
4、 名词术语COFrame 应用基础框架1.3 参考资料COFrame 数据模型EOS7 开发手册EOS7 帮助文档1.4 文档约定2 参与者与组织机构设计EOS7 采用新的参与者模型设计,抽象出了 Party(参与者) 、Resource (资源)与Auth(授权)等概念以及三者的关系描述。基于参与者、资源与授权等概念可扩展开发出COFrame 概要设计说明书Page 5 of 41符合用户个性化需求的参与者模型。EOS7 的参与者、资源与授权的关系如下:机构P a r t yR e s o u r c eA u t h角色 岗位 员工. . .功能表单控件 操作机构授权岗位授权功能授权控件授
5、权. . . . . .Party 是对系统参与者的抽象,可以实例化为角色、机构、岗位、员工和用户等内容,Resource 是对业务资源的抽象,可以实例化为功能、表单、控件和操作等内容,授权则是角色对资源和其他参与者的权限设置。基于该模型,用户实现个性化的组织机构及授权相关接口时需要实现:1) 参与者类型接口,定义参与者类型,如机构、岗位、员工等。2) 资源相关接口,如功能、表单、表单控件、视图等。3) 授权相关接口,资源授权和参与者授权。4) COFrame 提供默认的组织机构授权实现。2.1 参与者模型及接口说明用户定义参与者时需要实现两个接口:1) 参与者类型接口:定义参与者类型,如机构
6、、岗位、员工等,具体接口定义如下:package com.primeton.cap.party;import java.util.List;COFrame 概要设计说明书Page 6 of 41/* partyType数据服务接口,不考虑增删改* author guwei (mailto:)*/public interface IPartyTypeDataService/* 获取所有party的相关数据列表,比如获取应用中的角色列表* param tenantID* return*/List getAllPartyList(String tenantID);/* 获取顶级的party相关数据*
7、 param tenantID* return*/List getRootPartyList(String tenantID);/* 根据partyID获取Party数据* * param partyID* param tenantID* return*/Party getPartyByPartyID(String partyID, String tenantID);COFrame 概要设计说明书Page 7 of 412) 参与者关系接口:参与者关系接口要求实现两种参与者之间的关系,这种关系有两种:a) 上下级关系:如机构员工关系、机构岗位关系、机构机构关系、岗位员工关系等。b) 授权关系:
8、如机构角色关系、岗位角色关系、员工角色关系等。参与者关系接口定义如下:package com.primeton.cap.party;import java.util.List;/* 关联party数据服务接口,目前只考虑查询,增删改不考虑* author guwei (mailto:)*/public interface IPartyTypeRefDataService/* 根据父partyID获取父子关系中的子party数据列表* * return*/List getChildrenPartyList(String parentPartyID, String tenantID);/*COFr
9、ame 概要设计说明书Page 8 of 41* 根据子partyID获取父子关系中的父Party数据,返回值设置为列表是因为存在授权关系* 在授权关系中,一个人员可以属于多个角色* * param childPartyID* param tenantID* return*/List getParentPartyList(String childPartyID, String tenantID);3) 用户定义的参与者类型和参与者关系接口需要向 EOS7 的参与者模型管理注册,注册的方式是调用参与者模型管理相关的接口。a) 参与者类型必须在应用启动时通过调用 PartyTypeManager
10、的 putPartyType 方法注册参与者。b) 参与者关系必须在应用启动时通过调用 PartyTypeRefManager 的 putPartyTypeRef方法注册参与者关系。c) COFrame 中在 ponents.coframe.auth 构件包的启动监听器ponents.coframe.auth.startup.AuthStartupContributionListener.java 中调用了上述接口注册参与者,并通过解析 ponents.coframe.auth 构件包下的 META-INF/party-config.xml 配置文件注册参与者以及参与者的关系。party-config.xml 的示例配置如下:COFrame 概要设计说明书Page 9 of 41COFrame 概要设计说明书Page 10 of 41PartyTypeRef refID=“role_emp_ref“ refName=“角色员工“ refType=“r_p“