什么是工作流?为什么程序员要用它?

article/2025/10/7 14:32:28

每一个程序员,在接触到工作流的时候,都会有这么一个疑问——我用一般的方法可以实现,为什么还要用工作流?

我曾经也问过这个问题,不过现在稍微有点明白了。别着急要答案,看过下面的例子,或许你也就明白一些了。

这是一个简单的业务——订货流程:
在这里插入图片描述
如果不使用工作流技术,从头开始开发这个订购流程的业务逻辑,我们需要:

  • 每个活动点都需要开发交互页面和后台处理程序
  • 每个活动的流转都需要硬性判断下一步活动节点及其操作人
  • 每次操作都需要维护业务数据和流程的相关数据

最终结果就是这样:
在这里插入图片描述
这还不包括监视、控制、分析流程的部分。

但是,如果我们使用了工作流
在这里插入图片描述这样看起来就简单多了。右侧的工作流管理系统,接管了所有订货业务在流程方面的定义和执行。这样做的好处很多:

  • 使用专门的流程数据系统,维护所有涉及流程流转的数据。
  • 提供“流程设计”工具,帮助用户定义订货流程的模型,而且一般都提供了可视化的界面。
  • 所有的流程都依靠流程引擎来处理,避免了需求更改与硬编码之间矛盾的产生。
  • 工作流引擎还提供了众多的API,可以很方便的将工作流的管理和业务操作完美结合。

所以在合适的项目中引入工作流技术,对于基础开发来说,是非常有益处的:

  1. 降低开发风险

通过使用诸如活动、流转、状态、行为这样的术语,使得业务分析师和开发人员使用同一种语言交谈成为可能。优秀的流程设计建模工具,甚至能使开发人员不必将用户需求转化成详细设计文档。

  1. 流程实现的集中统一

应对业务流程经常变化的情况,使用工作流技术的最大好处是使业务流程的实现代码,不再散落在各式各样的业务系统中。

  1. 加速开发

开发者不用再关注流程的参与者、活动节点的衔接、流转控制……因为这些工作很多被工作流框架接管了。因而开发者开发起来更快、代码出错更少、系统更加容易维护。

  1. 提升对迭代开发的支持

如果系统中业务流程部分被硬编码,就不容易更改,需求分析师就会花费很大的精力在开发前的业务分析中,并且希望一次成功。但可悲的是,在任何软件项目开发中,这都很少能实现。工作流管理系统使得业务流程很容易部署和重新编排,业务流程相关的应用开发可以以一种“迭代/渐进”的方式推进,也就是说工作流技术在某种程度上支持“需求分析不必一次完全成功”。

转载说明:
作者:龙轩
原文链接:https://blog.csdn.net/xiaoxian8023/article/details/34468739


http://chatgpt.dhexx.cn/article/VQuVbNg8.shtml

相关文章

什么是工作流

什么是工作流? 工作流是从英文单词work flow中直译过来的。最直白的意思就是日常工作中相对固定的流程计算机化。 在此列举两个工作流简例: 客户到银行开户的工作流: 客户索取开户资料单——资料填写——营业员核对个人证件——营业员核对帐款…

什么是工作流?如何利用工作流引擎实现业务流程

工作流引擎是用来实现工作流的一种组件化工具,它是一整套解决方案,比如说一般工作流引擎包含这些功能:流程节点管理、流向管理等,是为了减小开发成本而推出的。因为在软件开发过程中,如果是从零开始实现工作流&#xf…

什么是工作流,flowable 与 Activiti对比

工作流 什么是工作流工作流是复杂版本的状态机Java工作流开源框架工作流对比Activiti设计器 Flowable兼容性 Camunda设计器兼容性:小结: 社区活跃度FlowableActivitiCamunda 总结 什么是工作流 工作流,是指“业务​过程的部分或整体在​计算…

工作流是什么

刚入职一家公司不久,昨天去和经理与客户对接需求的之前,经理问我接触过工作流没有之前。作为一个20年毕业的老人了,只能尴尬的说一句没有我下去会去了解下。这里我就暂且找一下别人总结的文章和大家一起学习下。 一、什么是工作流 工作流&a…

什么是工作流?

这里说的工作流是狭义的管理工作流程。 现代企业的日常活动中,70%以上都是有两个或两个以上的员工共同参与协作的的任务,比如生产流程、业务流程、各类行政申请流程、财务审批流程、人事处理流程、质量控制及客服流程等。一项工作,经过一个步…

union用法和enum用法

1 union用法 C语言中的union在语法上与struct相似。 union只分配最大成员的空间&#xff0c;所有成员共享这个空间 2 union的注意事项 union的使用受系统大小端的影响 编程&#xff1a;判断系统的大小端 #include <stdio.h>// 1&#xff1a;小端&#xff0c;0&…

C语言 C++中的union用法总结(包懂)

开始的话 已经好长时间没有更新了&#xff0c;对不起自己&#xff0c;更对不起我亲爱的读者&#xff0c;同时也对不起自己开办的这个博客平台。忙&#xff0c;太忙了&#xff0c;忙于找工作&#xff0c;找一份好工作&#xff0c;纠结于去大城市闯呢&#xff0c;还是回到本省的首…

php union用法,SQL Union用法是什么?

sql union用法是什么&#xff1f; sql union用法的总结&#xff1a; UNION 运算符将多个 SELECT 语句的结果组合成一个结果集。 (&#xff11;)使用 UNION 须满足以下条件&#xff1a; &#xff21;&#xff1a;所有查询中必须具有相同的结构(即查询中的的列数和列的顺序必须相…

mysql union语法,mysql中的union用法

UNION在mysql中被称为集合操作,操作类型分为两种:UNION DISTINCT 和 UNION ALL;注意:UNION和UNION DISTINCT是一样的功能。UNION功能为合并多个查询的结果并去重,UNION ALL的功能为合并多个查询的结果不去重。 集合操作时,两边的输入必须拥有相同的列数,如果数据类型不…

mysql得union使用方法_mysql中Union All使用方法

在mysql数据库使用UNION 时&#xff0c;会把结果集中重复的记录删掉&#xff0c;也正因为做了去重操作&#xff0c;所以效率相对Union All来讲稍微低一点&#xff0c;使用UNION ALL &#xff0c;MySQL 会把所有的记录返回&#xff0c;效率高于UNION。本文向大家介绍UNION ALL的…

SQL 中union的使用

采用where的解法 select name,population,area from World where area>3000000 or population>25000000 ;使用union的解法 select name,population,area from World where area>3000000 union select name,population,area from World where population>2500000…

C语言共用体(C语言union用法)详解

转载重点&#xff1a;共用体的所有成员占用同一段内存&#xff0c;修改一个成员会影响其余所有成员。图形分析影响过程 通过前面的讲解&#xff0c;我们知道结构体&#xff08;Struct&#xff09;是一种构造类型或复杂类型&#xff0c;它可以包含多个类型不同的成员。在C语言中…

C语言 union用法

我们知道结构体&#xff08;Struct&#xff09;是一种构造类型或复杂类型&#xff0c;它可以包含多个类型不同的成员。在C语言中&#xff0c;还有另外一种和结构体非常类似的语法&#xff0c;叫做共用体&#xff08;Union&#xff09;&#xff0c;它的定义格式为&#xff1a; …

c语言union(c语言union用法)

C语言-程序运行结果是&#xff1f;main(){unionstu{lon 我的机器&#xff0b;vc6运行的结果是12 我的理解是首先取最长的b的长度&#xff0c;但是b的长度比我的机器字长(32位即4个字节)整数倍要短&#xff0c;则sizeof(stu)的长度是12 不知道你的机器是不是64位的 如果是则证…

quartz mysql 配置_quartz的数据库配置

Quartz.net官方开发指南 第九课&#xff1a; JobStore JobStore负责保持对所有scheduler “工作数据”追踪&#xff0c;这些工作数据包括&#xff1a;job(任务),trigger(触发器),calendar(日历)等。为你的Quartz scheduler选择合适的JobStore是非常重要的一步&#xff0c;幸运的…

java 灵活配置quartz

项目背景&#xff1a; 最近项目上遇到个需求&#xff0c;需要我们在特定的事件做邮件和短信的发送。但时间并不固定&#xff0c;是根据用户配置的时间表来进行的定时发送任务。有点像闹钟&#xff0c;你设置的时间到了就响。这里我们采取的是每天凌晨定时取数据库里的时间表信…

java quartz配置_java quartz简单使用

1.在项目里引入quartz org.quartz-scheduler quartz 2.3.0 2.quartz的简单实例 package com.example.quartz_demo; import org.quartz.JobDetail; import org.quartz.Scheduler; import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrig…

SpringBoot - 集成Quartz框架之常用配置(二)

文件约定 在Quartz发布的JAR包的org.quartz包下&#xff0c;包含了一个命名为quartz.properties的配置文件并提供了默认属性&#xff0c;如果需要调整默认配置&#xff0c;则可以在类路径下建立一个新的quartz.properties&#xff0c;它将自动被Quartz加载并覆盖默认值。如果使…

浅析Quartz的集群配置

1、基本信息&#xff1a; Quartz是一个开源的作业调度框架&#xff0c;它完全由java写成&#xff0c;并设计用于J2Se和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征&#xff0c;如&#xff1a;数据库支…

SpringBoot2集成Quartz配置独立数据源

需求说明 Quartz配置需要部署独立的表结构&#xff0c;但是经常存于业务表之间&#xff0c;有些时候可能需要与业务表分开配置&#xff0c;所以在此给Quartz配置独立的数据源 一.版本介绍 Springboot版本为2.1.6 多数据源配置使用druid进行配置,数据库使用的为Oracle11g,如果使…