编程指南-学习建议编程指南-学习建议
首页
学习方向
技术学习
🚀 编程指南
首页
学习方向
技术学习
🚀 编程指南
  • 三、技术学习

    • 技术指南

      • 前端技术知识

        • 什么是前端?
      • 后端技术知识

        • 什么是缓存?
        • 什么是工作流技术?
        • 什么是反向压力?
        • 什么是热数据探测?
        • 数据库也能版本控制?
        • /tech-learning/guide/backend/how-search-engine-works.html
        • /tech-learning/guide/backend/learn-concurrency.html
        • /tech-learning/guide/backend/other-databases.html
      • 通用技术知识

        • 什么是前后端分离?
        • /tech-learning/guide/general/what-is-redirect.html
        • 什么是单例模式?
        • /tech-learning/guide/general/what-is-magic-value.html
        • 什么是负载均衡?
        • /tech-learning/guide/general/what-is-multi-env.html
        • /tech-learning/guide/general/what-is-magic-number.html
        • 什么是 Linux?
        • /tech-learning/guide/general/what-is-cloud-dev.html
    • 系统设计

      • 如何设计一个实时排行榜系统?
      • /tech-learning/system-design/elasticsearch-optimization.html
      • /tech-learning/system-design/file-upload.html
      • /tech-learning/system-design/log-system.html
      • /tech-learning/system-design/software-sword.html
      • 如何设计好 API 接口?
      • /tech-learning/system-design/sdk-development.html
      • /tech-learning/system-design/architecture-design.html
      • /tech-learning/system-design/release-stability.html
    • 开发经验

      • 解决 Bug 经验
      • 如何快速上手新项目?
      • /tech-learning/dev-experience/enterprise-software.html
      • /tech-learning/dev-experience/opensource-contribute.html
      • 什么是代码规范?为什么要遵循代码规范?
      • /tech-learning/dev-experience/company-standards.html
      • /tech-learning/dev-experience/code-reuse.html
      • /tech-learning/dev-experience/quick-website.html
      • /tech-learning/dev-experience/vscode-remote.html
      • /tech-learning/dev-experience/linux-vm-remote.html
      • /tech-learning/dev-experience/young-contributor.html
      • /tech-learning/dev-experience/no-force-shutdown.html
      • /tech-learning/dev-experience/no-hardcode.html
      • /tech-learning/dev-experience/backend-attention.html
      • 千万别直接敲代码!(写代码前要做的事)
      • /tech-learning/dev-experience/project-attention.html
      • /tech-learning/dev-experience/website-online.html
      • /tech-learning/dev-experience/tech-selection.html

什么是工作流技术?

工作流是企业级开发中常见的技术,今天来科普一下。

什么是工作流

工作流就是把业务流程用技术手段管理起来。

举个例子:请假流程

  1. 员工提交请假申请
  2. 直属领导审批
  3. 如果请假超过3天,需要HR审批
  4. 审批通过,通知员工

这个流程用代码硬写可以实现,但如果流程变了(比如加一个部门经理审批),就要改代码。

用工作流引擎,可以把流程配置化,改流程不用改代码。

工作流的核心概念

流程定义

用图形或者配置文件定义流程怎么走。

流程实例

每次发起一个具体的流程(比如张三的请假申请)就是一个实例。

任务

流程中的每个节点,比如"领导审批"就是一个任务。

网关

流程的分支判断,比如"请假天数是否大于3天"。

常用的工作流引擎

Activiti

Java领域最流行的工作流引擎之一。功能全面,社区活跃。

Flowable

从Activiti分支出来的,更现代一些。

Camunda

另一个流行的选择,性能不错。

什么时候需要工作流

需要的情况:

  • 有复杂的审批流程
  • 流程可能经常变动
  • 需要流程可视化、可追溯

不需要的情况:

  • 流程很简单(就两三步)
  • 流程基本不会变
  • 小项目,没必要引入复杂框架

我的看法

工作流是企业级开发的常见需求,但不是每个项目都需要。

如果你的项目有复杂的审批流程,而且可能会变,工作流引擎是很好的选择。

如果只是简单的流程,自己写代码可能更简单。

学工作流不是必须的,等你遇到需要的场景再学也不迟。

上次更新: 2025/12/7 09:34
Prev
什么是缓存?
Next
什么是反向压力?