状态机服务

刚才脑中突然闪过一个想法,稍微记录一下。


我觉得可以有一个状态机服务。 先抛开组成员,权限控制等问题,再抛开后台常见的增删改查,剩下的一个重要议题就是状态变更了。 抛开的那些问题都有大量可用的库,但状态变更作为业务的核心,一般框架会将这个部分交由开发者自行完成。 我得承认,在这几年的工作中,操作过不下几十个模型的 status 字段(昨天又写了一个)。 它耗费了包括我在内很多开发者大量的开发时间。 那么,我们可以将这部分的业务开发搞轻松一点么?


让我们来设想一个模型,它是状态机的抽象。 它可以设置状态,行为,以及行为对应的状态变更。 它大概还需要设置 API Key & Secret 以跟开发者的数据有一些交互。 它会关联一个元素(但不关心元素的实现)。 我们可以

  • 要么提供预设的后台,可以操作这些元素,比如 Trello Card?;
  • 要么提供挂件,让用户嵌入到自己的后台去,比如 Disqus;

它的好处是:

  • 也许在后台插入一段 JS 脚本,就能省掉后台那套麻烦的交互。
  • 开发者配置好必要的 Key 后,专心去设计状态机就好啦,后台复杂的设定是不是可以省略呢?
  • 状态机相关的审计,变更,等麻烦事这里也能一波搞掉。

它的坏处是:

  • 也许需要将一些敏感的数据渲染到挂件上,有潜在的泄漏数据的风险。
  • 存在单点故障的风险。

手头的 Side-Project 还没交付,可是教练,我手痒! 啊,感觉会是很好玩的一个东西,这几天可以再深入想想。