再谈角色与限界上下文

前几天,在《不同限界上下文中的角色含义》一文中讨论了权限与限界上下文的关系,今天在做技术讨论时,为这个问题增加了一些新的示例。

以请假系统为例,部门经理可以审批本部门的请假申请,这里“部门经理”是一个角色,但这个角色仅在“请假审批”这个上下文中有意义,在其他应用的上下文中,这样定义角色可能就有问题了。比如,在合同审批流程中,首先由技术开发部的经理进行技术审批,然后由商务合约部经理进行商务审批,那么在这个流程中,“技术开发部经理”和“商务合约部经理”作为两个角色更为直观和易于理解。如果仍然采用“部门经理”的角色,那么,就需要增加部门的维度,“技术开发部”+部门经理,和“商务合约部”+部门经理,这样逻辑变得复杂,难以实现基于角色的授权。

对功能而言,应该是按角色授权,对于功能对应的数据,可能需要增加部门等维度。在请假流程中,部门经理具有请假审批权限,审批的数据范围是本部门。二在合同审批流程中,技术审批的权限就是“技术开发部经理”,这是对功能权限的授权,不能使用多维度,只能使用角色。