浅谈工作流

     最近由于项目的需要,涉及到了工作流方案筛选。之前的项目也碰到了工作流,但大多是客户指定了选用某一种工作流引擎,比如普元的EOS,还有一些开源的工作流。

     这次由于是在.Net平台上进行开发,所以可选择的开源的工作流比较少,于是就想到了在WWF(Windows Workflow Foundation)的基础上进行二次开发。客户对工作流实现的基本要求是:在项目上线以后,可以对工作流进行自定义,包括工作流的增加和修改等。

     二次开发的话,就要对工作流的基本定义进行一些梳理。这里不涉及工作流引擎、也不含工作流的设计,只是想描述一下工作流的作用。

 

一、理解工作流

 

    

                                         工作流程图

    1、工作流定义文件(节点)

     工作流管理系统经过对业务、公文流转过程的分析以及抽象,工作流管理系统围绕业务交互逻辑业务处理逻辑以及参与者三个问题进行 解决,业务交互逻辑对应的为业务的流转过程,在工作流管理系统中对应的提出了工作流引擎、工作流设计器、流程操作来解决业务交互逻辑的问题,业务处理逻辑 对应业务流转过程中的表单、文档等的处理,在工作流管理系统中对应的提出了表单设计器、与表单的集成来解决业务处理逻辑的问题,参与者对应到的为流转过程 中环节对应的人或程序,在工作流管理系统中通过与应用程序的集成来解决参与者的问题。

     如上所述,工作流的定义也就是围绕业务交互逻辑和参与者进行定义,控制业务的流转过程及参与者。业务处理逻辑可以放在应用系统中处理,当然也可以定义成工作流中的业务组件。

     工作流也就是业务流,基本上就是把各个独立的业务串起来。工作流的节点主要包括:开始、路由、业务节点、结束。开始节点和结束节点比较容易理解,开始表示启动一个工作流实例,结束表示一个工作流实例结束;路由节点就是表示一个分支判断(IF...ELSE...),根据条件的不同,决定下一个节点去哪里;业务节点都表示一个具体的业务,涉及的内容包括WWH(WHO、WHAT、HOW),具体来讲,就是谁来做,做什么,怎么做?谁可以是一个机构,一个角色,或者是个人,或者是几者之间的组合;做什么就是表示业务内容(比如填写报销申请单、审核等等);怎么做就是具体的业务逻辑了(通过、拒绝、打回等,通过怎么做,拒绝怎么做,打回怎么做就要涉及具体的业务逻辑了)。二次开发的重点在于业务节点,做什么和怎么做就是应用系统中要实现的功能,谁来做就是应用系统中可维护的机构、角色和人。所以后期对于业务节点来说,谁来做是可以由用户来维护的,新增或者修改都可以;但是做什么和怎么做(也就是功能)就必须要预先定义好了,比如表单、业务逻辑等等,就是系统中要有这些功能,业务流可以在已有的功能里面去组合,但是如果让用户新增一个功能好像不太现实,呵呵... ...当然,各种不同的功能可以抽象成各种业务组件、业务操作等,这就跟系统设计有关了。

   

       所以工作流引擎必须要实现以下几点:

        1)、这个节点是由谁来操作的?(这个可由用户自定义,上线之后可以可由用户新增、修改或配置)

        2)、这个节点是做什么的?(关于这个可以有多种理解:节点本身包含了业务逻辑,或者说节点就是业务逻辑的扩展;另一个就是说这个节点只记录操作表单的路径(可以是一个业务功能处理的入口,比如表单页面),通过路径指引用户到指定的表单处理相应的业务逻辑)。

        3)、这个节点有哪些业务操作(提交、通过、拒绝、打回等等),每一个操作对应的下一个分支节点是什么?

      以上几点都是需要工作流数据库来保存的,这个数据库可以是关系数据库,也可以是文件(xml等等)。

     

    2、工作流引擎

        工作流机或工作流引擎,主要功能是读取工作流定义、根据工作流定义驱动工作流的流转。

        工作流引擎作为工作流管理系统的核心部分,主要提供了对于工作流定义的解析以及流程流转的支持。工作流定义文件描述了业务的交互逻辑,工作流引擎 通过解析此工作流定义文件按照业务的交互逻辑进行业务的流转,工作流引擎通常通过参考某种模型来进行设计,通过调度算法来进行流程的流转(流程的启动、终 止、挂起、恢复等),通过各种环节调度算法(SPLIT、AND、OR等)来实现对于环节的流转(环节的合并、分叉、选择、条件性的选择等)。      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值