卡巴拉树开发秘辛:工作流模式
高异步并发在前端大数据渲染场景是常遇到的问题,如何有效管理并发过程,解决资料合并与节流,消息中心等问题一直是该场景下常遇到的问题,但目前为止一直没有一套完善的解决方案。本文阐述了如何利用工作流模式搭配rxjs实践一套有效的流管理工具。工作流模式是2000年由W.M.P. van der Aalst等人提出的一种设计模式,该模式旨在透过清晰的定义各种流动的流场景之处理模式,来简化流程问题的复杂性,并达到流程可视化与自动化的目的。工作流模式可以分为控制流模式,资源模式,数据模式与异常处理模式四大方向,其中控制流模式决定了业务流程的流向与行为,资源模式阐述了业务流程过程中所使用到的资源分配行为,数据模式则讲述了数据在控制流当中的传递情况与使用,异常处理则描述了流异常的情况下终止流的规则与行为。本文中我们运用了rxjs作为实践工具。rxjs是一个基于观察者模式搭建异步序列的工具库,透过名为observer的观察对象发送消息给订阅者。本文中,我们结合了工作流模式与rxjs的pub/sub特性实现了控制流的并行,循环,条件,控制等特性,并透过observer的观察对象,来达成消息中心与异常处理流。解决了高频并发异步场景下的代码复杂问题,并达到流程可视化与自动化的特性。 介绍 工作流模式 工作流模式 (workflow pattern)是设计模式的一种,用于具有流程性质的场景。 工作流模式是一种设计模式,它描述了在工作流程当中对于流程的管控,资源的分配,数据管理与异常处理情况。以下我们将针对四个方向进行介绍。 控制流 控制流是工作流模式中的基础,它描述了如何将工作流程前后串接,并行与条件处理等等。透过将程序想像成河流流动的方式,我们可以很容易的管理不同场景下需要的流动行为,例如,不同的参数需要请求不同的接口,此时出现了条件判断,应该使用排他选择流 (Exclusive Choice),又例如我们希望接收到反应后(response),做一个节流的动作,则我们可以选择使用合并流蒐集反应,再接上节流阀。以下简单介绍几种常见的控制流模式: 序列流 (Sequence Flow) 序列流是最常见的一种控制流,它描述了顺序执行的流的特性,如下图: 当程序A执行完毕后,才能执行程序B,然后C,最后有一个终止程序。该流动当中不会出现循环或条件分流的情况。 并行流 […]