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

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

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

  1. 客户提交采购订单

  2. 业务员执行订单处理

  3. 如果缺货,转工厂生产
           
  4. 仓库出货

  5. 物流发货


    如果不使用工作流技术,从头开始开发这个订购流程的业务逻辑,我们需要:
  • 每个活动点都需要开发交互页面和后台处理程序

  • 每个活动的流转都需要硬性判断下一步活动节点及其操作人

  • 每次操作都需要维护业务数据和流程的相关数据

    最终结果就是这样:


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

     但是,如果我们使用了工作流

   这样看起来就简单多了。右侧的工作流管理系统,接管了所有订货业务在流程方面的定义和执行。这样做的好处很多:
  • 使用专门的流程数据系统,维护所有涉及流程流转的数据。

  • 提供“流程设计”工具,帮助用户定义订货流程的模型,而且一般都提供了可视化的界面。

  • 所有的流程都依靠流程引擎来处理,避免了需求更改与硬编码之间矛盾产生。

  • 工作流引擎还提供了众多的API,可以很方便的将工作流的管理和业务操作完美结合。

   所以在合适的项目中引入工作流技术,对于基础开发来说,是非常有益处的:
  • 降低开发风险
        通过使用诸如活动、流转、状态、行为这样的术语,使得业务分析师和开发人员使用同一种语言交谈成为可能。优秀的流程设计建模工具,甚至能使开发人员不必将用户需求转化成详细设计文档。
  • 流程实现的集中统一
        应对业务流程经常变化的情况,使用工作流技术的最大好处是使业务流程的实现代码,不再散落在各式各样的业务系统中。
  • 加速开发
        开发者不用再关注流程的参与者、活动节点的衔接、流转控制……因为这些工作很多被工作流框架接管了。因而开发者开发起来更快、代码出错更少、系统更加容易维护。
  • 提升对迭代开发的支持
        如果系统中业务流程部分被硬编码,就不容易更改,需求分析师就会花费很大的精力在开发前的业务分析中,并且希望一次成功。但可悲的是,在任何软件项目开发中,这都很少能实现。工作流管理系统使得业务流程很容易部署和重新编排,业务流程相关的应用开发可以以一种“迭代/渐进”的方式推进,也就是说工作流技术在某种程度上支持“需求分析不必一次完全成功”。



目录
相关文章
|
监控 数据可视化 中间件
平台化三部曲之三流程编排 - 平台化是舞台,流程编排就是导演一场戏
在上两篇ATA中,第一篇讨论了平台的扩展性(《从Eclipse平台看交易平台化》),强调微内核和扩展机制实现,第二篇讨论平台的模块化开发(《Google Guice平台模块化开发的果汁》),强调业务隔离,松耦合。这这第三篇ATA中,想分享下平台化中另一个重要方面,平台的服务流程编排 (*备注:本文.
18030 2
|
7月前
|
前端开发 Java 程序员
老程序员分享:Jeeplus框架工作流的使用实战(采购计划的制定流程)
老程序员分享:Jeeplus框架工作流的使用实战(采购计划的制定流程)
138 2
|
存储 缓存 监控
团队的技术方案设计模板
大家参考我这个方案设计模板(提纲)和相关介绍来做自己的方案设计的时候,可以根据自己的实际业务情况和背景做相关目录的删减,最后得出自己最终的方案设计,然后再去进行方案评审。
|
数据采集 机器学习/深度学习 人工智能
从团队的角度理解自动化
从团队的角度理解自动化
143 1
从团队的角度理解自动化
|
敏捷开发 消息中间件 前端开发
DDD实战之七: 战术设计、整体流程与首次冲刺
DDD实战之七: 战术设计、整体流程与首次冲刺
DDD实战之七: 战术设计、整体流程与首次冲刺
【开发随记】【提效】工作习惯那些事系列之四——任务管理
【开发随记】【提效】工作习惯那些事系列之四——任务管理
124 0
【开发随记】【提效】工作习惯那些事系列之四——任务管理
【开发随记】【提效】工作习惯那些事系列之五——任务处理
【开发随记】【提效】工作习惯那些事系列之五——任务处理
103 0
|
测试技术 Python
测试圈相亲平台开发流程(17):删除功能
测试圈相亲平台开发流程(17):删除功能
测试圈相亲平台开发流程(17):删除功能
|
算法 前端开发
测试圈相亲平台开发流程(3):架构的初步设计
测试圈相亲平台开发流程(3):架构的初步设计
测试圈相亲平台开发流程(3):架构的初步设计
|
架构师 Java 程序员
Java面向对象实践--开发团队调度软件(一)
Java面向对象实践--开发团队调度软件(一)
246 0
Java面向对象实践--开发团队调度软件(一)