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

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

这是一个简单的业务——订货流程:

如果不使用工作流技术,从头开始开发这个订购流程的业务逻辑,我们需要:

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

最终结果就是这样:

这还不包括监视、控制、分析流程的部分。

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

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

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

  1. 降低开发风险

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

  1. 流程实现的集中统一

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

  1. 加速开发

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

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

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

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

什么是工作流?为什么程序员要用它?相关推荐

  1. 从程序员的角度来看为什么我们需要工作流

         每一个程序员,在接触到工作流的时候,都会有这么一个疑问--我用一般的方法可以实现,为什么还要用工作流?         我曾经也问过这个问题,不过现在稍微有点明白了.别着急要答案,看过下面的 ...

  2. 一款自带工作流引擎的Node.js全栈框架,程序员的接单神器

      大家好,我是小编南风吹,每天推荐一个小工具/源码,装满你的收藏夹,让你轻松节省开发效率,实现不加班不熬夜不掉头发!   今天小编推荐一款自带工作流引擎的Node.js全栈框架, 是程序员的接单快手 ...

  3. 关于程序员的政治(转)

    其实一直都不太懂得办公室的政治,我出来一年多了,自己喜欢做的事情没做到,当初也很傻很天真的觉得事业单位恶心,企业只要有能力就一定有出头之日,拒绝了同学好友的要求.现在悔到肠子都青了.下面只是我总结的一 ...

  4. Java程序员修炼之路(一)我们为什么选择Java

    我们为什么选择Java 大多数人选择Java可能只是因为听说Java前景好.Java比较好找工作.Java语言在TIOBE排行榜上一直位于前三等等之类的原因,但是Java具体好在哪里,心里却是没有什么 ...

  5. [转]程序员技术练级攻略

    2019独角兽企业重金招聘Python工程师标准>>> 月光博客6月12日发表了<写给新手程序员的一封信>,翻译自<An open letter to those ...

  6. php转java知乎_php程序员来谈谈php和java

    本人一直以来从事PHP互联网开发,之前用过Thinkphp,不过最近几年一直用Yii2.最近由于公司要开发一套OA系统,所以开始用JAVA在做(php开源的工作流引擎真的太烂,自己开发一套又没时间), ...

  7. 8月书讯 | 像大师级程序员一样思考​

    20 世纪 80 年代,电脑还不是那么普及.一个住在乡下的少年,彼时还没有一台属于自己的电脑,即使不能自由地编写程序,他却对编程语言产生了浓厚兴趣.多年后正是这种兴趣,促使他发明了一门了不起的语言-- ...

  8. 初级程序员常犯错误一览

    作者 | 饶全成 来源 | 码农桃花源(ID:CoderPark) 最近接手其他人做的项目,导致之前的一些幻想破灭了.因为刚工作的时候做项目是php,而php本身的web框架一般只简单区分mvc,稍微 ...

  9. 程序员的编程能力层次模型

    编程技能层次 编程技能层次,指的程序员设计和编写程序的能力.这是程序员的根本. 0段-非程序员: 初学编程者,遇到问题,完全是懵懵懂懂,不知道该怎么编程解决问题.也就是说,还是门外汉,还不能称之为&q ...

最新文章

  1. android列表勾选框,android listview实现复选框列表
  2. Ubuntu:Ubuntu下安装Anaconda和Tensorflow的简介、入门、安装流程之详细攻略
  3. JQuery的插入操作滚动条显示返回顶部
  4. Java语法教程-Java开发环境安装JDK
  5. 07-Python之面向对象编程(定义)
  6. Ibatis2到mybatis3的转变1
  7. 使用XLocalizer进行ASP.NET Core本地化
  8. 传统银行的战略转型之路,长沙银行迈向数据驱动提质年
  9. 如何判定耿耿数已经被bind过?
  10. Android Binder机制的Native应用
  11. Output error file to the following location:[ A:\GHOST ERR.TXT] 错误处理
  12. 移动pc一套代码_【腾讯】如何避免 CDN 为 PC 端缓存移动端页面
  13. 啊哈算法---快速排序(C语言)
  14. 协同办公OA业务系统数据集成(3)-基于OA(e-cology Jersey)定义Rest Api前端数据接口封装
  15. 通过经纬度求解方位角
  16. shift用计算机,shift是什么意思_shift键有什么用? - 学无忧
  17. Android 解析微信基础表情并显示
  18. TV新媒体电商发展遇瓶颈
  19. 工程经济作业1答案_2018年电大《工程经济与管理》阶段作业1及答案(网上作业).doc...
  20. 5分钟搞懂什么是深度学习

热门文章

  1. Android 蓝牙信号强度RSSI介绍
  2. Midjourney,科技融入设计的新时代?
  3. ORA-00376、ORA-01110数据文件异常故障修复
  4. 42所一流大学建设高校名单
  5. 关于写好一个ppt的准备
  6. git hook 防止提交binding.pry
  7. 【内存拷贝函数:memcpy与memmove】
  8. 通过PWM控制串行LED灯
  9. 使用Fiddler插件X5S寻找XSS漏洞
  10. EET_loss学习