你明白工作流是什么、怎么用了吗?

·概念

  今天小编将和大家分享一个新的知识点——工作流。我们可以将工作流理解为工作流程,它在IT领域不算是“新人”了,工作流思想在上世纪60年代就有人提出过;70年代就有人开始尝试,但是由于当时许多的限制,工作流一直没有成功的被实现;80年代才出现第一批成功的工作流系统;90年代工作流技术走向了第一个发展高峰期;90年代后至今工作流出现了很多版本,但是主旨还是不变的,为了使我们的工作变得更加高效。

WfMC(Workflow Management Coalition)工作流管理联盟对工作流的定义是这样的:工作流是指一类能够完全自动执行的经营过程,根据一系列过程规则,将文档、信息或任务在不同的执行者之间进行传递与执行。说的直白一点工作流就是封装好的一种框架,我们利用这种框架来解决需要多个人或者多个部门协同完成的某项工作。工作流框架有许多都是开源的,我们可以尽情的拿来学习、研究最终运用到我们的系统中。

·分类

  正如我们有许多程序设计语言一样,工作流也分为几类,下面就让我们来认识几种比较常见的工作流:
第一个我们要介绍微软的一款工作流软件——WWF(Microsoft Windows Workflow Foundation),这是微软出的一款框架,这款框架是和微软的VS兼容的,而且它是一款可扩展的框架。在VS中我们可以创建一个工作流项目,小编下午实验了一个小时没有实现,但是后面会进行再次尝试的。
以下内容为小编从网上找到的一些资源,供大家参考: . Net 三款工作流引擎比较:WWF、netBPM 和 ccflow

公司有两级领导,一级为主管Chief,一级为老板Boss
场景描述:

  在某公司中,部门员工休假需要主管Chief的批准。 
  如果休假天数大于10天,则 在部门主管同意后,还必须老板Boss批准。 
  如果是部门主管请假则直接提交老板批准。 
  在休假被批准之前,申请人可以撤销休假申请。 
  申请批准后,对休假天数进行修改(也可以是其他业务数据处理)。 每次休假申请结束之 后,不管通过未通过或是否取消,都必须记录下来。 
  流程结束时,系统要把请假的结果信息Email给申请人。

  对于大于10天的申请,如果部门主管已批准同意而上级主管还未批准,这时申请人撤销申请后,系统应发Email通知部门主管申请已撤销。

使用WWF创建流程:
1. 启动VS2010,创建一个顺序工作流控制台的程序。
2. 输入项目名称,点击确定,将自动进入流程设计界面。
3. 自动生成的Workflow1.cs是一个工作流组件。
4. 工具箱中拖放一个IfElse活动组件到设计界面上。
5. 此时就需要较多的编码工作和表单界面设计工作,如在idelseBranchActivitiy1左侧分支,用以判断请假人是否新申请请假还是取消请假,激活Conditiong属性,并且添加内部事件EvaluateQingJiaNoValidCode,并激活,在内部输入逻辑代码根据数据库记录判断请假是否通过,未通过则取消请假。也可以走另一分支EvaluateQingJiaCode继续申请新的请假;
6. 拖放parallelActivity1组件在IfElse节点后,用以判断请假人是否为Chief,设置sequenceActivity1中的codeActivity3属性的ExecuteCode处理程序为EvaluateChiefNoValidCode,并激活,内部代码用以判断不是Chief的情况,另一分支sequenceActivity1中则判断是Chief的情况;
7.如果不是Chief请假,则需要在EvaluateChiefNoValidCode中进行逻辑判断和表单的设计,填写请假申请单, 并拖放IfElse组件,实现其中的codeActivity6代码用以判断大于10天的情况。
8.F5即可运行控制台程序,其中的通过未通过或是否取消的数据需要记录,需要通过代码和设计数据库来实现,发送Email也需要代码实现,WWF没有提供该功能。

                                                                      你明白工作流是什么、怎么用了吗?_第1张图片


第二个我们介绍一下BMP,这个工作流全称是Business Process Management(业务流程管理)。它分为两款java版(JBPM)和.net版(NETBPM),它是开源的框架我们同样可以在网络上学习。在百科中有人阐述到JBPM是西方思想的结晶,跟中国理解的业务存在一定的差距。
JBPM的另一个特色是它使用Hibernate来管理它的数据库。Hibernate是目前Java领域非常流行的一种数据存储层解决方案,只要是 Hibernate 支持的数据库, JBPM 也就支持。通过Hibernate,JBPM将数据的管理职能分离出去,自己专注于业务逻辑的处理。
因为对hibernate不太理解,所以重要的理解工作还是留到后面有机会的情况下继续学习,推荐一篇看到的博客:工作流技术jbpm学习总结
BPM工作流的工作原理用图来表示的话如下所示:(场景类似上一个例子)
                                                                                                         你明白工作流是什么、怎么用了吗?_第2张图片
第三个工作流小编和大家说说Activiti工作流,这个工作流是从JBPM中发展而来的,老师上课的时候说过一句学校用的也是这个工作流,但是上网搜了一些资料,发现自己还是不太懂,只是能够理解它的意思。
小编就向大家推荐两篇文章吧: 三分钟了解Activity工作流、Activiti - 新一代的开源 BPM 引擎


这次就先跟大家聊到这里,等下次我们深入了解一下工作流。

PS:给大家推荐一篇师哥写的文章: 从程序员的角度来看为什么我们需要工作流

你可能感兴趣的:(你明白工作流是什么、怎么用了吗?)