工作流技术JBPM开发入门

什么是工作流?

 

对于工作流的官方解释在这里就不在赘述了,通俗的说呢,工作流就是对于我们业务中的流程管理!

 

由来:

 

由于我们接触的大部分OA系统中存在着大量的工作流程,而这些流程夹杂着不同领域的业务,无论是状态还是一些操作等都由我们自己维护,而一旦发生业务流程上的变化,修改源代码变成为家常便饭,整个项目举步维艰,况且需求的变更又是无处不在,业务流程的变化更是不可避免。

 

 

那么说了这么多,工作流到底帮我们做了什么呢?

 

工作流的实现原理:

 

对于工作流,其实它并不是什么高大上的技术,它的实现原理很简单,其实就是将我们平时手动调用的方法,不再在程序中写死,而是将调用方法的过程用xml表示出来,当需要调用某个方法时,我们去读xml来实现,通过去调用xml来读取下一方法的调用,这样来实现灵活配置!

相信知道它的原理了,大家就都觉得工作流真的没什么了,而且实现这么一个最最简单的工作流我们也花不了多长时间。

 

JBPM又是什么?

 

可以说JBPM是工作流思想的一种实现!

它的工作其实是对我们常用的业务进行一步抽象封装,将业务中常用的公共方法抽象出来,进行统一管理,当我们应用的时候只需要面对它抽象出来的方法进行调用即可(API),常规的复杂的业务流程都交由工作流来管理,而且应对变化来说,我们需要的也仅仅是更改调用流程的配置。

 

 

总结:

 

以上只能说是一个对于工作流认识的一个入门,想要表达的只有一个意思,工作流技术并不高深,所有的实现及现在出现的各种工作流产品都是基于它的实现原理来进行不断的抽象封装,只要我们懂得原理其余的只是如何应用别人封装好的方法而已!

举例说明JBPM帮我们做的工作:

 

其一:流程的调用工作,实现自动化且灵活化

 

说明:每完成一个任务后,将会自动执行下一个流程

             工作流技术JBPM开发入门_第1张图片


对应的xml文件


[html] view plain copy print ?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <process name="ApplyDepartmentDecision" xmlns="http://jbpm.org/4.4/jpdl">  
  4.    <start g="306,5,48,48" name="start1">  
  5.       <transition g="-93,-22" name="to 申请学籍转办" to="申请学籍转办"/>  
  6.    </start>  
  7.    <end g="335,397,48,48" name="end1"/>  
  8.    <task  g="268,102,144,59" name="申请学籍转办">  
  9.       <transition g="-69,-22" name="to 班长审批" to="班长审批"/>  
  10.    </task>  
  11.    <task assignee="班长" g="302,192,92,52" name="班长审批">  
  12.       <transition g="-69,-22" name="to 导员审批" to="导员审批"/>  
  13.       <transition g="-93,-22" name="to 教学秘书审批" to="教学秘书审批"/>  
  14.    </task>  
  15.    <task assignee="导员" g="240,299,92,52" name="导员审批">  
  16.       <transition g="-50,-22" name="to end1" to="end1"/>  
  17.    </task>  
  18.    <task assignee="教学秘书" g="414,306,92,52" name="教学秘书审批">  
  19.       <transition g="-50,-22" name="to end1" to="end1"/>  
  20.    </task>  
  21. </process>  


其二:对于流程管理中的数据维护

 

说明:对于工作流的流转过程中产生的数据,均由工作流自己维护的工作流库来管理

优点:所有的流转数据维护都由工作流自己维护,而且处理完的任务有相应的历史记录表,我们在查看时只需要跟jbpm封装的API打交道,而不需要管理相应的表,更加简化了我们的工作量



                       工作流技术JBPM开发入门_第2张图片


其三:业务与流程的解耦

 

说明:jbpm工作流流程独立,可以使用工具定义和建模,利于跟踪、监控、管理、调度、优化和重整,和业务操作松散耦合,日后需求变动但jbpm的封装代码几乎不用修改,很好的应对了变化。

对于一般流程的变化,我们要做的只是针对需要的流程,画出相应的工作流流程指派给相应的操作人员,然后部署到项目中,然后即可自动实现相应的流程管理

 

 

总结:

 

工作流是一项分离业务操作和系统流程的技术,也就是我们常常挂在嘴边的抽象,解耦。其实所有的高大上的技术,最基础的还是我们面向对象的一些思想!

以上只是简单介绍了JBPM给我们带来的一些操作上的便利,也只是一些最基础的认识,对于有异议的地方还望大家指出!JBPM的学习仍在继续!

理解误区:

 

一直以为工作流只管理流程对于真正的业务操作不需要处理,这样才可以实现流程的复用。

 

举例说明:

 

就拿修改学生课程信息来说:

 

学生提交课程修改课程信息(共用一个工作流页面,填写一下理由即可申请)--教学秘书登陆后可以查看自己待处理的任务,可以查看学生提交的理由即可,然后自己决定是同意还是不同意,便结束任务,整个流程也就结束了。

 

在这个过程中,工作流的作用只是实现了自动处理,记录处理流程的功能,而并没有真正的帮助业务来完成实际的操作,因为以上的这个流程并没有完成任何修改的工作,工作流的另一个价值仍没有体现出来。

 

那么工作流到底要做到什么程度呢?

 

业务操作也属于工作流的任务,一个工作流程就是完成一系列任务。

工作流能够帮我们做的事情:

1,实现流程的自动化。2,记录流程处理过程。3,完成一个系列的业务操作(完成一个流程的功能)

当然它带给我们的也就是简化业务处理操作以及流程灵活修改

 

 

下面来具体解释一下,它如何帮助我们完成跟业务相关的操作

 

一个流程完成一件事情

 

举例:对于修改学生课程信息来说:

  学生发现老师给授的课程信息不正确--提出申请修改(业务界面)--教学秘书查看申请的内容是否正确给予审批并修改(业务界面)--至此一个流程完成。

 

结果只有两种情况:学生的授课信息修改完成或学生的申请被拒绝

 

 

这时候的应用就要做到,表单和审批是结合在一起的,表单要绑定跟具体业务相关的页面,页面中的操作也就是具体的业务操作,审批来说主要任务就是要记录这个流程的流转过程。

 

对于工作流程的复用来说,针对不同业务共用一个流程的来说,只需要我们对于每个结点绑定不同的表单,来实现不同的业务操作。

这时候审批类来说就要记录处理过程中的流转及不同表单间的数据,对于业务流程按步骤操作来说只需要处理不同表单间的数据。

 

总结:

 

    在学习工作流的过程中我们对于工作流的理解也在不断深入,工作流到底带给了我们什么,为什么应用工作流我们的系统就可以变的灵活,工作流应该做到哪一步可以让我们既做到灵活又简化我们的业务操作,而且还能够复用等等这些。

    提出再多的疑问,都不如去动手实践来的实际,只有在做的过程中,才能真正的将遇到的问题提出来,然后再解决的过程中领会工作流的意义!


你可能感兴趣的:(工作流技术JBPM开发入门)