Open-MBEE需求管理系统模块分析-core模块

本文详细解析了Open-MBEE软件平台的核心模块,包括核心数据组织、角色与权限管理、Builders模块,重点介绍了权限更新、角色分配以及与组织、项目和分支相关的功能。同时概述了其他如配置、数据访问、权限代理、服务接口和认证工具的运用。
摘要由CSDN通过智能技术生成

Open-MBEE是一个用于支持系统工程师进行并发协作设计的软件平台,它通过集成化的软件应用程序和服务,实现了工程模型和文档的一致性、可追溯性和精确性,从而提高系统工程的效率和质量。本文将对Open-MBEE中部分模块进行分析,以更加了解其功能与逻辑。

core模块

-这个模块包含了其他所有模块所使用的核心配置、常量、接口和对象类。下文将介绍其数据结构,角色与权限实现逻辑与core中各部分功能

核心数据组织概念(Core data organization)

-分级结构

-org(组织) -> project(项目) -> Commits and Branches(分支)

角色与权限

-组 -> 相同权限用户

-在本地,MMS使用基于角色的权限控制,这些角色应用于组织、项目和分支级别,用于用户和组。

-当前的角色包括ADMIN、READER、WRITER等,每个角色都授予一组特定的权限

角色可以根据组织/项目/分支分配给组

-存在一个特殊的组/权限,表示管理员状态的是mmsadmin。认证提供者可以将此添加到用户的权限中,以表示管理员状态, MMS将允许对所有端点的操作

Biulders

-权限的更新与管理

PermissionUpdateResponseBuilder

-提供一个包装器PermissionUpdateWrapper来封装PermissionUpdate(权限信息)对象

-比较两个PermissionUpdateWrapper对象是否相等。并基于permissionUpdate对象的某些字段来计算哈希码,这样当这些字段的值相同时,两个PermissionUpdateWrapper对象将具有相同的哈希码。可便于快速查找

-定义两个HashSet变量(removed、added),跟踪权限添加与移除

remove存储从某个集合或状态中被移除的PermissionUpdateWrapper对象

added存储被添加到某个集合或状态中的PermissionUpdateWrapper对象

使用HashSet确保每个PermissionUpdateWrapper对象在removed和added集合中只会出现一次

-处理权限更新请求,将新的或修改后的权限信息插入

细化针对不同类型的方法

-处理OrgGroupPerm对象集合的权限更新,使用OrgGroupPerm对象的组名而非用户名

-处理项目用户权限(ProjectUserPerm)和项目组权限(ProjectGroupPerm)的插入操作,增加了与项目相关的属性。

-处理与分支相关的权限

-填充了权限更新列表

创建响应对象

初始化更新列表

处理已移除的更新

处理已添加的更新

设置响应的更新列表

-权限更新的插入逻辑

创建包装器

处理添加操作

如果更新操作的动作是ADD,从removed集合中移除包装器对象。如果移除失败(即对象不在removed集合中),则将包装器对象添加到added集合中。

处理移除操作:如果动作不是ADD(可能是REMOVE或其他动作),尝试从added集合中移除包装器对象。如果移除失败,则将包装器对象添加到removed集合中。

PermissionUpdatesResponseBuilder

-实现了一个名为PermissionUpdatesResponseBuilder的构建器类,用于构建PermissionUpdatesResponse对象

-初始化内部状态

-设置和链式调用:通过提供一系列的设置方法(例如setInherit、setPublic、insertUsers、insertGroups等),调用者可以逐步配置构建器对象的内部状态。这些方法返回this,以支持链式调用

-构建最终对象:当所有的设置都完成后,调用者可以调用getPermissionUpdatesReponse方法来获取一个构建好的PermissionUpdatesResponse对象。这个方法会根据当前构建器的状态创建一个新的PermissionUpdatesResponse实例,并返回它。

-提供内部构建器的访问:允许调用者直接操作usersBuilder和groupsBuilder,如果这是符合设计意图的话。

-私有辅助方法,用于合并两个布尔值,便于处理可能为null的布尔值

Config

-配置文件相关信息

Dao

-数据访问对象接口,这些接口用于元数据和JSON的存储。

Delegation

-主要用途:控制和管理用户、组以及它们所拥有的权限,通过权限代理确定授权。权限代理实现可以根据输入执行任何操作以返回true/false

PermissionsDelegate

-检查指定的用户和组是否具有某个特定的权限

-权限的初始化设置

-权限的继承

-权限是否公开

-用户或组权限的更新

-记录重新计算后的权限信息或更新结果

PermissionsDelegateFactory

-使每个项目都有自己的权限设置和委托对象

-使每个组织都有自己的权限管理逻辑和策略,并将这些逻辑和策略封装

-在代码库的不同分支之间管理不同权限

exception

-记录运行时可能的异常,发生这些异常会返回相应的HTTP响应代码。包括:

- Bad Request

- Conflict

- Deleted

- Forbidden

- Internal Error

- MMSE

- Not Found

- Not Modified

- Unauthorized

objects

-存放对象、变量信息

pubsub

-主要用途:包含一个默认的事件服务(EventService),能够发布EventObject(Spring ApplicationEvent的扩展,包含事件类型、项目ID、分支ID和负载)。

其他模块可以使用发布者(publisher)来发布和监听事件(例如,crud在提交、创建分支等时发布事件,而webhooks监听这些事件)

DefaultEvent

-发布应用事件,依赖于Spring的ApplicationEventPublisher来发布事件。当你想要发布某个事件时,只需调用其publish方法,并传入一个EventObject即可。

EmbeddedHookService

-实现了一个简单的钩子(hook)机制。允许在应用程序中的特定点执行额外的逻辑操作

-实现了一个简单的发布-订阅机制,允许将不同的订阅者(EmbeddedHookSubscriber)对象注册到特定类的钩子事件上。

-当某个钩子事件被触发(调用hook方法)时,所有订阅了该事件的订阅者都会被通知并处理该事件

EmbeddedHookSubscriber

-实现一个订阅者(subscriber)的角色,该订阅者可以订阅一种或多种类型的事件,并在这些事件发生时被通知。

Eventconfig

-Spring配置类

security

MethodSecurity

-检查用户是否对某个组织(org)具有特定的权限

-检查用户是否对特定的项目(Project)或项目的分支(Branch)具有特定的权限,其使用了异步编程模型,通过CompletableFuture来实现权限检查和组织/项目/分支存在性的并行检查。

-对组织(Organization)、项目(Project)和分支(Branch)存在性的检查,及处理CompletableFuture对象完成情况。

service

-服务接口,主要的接口有ProjectService、BranchService、NodeService。

-Project和Node服务可以根据项目模式的不同实现来提供不同的行为

-默认的模式实现由crud模块注册

-由模块提供的新模式和服务需要通过注入并添加到ProjectSchemas(位于config下)来注册

(参见crud、cameo等模块作为示例。)

utils

-主要作用:获取用户的组信息

-定义了一个名为AuthenticationUtils的工具类,其中包含两个静态方法用于处理与认证相关的功能。与用户的权限组(或角色)有关。

-接受一个Authentication对象作为参数,并返回一个Set<String>,该集合包含了该认证对象中所有权限的名称。

-检查给定的Authentication对象是否包含指定的权限组(或角色)。

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值