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

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

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

[zt]从3个科技公司里学到的57条经验

来自窝窝博客:推荐互联网深度文章

2010-11-23 22:45:25
查看原文
自1999年起我就开始发掘一些科技公司,并帮助它们运营。我最近的一个公司是fabulis.com。下面是从干这行中得到的57条经验。我可以列出更多,但恐怕会令你厌烦。

1.做你个人有热情的事情。你是你自己最好的民意代表。

2.用户体验很重要。大多数产品做不到这些是因为用户弄不清怎样才能从这些产品中获得好处。很多产品做不到这些是因为过于复杂。

3.要懂技术。你不必去写代码,但你必须能理解它是如何被开发出来的,如何工作的。

4.创业公司的CEO必须,必须,必须担任产品经理。他/她必须对产品拥有功能性的用户体验。

5.对功能进行主次分级。不会有两个等同的功能。你不可能把它们一次全实现。要进行兵力优化。

6.使用缺陷跟踪系统,虔诚的用它来管理你的开发活动。

7.及时发布。除非真正的用户接触到你的产品并给予反馈,你永远都不会知道你的产品是好是坏。

8.
尽快发布,经常发布。不要惦记着再增加一些其它功能。只要能达到可以用来收集用户反馈的最小功能集合,那就发布它。收集反馈信息,反复这个过程,发布下一
个版本、下一个版本,越快越好。如果你3个月才发布出第一版面向用户的产品,你拖延的太久了。如果3个星期才发布一次更新包,你拖延的太久了。如果不能一
周几次,那每周发布一次更新。每3周发布一次重大更新。

9.唯一有意义的事是你的产品的好坏。其它的都是鸡毛蒜皮。

10.对你的产品好坏的唯一判定来自于有多少用户使用它。

11.因此(补充第9、10条):产品初期决定你将来是否能成功的关键因素是你的产品的吸附力。把你主要的时间花在如何在你早期的受众中培养吸附力。如果你能启动这个过程,雪球会越滚越大。

12.如果你最初设想的50%后来证明可行有效,那你已经相当成功了。尽可能的听取你的用户。

13.不要依赖于你的用户代表去告诉你如何发展。用户代表可以告诉你如何定位,帮助你明确潜在的需要打磨的核心内容,但你仍然需要有能力汇总消化这些信息,知道哪里去找到你的用户。

14.大多数人真正主要使用的也就是5~7种服务。如果你想做一个重要的产品,成为一个大公司,你需要能清楚如何成为这5~7种服务中的一种,这样去让用户为你着迷,俘获他们的热情和信任。你需要给你的用户一个好的能够让他们在你的服务上花时间的理由。

15.尝试追逐正在进行的潮流,开创你自己的市场。如果可以的话,捕捉刚刚出现的趋势苗头,驾驭它。

16.
找个“引路人”。有些人以前做过这些 — 融资,贸易,给创业公司工作。给这个人你公司的1%~2%作为报酬换取他的时间。借助他们打开未来市场的大门。
把他当作企业发展的宣传媒介。不要让委员会去做这种事情。顾问部从来就没有提供过有用的东西。找到这样的人,把他们当作你的引路人,依靠他们。

17.在你的项目上尽量找最棒的人一起工作,不管他在什么地方。

18.有可能的话最好设立分部,但这需要你穿梭在几个地区之间使他们正常运作。在线合作最少3~4周一次,这意味着你需要几乎每月都要在这几个地方旅行一次。

19.跟你喜欢相处的人一起工作。这不是说你可以跟你不喜欢的人不合。

20.要像信赖你的家人一样信赖跟你一起工作的人。

22.摆放你的办公桌,使你能看到你的同伴,他能看到你。如果你们每天都没有兴趣看到对方,那你们选错了一起工作的人。

23.使用一个类似Yammer的内部分享工具,分享你们正在开发的东西。对很多人(特别是开发人员)来说,更新状态信息要比发送邮件更容易。

24.在团队中使用一个文件共享服务系统,例如basecamp。这对所有人都很重要,它可以记录所有的文件动态并发送到你的邮箱里。basecamp使你有了历史存档,有了一个集中式数据文档库。

25.认清楚自己真正擅长的是什么,把自己的精力主要放在这些事情上。让其他的人做其他的事情。

26.让你的周围围绕着能够弥补你的缺陷的人。让他们做他们擅长的事。你不要去做他们的事。

27.跟在某些方面比你更聪明的人一起工作。

28.跟那些会和你争论,反对你的人一起工作。

29.白天地狱式的奋斗工作,晚上回到家和家人相亲相爱。

30.跟那些热衷于解决你正要解决的某些特定问题的人一起工作。光热情于发展公司业务还不够;还要热情于你的客户,热情于解决他们的问题。

31.促使你周围的人像你一样用心。

32.忠诚。培养和引导人们,而不是鼓噪他们。

33.你永远不会像你想象的那么正确。

34.每周至少去健身房或跑步4次,要想保持你的思维的体型,先保持你身体的体型。

35.不要在飞机上喝饮料,除非你的航程超过8小时。那会害了你,而且浪费你的时间。

36.你选择的投资者应该是你喜欢和他一起工作的,可以做朋友的,能够得到忠告的人。

37.不要按价值来选择投资者。淡化一些这方面的色彩,从长远看,不会有坏处,只要选对人。

38.创业初期募集资金越少越好。强迫自己进行严格的预算,认真使用每一块钱,就好象是最后一块钱。

39.一旦有了一些发展动力,募集一些多于你的需要量的资金,但你要清楚它们都将做什么。这有些技巧。不要在募捐活动上吝啬。

40.每分钱都要花的小心谨慎,就像那是你最后一分钱。

41.
清楚你要做什么样的公司。像Google和Facebook这样的公司没几个。对于你的公司,也许1千万的回报额已经很好,也许2千万,也许一亿,也许什
么都没有。计划好你要做什么样的工作。不要去做做不到的事情。看清楚你口袋里有多少钱,能做什么事情,两年赚取2千万期望值的20%要比5年赚取1亿期望
值的3%要好。

42.跟41条有关,明白你的业务是否适合接受风险投资。风险投资一般会期望10倍的回报率。也就是说,你接受5百万,那就要提供5千万的回报。1千万的投资 = 1亿的目标。在签署接受风险资金时一定要想清楚他们在你身上期望的是什么。

43.把你的个人公司发展目标和你的投资者的目标保持一致。有目标公司才能成功。投资者没有魔力让事业成功。同样他们也没魔力让CEO用心。

44.会议一般来说都是在浪费时间。

45.微笑。大笑。穿有趣的袜子。我穿有趣的袜子,用来提醒我不要满足于平淡,要有创新。

46.做事情时,做任何事情时,都不要让你看起来像个机器人。让人们知道真实的你。

47.正视你的问题,化劣势为优势。

48.任何地方都穿着你公司的T恤衫。

49.成立自己的客户服务。

50.要会讲故事。

51.别说谎。永远不要。

52.在你周围的人身上寻找灵感。

53.每天都保持快乐。如果不高兴,那就别做。没人要你做。

54.销售中的那句话说的很对,你的成绩只跟最近的一次销售有关系。

55.犯错误,但要吸取教训。我犯了无数错误。

56.成熟,但不要长大。

57.永不放弃。