文件任 务中间件提案No.4
概要
由于悦库网盘中涉及文件上传、下载的业务越来越多,而不同的业务对于文件传输基础功能的依赖程度和使用方式不一样,比如:本地文件编辑功能要求在下载前判断是否锁定状态,并根据锁定状态决定下载后以只读还是读写方式打开。而下载文件功能则直接使用文件传输功能,下载完成后仅通知消息但不打开文件。文件同步下载功能则可能需要将多个文件合并为一个任务通知进度。这样文件业务和文件传输实现耦合度大大增加,造成业务逻辑混乱、业务扩展性差、开发低效问题。
我们期望这些上层业务都能够使用一致的底层文件传输接口,这样可以使文件传输逻辑的底层支撑更健壮,使上层业务逻辑忽略底层文件传输实现,使业务开发速度更快更稳健,基于文件传输的业务功能扩展性更强。
文件任务中间件是将文件业务和文件传输(传输/变更)解耦的组件,用于实现以文件任务模式支撑主要的文件相关业务,统一多端(WEB/PC/手机)、多平台(Windows/Mac/Linux/Android/IOS)实现机制。这样当业务层 需要传输文件时,仅需要通过文件任务进行操作,忽略了传输底层的实现和状态,让业务层更关注于业务本身的实现而不是文件如何传输问题。

需要支撑的业务
不了解业务的设计师不是设计师,不了解用户的设计师也不会理解业务。
需要支持的业务功能包括:从系统资源管理器中分享文件、打开消息文件、拖拽和选择上传/下载文件、本地编辑、文件同步、任务操作、上传/下载审批、协同上传/下载任务、各种任务场景适配(本地编辑、消息文件)、Webhook。
-
在系统资源管理器中分享 是指从系统资源管理右键菜单中分享文件或文件夹,分享完成后通知我分享已完成。实现方法是先将文件上传到云端,然后将文件分享给指定的人。
-
打开消息文件 是指下载消息文件,然后使用本地程序打开。
-
拖拽和选择上传/下载文件 是最基础的文件上传下载操作,仅上传下载文件,没有任何其他附加操作。
-
本地编辑 是指先下载文件,下载完成后需判断文件是否被其他人锁定,如果被锁定则以只读本地打开,否则已读写方式本地打开,打开后监控文件修改,如果文件有修改则需自动上传,上传完成后通知我。
-
文件同步 分为上行同步和下行同步,上行同步开始的前提是本地已同步过。同步任务会包含多个文件。
-
上传审批 是指上传完成后,暂不进入仓库,其他人不可见。然后进入审批流程,审批流程完成后自动进入仓库,任务完成。如果审批失败则退回上传者,任务失败。
-
下载审批 是指下载任务创建时,触发审批流程,审批流程完成后任务被允许执行,任务成功。如果审批失败,则任务被拒绝执行,任务失败。
-
协同上传 是指多人合作完成一个上传任务,这个上传任务中可以有一个或多个文件。例如协同上传任务要求每人至少修改一次,或每人必须按预先规定的文件名称格式上传一个文件。当所有人在预定的时间内完成操作后,任务成功,通知任务创建者。如果超时且操作没有完成则任务失败。
-
协同下载 是指多人合作完成一个查看/下载任务,这个下载任务中有一个或多个文件。例如协同下载任务要求每人至少查看/下载一次。当所有人在预定的时间内完成操作后,任务成功,通知任务创建者。如果超时且操作没有完成则任务失败。
-
Webhook 是指当文件上传前调用指定的Webhook接口并将文件数据传过去,接口返回处理后的文件数据,然后文件上传再继续下一步操作。Webhook的触发时机可能是:上传前、上传进度,上传完成后、下载前、下载进度、下载完成后。这样将允许用户自行截获文件数据并对其进一步处理,如: 加/解密、病毒扫描等。