DDD案例(2):从领域分析到代码实现(2)

简介: DDD案例(2):从领域分析到代码实现(2)

问题业务主体的业务服务数量也比较多,如图20-34所示。

项目成员业务主体的业务服务最少,如图20-35所示。


image.png


用担心业务主体的这种不均等。遵循V型映射过程,针对业务服务进行业务相关性分析获得的业务主体只是候选的限界上下文,还需要我们根据业务服务的亲密度进一步梳理业务主体的边界。


通过对业务相关性的归类和归纳,初步获得图20-36所示的业务主体视图。


image.png

image.png

2)亲密度分析


一旦确定了各个业务主体的业务服务,就可以通过分析亲密度的强弱来调整业务服务与业务主体之间的关系。例如,“从储备人才转为正式员工”业务服务究竟属于储备人才主体,还是属于员工主体?虽说该业务服务需要同时用到储备人才和员工的领域知识,但由于其服务价值是生成员工记录,储备人才的信息仅仅作为该领域行为的输入,因此它与员工业务主体的亲密度显然更高。


亲密度分析也可以判断业务服务的归类是否合理。例如,项目主体中的创建迭代、开始迭代等业务服务牵涉到迭代这一领域概念,它与项目概念固然存在较亲密的关系,但问题概念与迭代概念之间的亲密关系也不遑多让,进一步,项目成员与问题之间的亲密关系也有目共睹。划分业务主体时,项目计划、迭代等概念被放到了项目主体,问题却没有被一并放入,显得领域知识的分配有些失衡。用亲密度来解释,就是迭代与问题之间的亲密度几乎等于项目与项目计划、迭代之间的亲密度,而问题与项目之间的亲密度却要明显低于问题与迭代之间的亲密度。为了保证领域知识分配的均衡,可以考虑两种设计方案:


q将项目主体、问题主体和项目成员主体合并,形成项目上下文;


q将项目计划、迭代等造成亲密度不均匀的领域概念单独剥离出来,定义独立的项目计划业务主体。


3)判断限界上下文的特征


知识语境看,合同上下文与员工上下文都具有合同(contract)领域概念,二者在各自的业务主体边界内,代表了各自的领域概念。前者为商务合同,后者为劳务合同。


员工主体与储备人才主体存在几乎完全相同的领域模型,如图20-37所示。


image.png


两个模型除了员工Employee与储备人次Candidate的名称不同,几乎是一致的。我们是否可以把这两个概念抽象为Talent,由此来来统一领域模型?如图20-38所示。


向对象设计思想鼓励这样的抽象,以避免代码的重复。然而,若从领域模型的知识语境看,这是两个完全不同的领域模型:员工属于员工管理的领域范畴,储备人才并非正式员工,是招聘的目标。以模型中的项目经验Project Experience为例,虽然员工和储备人才的项目经验具有完全相同的属性,但它们面向的关注点是迥然不同的,如市场人员就完全不关心储备人才的项目经验。


业务能力看,员工与储备人才之间存在清晰的界限,提供了各自独立的业务能力,一个服务于员工的日常管理,一个服务于人才的招聘。虽说“从储备人才转为正式员工”需要二者的结合,但在储备人才转为正式员工之后,二者就不存在任何关系了。


因此,员工和储备人才这两个领域模型应该放在不同的限界上下文。这也体现了领域驱动设计与面向对象设计之间的差异。


ps:在具体的业务语境中,员工涉及的相关业务远大于储备人才,在张老师举例的业务需求中未展开。比如员工对于办公的诉求,拥有电脑、内网访问权限、分配座位、付出劳动获得薪酬和福利等。员工属于HR域,但和办公域强相关,而储备人才显然只服务于招聘活动。

相关文章
|
Linux Shell 数据安全/隐私保护
《网络操作系统(linux)》练习2
《网络操作系统(linux)》练习2。
744 0
|
存储 Prometheus Cloud Native
Prometheus实战--存储篇
Prometheus之于kubernetes(监控领域),如kubernetes之于容器编排。 随着heapster不再开发和维护以及influxdb 集群方案不再开源,heapster+influxdb的监控方案,只适合一些规模比较小的k8s集群。
6085 0
|
1月前
|
存储 人工智能 自然语言处理
企业级数字员工落地:侠客工坊从端侧视觉推理到云原生数据治理的架构思考
本文介绍“侠客工坊”端云协同架构:以事件驱动解耦云端与海量移动端,通过轻量化视觉模型实现端侧自治;采用原生事件驱动保障合规安全;构建冷热分层数据治理体系,500TB多模态数据高效归档至OSS深冷存储,为B2B企业打造高可用、强合规的数字员工基础设施。
261 1
|
1月前
|
人工智能 JavaScript 数据可视化
OpenClaw Windows 一键安装部署详细教程
OpenClaw Windows一键安装包,专为新手设计:全程可视化操作,无需命令行、免配Python/Node.js,内置全部依赖。适配Win10/11 64位,361MB压缩包解压即启。关键提示:安装前须关闭所有杀毒软件。下载即用,无广告无捆绑,快速开启AI自动化办公。(239字)
|
4月前
|
存储 弹性计算 缓存
2026年阿里云服务器配置选型指南:CPU、内存、带宽与磁盘的科学匹配
在阿里云服务器选型过程中,用户常因参数繁杂陷入决策困境。实际上,选型的核心是围绕业务场景匹配 CPU、内存、带宽与磁盘资源,避免 “过度配置浪费成本” 或 “配置不足影响体验”。本文结合实例特性与场景需求,从个人开发者、中小企业到企业级用户,提供分层选型方案,同时拆解核心参数的匹配逻辑,帮助用户高效选对配置。
2026年阿里云服务器配置选型指南:CPU、内存、带宽与磁盘的科学匹配
|
6月前
|
安全 数据安全/隐私保护
阿里云账号注册流程图、实名认证及账号问题解答(个人账号和企业账号)
2025年阿里云账号注册仅需手机号接收验证码,支持个人与企业用户通过官网或App快速注册。注册后需实名认证方可购买产品,推荐支付宝一键认证。一个手机号最多注册6个账号,遗忘密码可凭手机号找回。
1186 0
|
机器学习/深度学习 自然语言处理 C++
《深度LSTM vs 普通LSTM:训练与效果的深度剖析》
长短期记忆网络(LSTM)擅长处理序列数据,而深度LSTM作为其扩展形式,在训练和效果上存在显著差异。深度LSTM通过增加层数增强了特征提取能力,尤其在处理复杂任务如图像描述、机器翻译时表现更优。然而,其计算量大、训练时间长、优化难度高,并且容易过拟合。相比之下,普通LSTM结构简单,适合处理短期依赖关系及数据量较少的任务。选择模型时需根据具体需求权衡。
564 11
|
数据安全/隐私保护
基于电压电流双闭环控制的三相整流器系统simulink建模与仿真
本课题基于电压电流双闭环控制,对三相整流器系统进行Simulink建模与仿真。系统采用MATLAB2022a版本,通过外环电压和内环电流控制,实现直流侧电压和交流侧电流的精确调节,提高动态响应速度和稳态精度。仿真结果无水印,展示了良好的功率因数和谐波性能。核心模型包括PI控制器用于电流调节,确保电流误差为零,同时引入谐波抑制策略以优化系统性能。
|
机器学习/深度学习 人工智能
LabVIEW使用OpenVINO加速必备工具包下载与安装教程
LabVIEW使用OpenVINO加速必备工具包下载与安装教程
736 0
LabVIEW使用OpenVINO加速必备工具包下载与安装教程
|
小程序
uniapp使用scss 嵌套语法
uniapp使用scss 嵌套语法
575 1

热门文章

最新文章