工作流编排
在电子商务领域,一个订单的生命周期,往往长达数天,涉及到创建,支付,履约等行为和状态。怎么管理订单状态呢?如果任何一个REST API, 都能够随意修改订单状态,那么订单状态将漏洞百出,容易有资金损失风险。 这个时候,就需要诸如Camunda, AWS Step Functions Workflow Studio之类的工作流引擎Workflow Engine 编排工具,来配置状态转移的时序逻辑,前提条件,和允许范围等。 工作流编排,适合于连接和管理松散的用户行为,逐渐流行,不限于电商领域。但是,工作流仍然有随意性。这篇文章将解释,并推荐解决办法。
电商订单有限状态机
举一个最简单的订单有限状态机:虚拟商品。比如说,购买桌面应用的license。其分成如下四个状态:initiated, paid, delivered, canceled。理所当然的,也有四个对应的动作。
每个用户动作,都有一个WorkflowHandler来处理。WorkflowHandler类里面,一般要做如下工作。
-
用户动作,诸如支付,履约,通过HTTP请求发送过来。
-
根据规则,比如
validate()
方法,找到对应的 WorkflowHandler。 -
调用
run(