关于状态变迁一致性接口高性能设计
来源:互联网 发布:爱普生打印机清零软件 编辑:程序博客网 时间:2024/05/16 08:36
这个是订单的流转图,,,,
为了让开发不需要知道流转的细节,为了不需要每个开发都自己实现订单变迁,把订单状态的变迁封装到一个接口当中,接口的参数为 1 orderId, 2 事件枚举对象
(使用事件做为参数是为了 屏蔽开发者对复杂订单流程的了解,减少开发的门槛),而且 该接口必须能够坚持这种事件变迁的合法性。比如 当前订单状态为已支付, 然后传递一个 取消订单的事件,,, 这样是不合法的,因为不符合状态机流转,,,,
接口
public void handlerEvent(Long innerOrderId, DfOrderEvent event);
实现方案1:
初始化.。。
状态-事件-下个状态
状态1-事件1-下个状态1
状态2-事件2-下个状态2
将所有状态变迁加载的内存放map里面
map<String,Integer>
map key为 state+event,value 为下个状态
1 select state from order where orderid =***
2 将当前状态跟事件 跟状态机map做比对,,如果找不到下个状态,,说明不合法,,,返回
3 update set state = finalSate where orderid= and state =
但是在case 3 可能出现冲突,,,,
因为在执行3的时候,可能状态被改了,,,这个时候跟新记录数为0 ,这个时候怎么办???
比如 新单- 》已取消 新单->已接单 并发出现的时候,就会出现碰撞。
这个时候,如果更新记录数为0,就select state 返回,,,告诉调用者,,,状态已经被改成另个状态了,,,,事件执行失败
- 关于状态变迁一致性接口高性能设计
- 高性能J2EE接口平台设计
- 高可用、高性能? 接口设计的 16 个原则
- 高可用设计之MySQL状态性能监控-【学习笔记】
- 高性能运算放大器与ADC的接口设计
- 关于前端设计中的高性能 CSS3 动画
- 高性能服务器设计
- 高性能服务器设计
- 高性能服务器设计
- 高性能服务器设计
- 高性能服务器设计
- 高性能服务器设计
- 高性能服务器设计
- 高性能网站设计
- 高性能IO设计
- 高性能服务器设计
- 高性能服务器设计
- 高性能服务器设计
- java子父类内部程序的执行顺序
- UVa 729 - The Hamming Distance Problem
- CVPR14 动作识别 Lie group manifold + 3D skeleton
- 在CSV文件导入到数据库时使用过的代码
- 如何删除多行首字母,Sublime Text多行编辑运用
- 关于状态变迁一致性接口高性能设计
- 当别人遇到困难的时候
- lamp 的php安装位置
- ado.net中的DataSet使用
- javascript常用属性
- KEIL编译错误信息表
- BlueTooth: 蓝牙Bluz协议栈概述
- POJ 1789 、Truck History
- 中国计算机学会推荐国际学术刊物