有赞移动关于权限与审批流程的标准化

1、背景

有赞移动有weex发布平台、移动配置中心平台、App分发平台、热修复平台等。这些平台都须要发布,而发布就须要规范化,须要审批制度。若是为各个平台开发这个审批流程,看起来是一种浪费。前端

首先想到第一种方案:接入现有的先后端发布平台。后端

移动侧的发布基本是配置类的发布,跟后端应用和前端应用的发布不同。后端应用和前端应用的发布都是将指定的内容推送到某台或者多台机器进行部署、启动。二者若是硬要作抽象,成本反而更大,并且不易维护。因此放弃第一种方案。微信

那么是否能够抽象成单独的统一管理平台,进行标准化呢?weex

2、梳理

首先看一下标准的发布审批流程通常是怎么样的?网络

第一步:申请人提交发布单测试

第二步:负责人审批优化

第三步:申请人发布url

而这里申请人和负责人就是以权限为区分。spa

通常的权限角色有模块负责人、开发、运营、测试等。设计

其中,审批人是模块负责人,而申请人能够是开发,也能够是模块负责人。而二方平台还能够根据不一样角色赋予不一样的权限。

2.1 权限

权限实质上指的是用户和模块之间的关系。因此只须要模块的惟一标识和用户的惟一标识,用户的惟一标识由统一的用户认证服务提供,模块的惟一标识由各个二方平台提供。对于二方平台来讲,只要提供模块惟一标识和用户惟一标识,而后得到角色便可,而后根据角色进行相应的操做。因此这一层就能够单独抽离出来。现有的先后端发布平台也已经验证了这一点。

2.2 审批

审批须要哪些元素呢? 申请人、审批内容、审批人、审批状态。其中审批内容在各个二方平台是不同的。

尽管如此,仍是能够抽象成两个字段:审批单惟一标识和用于查看审批详情的连接。这两个字段均可以由二方平台提供。因此审批也是能够作抽象的。

3、设计

如何设计这个统一的平台将权限与审批流程标准化呢?首先看一下二方平台和有赞移动权限与审批统一管理平台(如下简称统一管理平台)的交互流程图。
52e9f2242349ac20691b3a9e6508d2cb.png

首先,二方平台和统一管理平台都要依赖CAS,CAS是有赞的用户认证平台。这样,就能够基于同个用户进行权限管理。

3.1 二方平台与统一管理平台的交互

从图中能够看到,二方平台与统一管理平台主要有四大交互:添加模块、获取权限、提交发布单、获取发布单状态。

3.1.1 添加模块

模块是最小的可配置权限的元素,好比weex发布平台对应的各个模块、热修复平台对应的App等。须要在发布平台配置权限的时候,就须要选择模块。
因此,二方平台在注册模块的时候,须要同步到发布平台,带上平台和模块的惟一标识,以及模块的名称,加强可读性。

3.1.2 获取权限

权限由统一管理平台管理,模块负责人能够编辑权限,其余人能够申请权限。

二方平台经过携带平台和模块的惟一标识,以及用户的惟一标识,从统一管理平台获取权限,依赖权限进行相应的操做。

3.1.3 提交发布单

移动侧的各个二方平台发布的内容基本是配置类的信息,配置的内容、格式、条件都不同。

好比weex发布的内容包含平台、环境、规则、描述,和页面列表,如图:
ef66f7a4e44e7ab652436d69b361fffb.jpeg

而热修复平台发布的内容包括应用版本、补丁文件、描述、下发模式(规则)等:
b7e7bc22ab57113da5382b12a2d46d2e.png

首先想到的是将这些配置类内容抽象成内容、规则和描述。可是若是这么作的话,各个二方平台展现时各自须要从新解析,也不便于根据内容里的字段进行搜索。

因此,各个二方平台的发布页面由各个平台本身开发,提交发布单的时候,再将惟一标识符(包含平台、模块、发布单ID等)和发布单详情的url传给统一管理平台,统一管理平台来维护一张审批表,包含发布单惟一标识符、状态、申请人、发布单详情url等。

其中,状态包括待审批、审批经过、审批拒绝。发布单详情url用于审批人在统一管理平台审批时能够跳转查看审批内容详情。

3.1.4 获取发布单状态

各个二方平台有各自的发布单详情表,而审批状态统一从统一管理平台获取。二方平台经过审批状态,判断是否能够进行发布。

3.2 优化改进

3.2.1 权限申请入口

考虑到每次须要添加的权限的时候,都须要模块负责人去权限管理页面添加,对于负责人来讲是一种没必要要的时间浪费。因而增长权限申请的入口,不只在统一管理平台可见,在各个二方平台也开发入口,经过再url后面携带平台、模块、角色等参数,跳转到统一管理平台的权限申请页面。申请后,模块负责人会收到通知(企业微信、钉钉或者其余形式),赞成申请便可。既减小了模块负责人的操做成本,也减小了模块负责人与申请人的沟通成本。

3.2.2 审批通知与审批结果通知

申请人发起发布申请后,审批人会实时收到通知。而审批人经过/拒绝申请后,申请人也会实时收到通知。减小了两者的沟通成本。

3.2.3 容许关闭审批

可能有一些模块的特殊性(测试模块),或者环境的特殊性(有赞的网络环境分为Daily、QA、Pre、Prod),有些模块在某些环境须要关闭审批,这样更能提升效率。不然在测试环境,每次发布都要审批,着实比较麻烦。

4、总结

由此,全部的审批操做和权限操做都在统一管理平台进行。添加模块、提交发布单和发布、回滚等操做在各自的二方平台进行。统一管理平台以Dubbo的形式向二方平台提供统一标准接口:

  • 接口一:在统一管理平台建立模块
  • 接口二:获取到用户在发布平台的角色
  • 接口三:在统一管理平台建立/撤回审批单
  • 接口四:获取审批单的进度

统一管理平台的后台操做页面,主要是权限管理界面和审批界面。

45bfcf8b1b5a222a7b6dd7793666b4c7.png
ed6a4a3844a8204fa1a6d86d85bf8102.png

由此就将发布的审批流程和权限管理进行了标准化。现有的二方平台,以及未来更多二方平台均可以经过统一管理平台提供的接口接入,在统一管理平台上进行权限和审批流程的管理。后续随着二方平台的复杂度变高,权限角色的增长,审批类型的增长均可以很方便地进行扩展和复用。

标准化意义在于下降成本,包括开发成本和使用成本。平常开发中须要更多思考,识别业务中哪些能够标准化哪些须要个性化,而后将可标准化的部分抽象出来作成服务,对于效率和扩展性来讲都是更好的选择。

相关文章
相关标签/搜索