流程设计(抽象节点法)

Posted 尘嚣之上

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了流程设计(抽象节点法)相关的知识,希望对你有一定的参考价值。

如何设计一个配置灵活的流程?

要做到以下几点

1.节点状态、节点按钮可以动态的配置,不会影响流程的运行,可以在现有的流程中更改流程的走向

2.节点可以对应多个按钮,即流程进入某一节点的时候可以显示多个按钮

FlowNode

流程节点状态,流程节点状态用于表达流程的状态

那么NodeState和ButtonState分别代表什么意思呢?

为什么需要两种状态?举个简单的例子,以一个外卖员接单为例,当外卖员接单后,可能会有两个按钮供他选择,受理订单和拒绝受理(假如超出了他的配送范围),假如受理订单,我们可以用“待取货”来描述NodeState,可以用“已受理”来描述ButtonState,那么对于拒绝受理,该订单将重新回到分派外卖员的节点状态,所以用“待分派外卖员”和“拒绝受理”来描述这一状态,但是对于“待分派外卖员”,这个节点可能同时存在另一个不同的状态,“待分派外卖员”-“商家已接单”,所以这就可以完全区别两种状态了,否则我们无法分清“待分派外卖员”到底是一种什么具体的状态。这两种状态分别对应了一个分派外卖员的按钮。

FlowButton

流程按钮

为什么会有NextNode

我们认为当按钮结束后,订单一定会进入到一种状态,而状态又是和按钮对应的,所以就巧妙地形成了一个流程的闭环,环环相扣,十分巧妙。这也是流程设计的核心思想,根据按钮的行为将节点状态抽象出来,抽象出来的节点只要拥有属于他自己的按钮,并且按钮可以复用,就可以将流程运转起来。

通常依赖这样的一个基本的流程框架,完全可以设计一套符合上述两点的流程出来。

以上是关于流程设计(抽象节点法)的主要内容,如果未能解决你的问题,请参考以下文章

抽象类和模板方法设计模式

Java进阶篇缓存底层设计(LRULFUFIFOCache)

Java进阶篇缓存底层设计(LRULFUFIFOCache)

基于KubeEdge的边缘节点分组管理设计与实现

5.19Java装饰器设计模式

设计模式-结构型-7-组合模式