在之前的文章中我们探讨了流程引擎的基本概念,本文将继续深入,结合实际案例来分享如何进行系统流程的设计与优化。
我们将以一个短视频制作团队的业务场景作为切入点,逐步分析面对多变需求时,流程设计应该如何演变与改进,以实现高效的团队协作。
场景设定
假设有一个自媒体公司的短视频运营部门,其内部的岗位分工与核心工作内容如下表所示:

图1:短视频团队岗位与职责对应表
核心需求:设计一套协作系统,用以协调上述各岗位间的工作任务流转。
本文将围绕此需求,一步步推演如何通过流程设计来满足复杂多变的实际业务需要。在云栈社区的架构与技术讨论板块,也常有关于类似工作流引擎和系统设计的深度探讨。
第一阶段:业务决定流程
我们先不纠结于具体岗位,仅从工作流逻辑出发。在一个标准的工作流程中,上一个环节的“输出”会成为下一个环节的“输入”。例如,运营发布选题,编导据此撰写脚本,文案再基于脚本润色文案……依此类推。因此,最直观的“常规流程”设计如下:

图2:标准的线性工作流程
然而,实际业务并非总是如此刻板。例如,制作“直播切片”或“混剪”类短视频时,往往只需要剪辑师直接处理现有素材即可,无需经过脚本、文案等环节。其流程被大大简化:

图3:适用于特定内容类型的简化流程
这时你可能会想到,是否可以根据内容类型来配置不同的工作流模板?但新的问题接踵而至:即使是同一内容类型,其流程也可能因具体情况而异。
举个例子,制作“产品宣传”视频时,就存在两种可能:
- 宣传新产品,需要重新拍摄。
- 宣传旧产品,已有素材,仅需重新剪辑包装。
可见,仅凭内容类型无法唯一确定流程,设计需要更细的维度。
第二阶段:业务+条件决定流程
既然单一维度不够,很自然的想法是增加判断条件。例如,同样是“产品宣传”,可以附加“新产品/旧产品”这个条件,从而衍生出两条预设流程:

图4:通过增加条件区分流程路径
看似问题解决了,但现实再次带来挑战:剪辑师可能会反馈,某个旧产品宣传视频的原有素材不合格,需要重新拍摄。如果每遇到一个特殊场景就叠加一个新的条件来配置流程,管理成本将急剧上升,系统会变得异常臃肿且难以维护。
第三阶段:业务+用户决定流程
预先配置难以穷尽所有变化,那么是否可以将部分决定权交给用户?例如,允许每个环节的执行者,在必要时主动“拉入”一个原本不在预设流程中的协作岗位。
以上文旧产品需重拍为例,剪辑师可以主动将任务指派给摄影师,从而动态调整流程:

图5:用户可在流程中动态引入新环节
这增强了灵活性,但仍有局限。摄影师可能提出:拿到脚本后即可开始拍摄准备,不需要等待设计完成。然而在现有串行流程中,他必须等待前序所有环节结束,这造成了效率瓶颈。
第四阶段:用户决定流程
既然允许动态拉入节点,何不更进一步,放弃所有预设的主流程,只定义可用的“工作节点”,由用户在实际操作中完全自主决定任务的下一站交给谁?这样理论上可以组合出无限多种流程路径来适应各种场景。

图6:节点自由组合,流程完全用户驱动
这种方式极度灵活,但带来了新的问题:并行协作困难。设计师抱怨,他其实只需要脚本就能开始设计工作,文案完成后补充即可。但在当前的自由流转模式下,如果任务按“脚本 -> 文案 -> 设计”的顺序传递,设计师就不得不进行不必要的等待。
第五阶段:没有流程的流程
能否打破“一个任务只能交给一个人”的串行思维?一个更颠覆的想法是:取消固定的流程线。任务发起时,只需标明需要哪些职能角色参与。每个参与者则声明自己开展工作所需的“前置输入”来自哪个(些)其他角色。
例如,运营发布一个选题,勾选所有相关岗位。那么系统自动形成的协作关系是,所有人最终向剪辑师交付成果,剪辑师收集齐所有素材后完成工作。

图7:基于角色依赖自动生成的协作关系(初始状态)
随后,文案策划声明自己需要“脚本”;设计师声明自己需要“脚本”和“文案”。此时,新的依赖关系形成:

图8:设计师在获得脚本后即可开始工作,无需等待文案
这样,设计师在获得脚本后就能启动设计工作,待文案完成后将其整合即可,实现了并行,提升了效率。
同理,摄影师声明需要“脚本”,剪辑师声明需要“脚本、文案、拍摄素材、设计图”。最终的协作网络变得清晰:

图9:所有角色基于输入依赖形成的完整协作图
这种模式下,每个人只关心自己所需的前置条件是否满足,并可随时开始自己的工作,系统隐式地形成了一个“没有固定线路,只有依赖关系”的动态流程。
第六阶段:父子流程
上述动态流程解决了执行层的灵活性问题,但管理层提出了新诉求:他们需要对任务的承接、分配与成果质量进行管控。为了兼顾灵活性与管理需求,可以引入“父子流程”的概念。
为每个主流程节点(角色)配置一个内部管理子流程,该子流程主要处理三件事:
- 决定是否接受该需求。
- 决定由团队内哪位成员执行。
- 审核执行产出的质量是否合格。
改造后,流程演变如下:

图10:每个环节都包含管理审批子流程的父子流程模型
在上图流程中,如果某个岗位的管理员拒绝了需求,则该环节状态为“已拒绝”。如果执行成员的产出被管理员驳回,则需要修改直至通过审核。只有当前一环节的产出被其管理员“接受”后,下一环节的管理员才会看到该产出,并启动自己环节的子流程(指派、审核)。这样,既保留了执行层的协作灵活性,又加入了必要的管理管控。
通过这个案例的逐步推演,我们可以看到,流程设计没有一劳永逸的“完美方案”,其核心在于深刻理解业务本质,并在控制与灵活、效率与规范之间找到最佳平衡点。从僵化的预设流程,到动态的依赖网络,再到引入管控的父子流程,每一步演进都是为了解决前一阶段暴露出的实际问题。这也正是系统分析与System Design的魅力所在——它永远是一个持续优化、贴合业务生长的过程。