阅读本文需要
- 函数式编程
- 响应式编程
- Spring Boot、Project Reactor
Workflow,即为工作流。其需要对输入数据源(pull数据、push数据)通过串行和并行的工作链进行处理,最后输出结果(打印、储存……)
S(ource) -> workflow -> R(esult)
Workflow的基本工作单位WorkUnit代表一个单独的处理单元,为工作流程中的最小工作单元。
阅读本文需要
Workflow,即为工作流。其需要对输入数据源(pull数据、push数据)通过串行和并行的工作链进行处理,最后输出结果(打印、储存……)
S(ource) -> workflow -> R(esult)
Workflow的基本工作单位WorkUnit代表一个单独的处理单元,为工作流程中的最小工作单元。
Functional Reactive Programming,以下简称FRP。中文译作函数式响应式编程,又称为函数式反应式编程,是一种采用函数式编程,进行面向异步数据流的编程范式。
它不是某一个语言的工具,而是一种更高抽象级别的编程范式。在很多领域中,已经诞生了不少成熟的响应式编程框架,比如RxJS、RxJava、Project Reactor……
在这个通用的编程范式中,其核心的异步事件流叫做Observerble/Stream。如果使用到Java Stream API、EventBus、观察者模式的实现等工具的话,应该会对这两个名词很熟悉。所以在讲FRP之前。先介绍函数式编程、观察者模式,以及事件驱动模式。
在函数式编程里面,函数为第一等公民,或者,纯函数是唯一的第一等公民(Pure function is the one and only first-class citizen)。函数式是无副作用的,在函数是编程里面,只能够是无状态的纯函数,同时变量也应该是常量化的。借此可以得到更加可预测和更可靠的编程代码。
反应式编程是一种编写异步数据流的编程方式. 利用函数式编程组合数据流的验算, 整个程序将成为事件和行为的组合. 它可以提高代码的抽象级别, 因而可以专注于定义业务逻辑的事件的相互依赖性.
用到Stream API 有几个接口是必须会用到的,所有的map、filter、reduce、forEach方法的参数都是以上函数式接口的一个实现,尽管我们写Lambda表达式的时候并不会怎么关注到这个接口的本身,但是想要完全掌握Steam API 以及函数式编程,这些函数式编程接口是必须要了解的。同时,学习接口需要了解过JAVA 泛型相关知识。
以下T、U、R等类型字均用来表示泛型类型。