责任链模式让企业沟通不再推诿扯皮审批流程清晰高效协作不背锅
你有没有经历过这样的场景?员工提交一个请假申请,发到钉钉群里,HR说”这不是我管的”,直属领导说”流程还没走完”,财务说”我没收到通知”,最后大家都在群里互相@对方,半天过去了,申请石沉大海。这种”踢皮球”的企业沟通乱象,其实用软件设计里的责任链模式就能解决一大半问题。
今天不聊枯燥的技术概念,咱们从一个让打工人崩溃的真实故事说起。
那个被退回七次的报销单
去年有个朋友在一家中型互联网公司做运营,报了笔八千块的营销费用。流程走到哪一步了呢?
- 直属主管:签了,但说要总监批
- 总监:看了,说超过五千要VP签
- VP:没注意,说财务要确认
- 财务:说是业务线问题,不归我
- 业务线负责人:已离职
七次退回,一个月没办完。最后这个运营自己贴钱补了,再也没提过报销这回事——后来他离职了,理由是”在这公司干啥都不顺心”。
这不是个例。据某招聘平台2024年的职场调研,超过61%的受访者表示曾在跨部门协作中经历过推诿扯皮,平均每个员工每年因此浪费约47小时。这47小时相当于整整一个工作日,但几乎全花在了”找人确认”和”追问进度”上。
问题来了:企业明明有OA系统、有审批流程,为什么还是乱成一锅粥?
答案很简单:责任归属不清晰。
责任链到底是什么?说人话
责任链模式(Chain of Responsibility)是软件设计里的一个经典模式,听着高大上,本质就一句话:
请求像接力棒一样,沿着一条链传递,直到有人接手处理为止。
举几个你可能天天在用的例子:
- 你按电梯按钮,是哪一个按钮在”负责”让电梯开门?不是你按的那个按钮,而是电梯系统内部的某个部件。但你不用关心是哪个部件,你只需要按按钮就行。
- 客服投诉处理:一线客服解决不了,转二线;二线解决不了,转专家;专家解决不了,升级给管理层。
- 医院分诊:挂号台分诊,小病去内科,大病去外科,危重直接进急诊。
你看,这些场景都有一个共同点:调用方不需要知道具体谁来处理,只需要把请求丢出去,责任链自动流转,直到被正确处理。
这就是责任链的核心价值:解耦。
为什么企业审批经常”卡死”
传统的企业审批流程,大多是这样设计的:
员工 → 提交申请 → 领导审批 → 财务审批 → 结束
看起来挺清晰对吧?但实际操作中会出现以下问题:
问题一:不知道找谁
小王想申请采购一批办公用品,他不知道该找行政还是采购还是直接找老板。他在群里问了一句”采购流程怎么走”,三分钟后有人回复”去找行政”,行政又回复”超过一万要老板批”,小王又去问老板,老板说”按流程来”——循环了。
问题二:流程断了没人管
很多公司OA系统虽然设置了审批节点,但一旦某个人请假、出差、离职,整个流程就卡住了。下游的人不知道上游的状态,上游的人也不管下游的情况。
问题三:责任边界模糊
“这个归你管还是归我管?”这是职场最高频的对话之一。当多个部门都可能”沾边”时,最安全的做法就是——不接。
责任链模式如何”治好”企业沟通
我们用一个更具体的例子来说明。
假设某公司需要处理”员工费用申请”,金额从100元到100万元不等,需要不同级别的人审批。如果用责任链模式来设计:
# 定义抽象处理者
class Approver:
def __init__(self, name):
self.name = name
self.successor = None # 下一个责任人
def set_successor(self, successor):
"""设置下一个处理者"""
self.successor = successor
def handle_request(self, request):
"""处理请求"""
if self.can_handle(request):
return self.process(request)
elif self.successor:
return self.successor.handle_request(request)
else:
return {"status": "rejected", "reason": "无人能处理此请求"}
# 主管审批
class Manager(Approver):
def can_handle(self, request):
return request.amount <= 5000
def process(self, request):
return {"status": "approved", "approver": self.name, "message": "主管已审批"}
# 总监审批
class Director(Approver):
def can_handle(self, request):
return request.amount <= 50000
def process(self, request):
return {"status": "approved", "approver": self.name, "message": "总监已审批"}
# VP审批
class VP(Approver):
def can_handle(self, request):
return request.amount <= 500000
def process(self, request):
return {"status": "approved", "approver": self.name, "message": "VP已审批"}
# CFO审批
class CFO(Approver):
def can_handle(self, request):
return True # CFO处理所有金额
def process(self, request):
return {"status": "approved", "approver": self.name, "message": "CFO已审批"}
# 使用示例
class ExpenseRequest:
def __init__(self, applicant, amount, purpose):
self.applicant = applicant
self.amount = amount
self.purpose = purpose
# 构建责任链
manager = Manager("张主管")
director = Director("李总监")
vp = VP("王VP")
cfo = CFO("赵CFO")
manager.set_successor(director)
director.set_successor(vp)
vp.set_successor(cfo)
# 发起请求
request = ExpenseRequest("小王", 30000, "市场推广费用")
result = manager.handle_request(request)
print(result) # 输出:{'status': 'approved', 'approver': '李总监', 'message': '总监已审批'}
看懂了吗?整个过程是这样的:
- 小王提交30000元的申请
- 请求先到张主管那里,张主管一看”不超过5000才能批”,30000超了,所以他转给下家
- 请求到李总监那里,李总监一看”不超过50000能批”,30000在范围内,审批通过
- 整个过程小王不需要知道该找谁,系统自动流转
关键点:调用方(小王)完全不需要关心最终是谁审批的,他只需要发起请求。
不只是代码,更是一种管理思维
很多人看到这里会问:这不就是一个审批流程吗?跟责任链有什么关系?
区别大了。
传统审批流程的问题在于:每个人都需要知道”下一步找谁”,一旦信息不对称,流程就断了。
责任链模式的核心思想是:每个处理者只关心”这事儿归不归我管”,不归我管就自动传给下一个,调用方完全不需要操心传递逻辑。
这背后的管理智慧是:
把”找对人”的责任从员工身上拿走,交给系统。
真实企业的落地做法
我们来看看几家国内企业是怎么用责任链思想改造流程的。
案例一:某电商公司的请假系统
这家公司原来是这样的:员工在系统里填请假申请,然后截图发给直属领导,等领导回复了再发给HR,HR再录入系统。结果就是:
- 领导没回消息,员工不知道算不算批了
- HR那边没有系统记录,全靠截图对账
- 月底统计休假额度时,HR和领导的数据对不上
后来他们改造了:
请假申请 → 自动判断请假类型和天数 → 责任链自动流转
规则是:
- 1-3天 → 直属领导审批,审批完自动通知HR
- 4-7天 → 直属领导先批,再流转到部门总监
- 8天以上 → 领导→总监→HR→直属上级分管领导
员工提交申请后,系统自动显示”当前处理人:XXX”,员工完全不需要问”领导批了吗”“HR收到没”。
结果:平均审批时长从48小时降到4小时,HR的”催进度”工作量下降了90%。
案例二:某SaaS公司的合同审批
这个公司的销售经常抱怨:合同审了三个月还没下来,最后客户被竞品抢走了。
原来他们的流程是:销售提交 → 法务看 → 财务看 → 老板签字。但问题是,法务说”合同金额不对”,财务说”条款有问题”,老板说”没看懂为什么要改”。每个环节都在等上一个环节的解释,形成了死锁。
改造后的责任链:
销售提交合同 → 系统自动校验金额和条款 → 校验不通过直接退回并说明原因
校验通过 → 流转到法务 → 法务有48小时必须处理
法务通过 → 流转到财务 → 财务有24小时必须处理
财务通过 → 流转到对应权限的老板
更关键的是,每个节点都有SLA(服务等级协议)时限,超时自动升级。比如法务超过48小时没处理,系统自动通知法务主管,同时抄送销售负责人。
结果:合同平均审批周期从60天缩短到12天。
责任链的三种常见结构
在落地过程中,你会遇到三种不同的结构,各有适用场景:
第一种:纯责任链(Hand-off链)
请求 → A → B → C → D
每个处理者要么处理,要么转交,处理完后返回结果。适合审批流、客服流转。
第二种:过滤链(Filter链)
请求 → [过滤器A] → [过滤器B] → [过滤器C] → 最终处理
每个节点不决定”是否处理”,而是决定”是否放行”。比如安全网关、权限校验。一个节点不通过,请求直接被打回。
第三种:混合链
部分节点是纯责任链(自动流转),部分是过滤链(拦截)。比如OA系统里,某些字段校验是过滤逻辑(不过就退回),某些审批节点是责任链逻辑(自动流转)。
落地责任链的五个坑,千万别踩
虽然责任链模式听着美好,但很多企业在落地时翻车了。以下是真实踩过的坑:
坑一:链太长,变成”踢皮球”
某传统企业把责任链设计成了12个节点,员工提交申请后,12个人都要看一遍,结果谁都没最终拍板。最后大家发现:链太长反而没人负责。
建议:责任链节点控制在3-5个以内,超过5个考虑拆分或重组。
坑二:没有超时机制,流程永远跑不完
某个项目的责任链设了8个节点,其中一个节点负责的人常年出差,流程卡了三个月没人知道。因为没有人对”无人处理”负责。
建议:每个节点必须设置SLA时限,超时自动升级或转交。
坑三:调用方反而更累了
有些公司设计了责任链,但员工提交申请后还得在微信上追着审批人问”批了没”。系统有,但体验没有。
建议:责任链不仅要”能流转”,还要”能追踪”。员工应该能看到”当前在第几步、预计多久完成”。
坑四:链的结构变了,代码没改
某公司流程调整了,从”A批完到B”改成了”A和B并行”,但技术团队没及时更新系统,导致流程走错。
建议:责任链的结构应该配置化,而不是硬编码。业务调整时,只需要改配置,不需要改代码。
坑五:只设计了一条链
一个公司不可能只有一个审批链。请假是一条链,报销是一条链,采购是一条链,每条链的规则都不一样。
建议:建立责任链工厂,根据不同的业务类型创建不同的链。同时要有统一的流程监控平台,能看到所有链的运行状态。
给管理者的建议:如何设计你的企业责任链
如果你是一家中小企业的管理者,想在自己的公司引入责任链思维,可以从这几步开始:
第一步:画出所有现有流程
把公司里所有需要”多人协作、跨部门流转”的事情全部列出来。包括:请假、报销、采购、合同、招聘、项目管理、客户投诉……
第二步:识别每个流程的”责任边界”
每个流程里,谁负责什么?什么时候转给下家?转给谁?用一张表列清楚。
第三步:设定每个节点的”处理时限”
这不是为了压榨员工,而是为了让等待者心里有数。48小时能处理完的,不要给72小时;24小时能处理的,不要给48小时。
第四步:建立”升级机制”
当某个节点超时或处理失败时,自动触发升级。比如直属领导3天没批,自动通知总监;总监3天没批,自动通知HRBP。
第五步:上线后收集反馈
任何流程改造都不是一次性的。上线一个月后,收集大家的吐槽,持续优化。
写在最后
责任链模式最初是程序员写的代码模式,但它解决的是一个古老的管理问题:当一件事情需要多个人参与时,如何确保它不被遗漏、不被推诿、不被拖延。
企业里那些让人头疼的”沟通成本”,本质上都是因为责任边界不清晰、流转机制不透明。责任链模式给你的,就是一个清晰的”接力棒”规则——谁在什么时候接到球,该往哪传,传错了谁来兜底。
下次当你在公司里又遇到”这事找谁”的困惑时,不妨想一想:你的公司,是不是缺少一条清晰的责任链?
(完)
