Skip to content

lightweight-component/aj-workflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A workflow engine 工作流

A lightweight workflow engine for Java.

如何理解工作流?

对于未接触工作流系统的同学,可能好奇工作流到底扮演着一个什么的角色。网上介绍的通常比较抽象,——下面就利用笔者自己的话,说说对工作流系统的理解。

一个工作流系统,首先定义了一系列的流程,然后通过 API 与其他第三方业务系统交互, 比如 A 业务触发了某个流程,接着 B 业务触发下一个流程节点(进行下一步),最后工作流系统本身觉得此时某个条件被满足了,则进行下一个节点迁移,同时也触发了 C 业务系统得到业务的通知。

这有点业务解耦的意味,工作流系统要处理一个或多个业务系统。这些业务系统都是来自于第三方的。工作流充当了一个中间层,将不同的业务系统连接起来,降低了各个系统之间的依赖度。

除了业务解耦,还有用户视觉维度的解耦。试想想看,对于不同的权限的用户,允许参与者在流程的不同阶段输入数据或做出决策。

这样延申的话,则业务逻辑不仅仅只是写于我们普通的 Java 代码中,而是被抽象并独立出来,游离于 Java/C#/Node 本身的业务系统,单独定义在工作流系统那么一个模块之中。

而且,不是再写代码的方式,而是:1)表面是“可视化”的业务逻辑,直观化、图形化;2)底层是利用声明式的语言例如 XML 而不是 Java/C#/Node 去定义业务逻辑。这使得业务逻辑更容易理解和维护