每一个程序员,在接触到工作流的时候,都会有这么一个疑问——我用一般的方法可以实现,为什么还要用工作流?
  
     我曾经也问过这个问题,不过现在稍微有点明白了。别着急要答案,看过下面的例子,或许你也就明白一些了。
     这是一个简单的业务——订货流程:
  1. 客户提交采购订单
  2. 业务员执行订单处理
  3. 如果缺货,转工厂生产
  4. 仓库出货
  5. 物流发货
    如果不使用工作流技术,从头开始开发这个订购流程的业务逻辑,我们需要:
  • 每个活动点都需要开发交互页面和后台处理程序
  • 每个活动的流转都需要硬性判断下一步活动节点及其操作人
  • 每次操作都需要维护业务数据和流程的相关数据
    最终结果就是这样:
     这还不包括监视、控制、分析流程的部分。
     但是,如果我们使用了工作流

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

  • 使用专门的流程数据系统,维护所有涉及流程流转的数据。
  • 提供“流程设计”工具,帮助用户定义订货流程的模型,而且一般都提供了可视化的界面。
  • 所有的流程都依靠流程引擎来处理,避免了需求更改与硬编码之间矛盾的产生。
  • 工作流引擎还提供了众多的API,可以很方便的将工作流的管理和业务操作完美结合。
   所以在合适的项目中引入工作流技术,对于基础开发来说,是非常有益处的:
  • 降低开发风险
        通过使用诸如活动、流转、状态、行为这样的术语,使得业务分析师和开发人员使用同一种语言交谈成为可能。优秀的流程设计建模工具,甚至能使开发人员不必将用户需求转化成详细设计文档。

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

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

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

从程序员的角度来看为什么我们需要工作流相关推荐

  1. 从高级程序员的角度来看,Rust 基础知识

    作者 | Daniel Bulant 译者 | 弯月 出品 | CSDN(ID:CSDNnews) 刚开始从事编程工作的时候,我使用的是PHP.个人感觉,PHP的语法有点笨拙且不自然,有时甚至很讨厌( ...

  2. gui与windows和linux但关系,从程序员的角度看Linux和windows的对比

    ,~/vsZ.{ `5J0S LUPA开源社区#fjY*Lj$U5GYRBcc 本人在Unix SYS5,DOS,Windows3.x,windows9.x/NT 和Linux几个不同时期流行的OS上 ...

  3. 从Java程序员的角度理解加密的那些事

    前言 在我们日常的程序开发中,或多或少会遇到一些加密/解密的场景,比如在一些接口调用的过程中,我们(Client)不仅仅需要传递给接口服务(Server)必要的业务参数,还得提供Signature(数 ...

  4. 从程序员的角度,来拆解物联网系统中的开发工作

    文章目录 **物联网系统** **设备端的开发** 1. 不需要网关的设备 2. 需要网关的设备 3. WiFi 类设备 **物联网平台开发** **业务应用开发** 推荐一篇好文:从程序员的角度,来 ...

  5. java购买电视_以程序员的角度怎么购买一台「性价比高的电视」

    前俩天有小伙伴在我的文章下留言,说能否把 [国内电视机都介绍一下],今天我已在TV端开发多年的程序员的角度.谈谈已程序员的角度如何购买一台性价比高的电视. 国内大的电视机品牌介绍 长虹 -- 成立于1 ...

  6. 从程序员的角度深入理解MySQL

    前言 作为一名工作了4年的程序猿,今天我将站在程序员的角度以MySQL为例探索数据库的奥秘! 数据库基本原理 第一,数据库的组成:存储 + 实例 不必多说,数据当然需要存储:存储了还不够,显然需要提供 ...

  7. 从一个程序员的角度看——微信小应用

    前言: 最近初步了解了一下微信小应用,APP端的同事也非常感兴趣,于是在公司内部做了一个小小的分享,分享的过程中有很多讨论内容,大家也是非常感兴趣和有自己的看法,当时"混乱"的场面 ...

  8. 从程序员的角度分析微信小程序

     从程序员的角度分析微信小程序             我赶快在书架上拿出三年前买的书,把上面的土擦干净,压压惊. 作为一个并不是资深的程序员. 从程序员的角度分析一下微信小程序,欢迎指点. 首先 ...

  9. 从程序员的角度分析微信小程序(编程语言:用到什么学什么)

    从程序员的角度分析微信小程序(编程语言:用到什么学什么) 一.总结 一句话总结:微信小程序原理就是用JS调用底层native组件,和React Native非常类似.(需要时,用到时再学) 1.选择语 ...

最新文章

  1. Java项目:慢病报销管理信息系统(java+MySQL+Jdbc+Servlet+Jsp)
  2. 面板panel与窗口frame的区别
  3. Python 获取图片文件大小并转换为base64编码
  4. vector容器与find算法
  5. lt;xliff:ggt;标签
  6. 零基础学习Java,全方位知识点总结!
  7. 硬件基础:虚拟内存相关知识介绍?
  8. ls 显示目录下的内容和文件相关属性信息
  9. c++指定枚举占一个字节
  10. 学python能做什么类型的工作-学点Python,让你的求职简历更有含金量!
  11. java 任务栏程序_如何为Java Swing程序动态启用或禁用任务栏图标
  12. 【鲲鹏HCIA考试】随堂习题卷六
  13. embedding lookup
  14. 沉云架路,边缘先锋—中国联通5G边缘先锋团队2020年交付纪实
  15. 2021三跨985重庆大学917计算机上岸经验分享
  16. 2019配电安规电子版_2018年配电安规.docx
  17. IDEA SVN拉下来的项目import project 没反应 解决方案
  18. android l x64,64位 Android L有9大亮点
  19. OSChina 周五乱弹——岂能说走就能走
  20. 电脑中PDF如何转换成WPS格式

热门文章

  1. 基于RecyclerView的图片浏览器
  2. 狄利克雷分布公式_Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)...
  3. 从网线到网页之物理层一网线网口
  4. D3D11_Chili_Tutorial(2):画一个三角形
  5. English—句子
  6. GDAL综合整理--7:GDAL实用工具简介
  7. 46 同位语和同位语从句(以及) to/at/for/with 用法搭配
  8. Nuxt入门到打包部署 Vue-SSR项目
  9. Python函数和面向对象,小白看了都说好
  10. 360n6pro刷鸿蒙系统,因太费电想刷系统,N6Pro哪个版本的系统耗电少,有什么问题或缺点...