如何保证领域对象的状态机

 
在我目前接触到的开发中, 领域对象的状态通常都会对应到数据库中的某个字段(比如status,state). 如果状态不复杂倒也没什么.无非就是2,3个字段. 但是当状态机变得越来越复杂时(这种情况经常发生), 状态维护及已有数据状态一致性就受到挑战了.怎么解决这些问题, 通常也只能通过case by case的情况,遇到就改或修正数据. 这种修改如果是对整体系统有一个完整的印象的程序员还可以,否则稍有不慎就是一个潜在的风险点.
以前觉得应该在建模时就把状态跃迁模型进去,可是计划总是赶不上变化,总是会出现概念模型的变更和实际代码变更有出入的时候,要是没有时间去保持一致,最终又是混乱,当然,可以通过持续的沟通来解决.但似乎总是在”repeat yourself”.
目前想到的一种解决办法, 建模时还是定义状态机,通过状态机来生成配套的”对象状态跃迁校验代码”.在持久化时保证对象跃迁是符合定义. 应该可以解决问题.

关于一些实现细节:
1. 模型转化为状态机对象(领域对象, 当前状态机版本, 状态字段, 跃迁定义,持久化可以是一个xml文件)
2. 定义状态机验证接口, 配置方式
3. 运行时调用验证

Comments are closed.