osworkflow源码解读----第一章osworkflow项目组织结构

来源:互联网 发布:淘宝店铺推广广告词 编辑:程序博客网 时间:2024/06/06 01:45

要读源码咱们得先从获取源码开始,了解项目的目录结构。从osworkflow官网http://www.opensymphony.com/osworkflow/ 最近的版本是2.8.0,日期为2006-08-06.

请点”full”下载包括源码的压缩包。解压到本地内容如下:

       DocsAPI文档、一些功能点的使用帮助文档

       Libosworkflow各功能用到的第三方jar

       Src:这里存放着源码,是我们将重点研究的地方

       Build.properties:项目描述

       Build.xmlant配制

       designer.jar:流程定义编辑工具,可以通过jar命令运行,注意需要第三方包

       osworkflow-2.8.0.jar:组件运行包

       osworkflow-2.8.0-example.warosworkflow案例web发布包

       目录清晰、简单很有条理性。其实绝大部分开源项目的目录结构都一目了然。这是项目有效管理的基础。接下来介简SRC目录的内容:

      

       Designer:工作流流程定义编辑器源码

       Etc:第三方组件的配制文件及脚本

       Javaosworkflow引擎工作的核心源码,是我们接下来研究的重点

       Test:单元、功能测试源码

       Webapp:使用osworkflow的小案例是osworkflow-2.8.0-example.war的源文件

       到这里项目目录结构就简单的介绍完了。我有一个习惯,在看具体的源码前先去了解项目组组结构与包的结构,对项目大体上有一个了解。然后再去看自已感兴趣,或急于了解的源代码。一样、咱们来看下osworkflow引擎工作的核心包的结构,也就是java目录里源码包的结构。这里建议把源码导入到IDE中,利用IDE的功能学习源码会便利很多。Osworkflow核心包的介绍网上别的兄弟已有供献。这里我重复下:

    com.opensymphony.workflow  对工作流进行管理的入口。这个包负责与使用者的大部分交互,它定义了最常用的接口、类和异常。其中与用户使用密切相关的接口:WorkflowWorkflowContextValidatorRegisterFunctionProviderCondition

com.opensymphony.workflow.config 加载配置,创建WorkflowFactory

com.opensymphony.workflow.loader 工作流定义的管理WorkflowDescriptor的创建

com.opensymphony.workflow.query  这个包定义OSWorkflow的查询描述,但并不执行查询操作。真正的查询操作实际是由WorkflowStore对查询描述进行转换,完成实际的查询操作

com.opensymphony.workflow.spi 对工作流状态的管理。这个包是比较底层的包,从名字spi可以推断出来。它定义了工作流的状态和状态持久化接口,以及一些基本实现。负责状态的接口是:Step,用来记录每个Step的状态;WorkflowEntry,用来记录Workflow实例的运行状态。Step的状态记录了流程实例的业务状态,即当前的实例处于整个业务流程的位置;而WorkflowEntry ,则仅仅是从流程实例控制的角度来看,记录了实例的运行状态。即是运行或挂起等,不具备业务含义。WorkflowStore是状态的持久化接口,负责状态(包括StepWorkflowEntry)的持久化。

com.opensymphony.workflow.timer:工作流调度

com.opensymphony.workflow.utilosworkflow需要的工具类,里面还有几个按第三方组件分的工具包。看包名就知是对什么功能的支持。

       com.opensymphony.workflow.AbstractWorkflowosworkflow向外的face是一个非常重要的插像类,通过实现它可以满足各种方式对流程引擎的调用。Osworkflow核心代码中也提供了几种方式的实现它们分别放在:

    com.opensymphony.workflow.basicAbstractWorkflow的基本实现

    com.opensymphony.workflow.ejbAbstractWorkflowEJB方式实现

com.opensymphony.workflow.ofbizAbstractWorkflow使用ofbiz的实现

com.opensymphony.workflow.soapAbstractWorkflowSOAP交互方式实现

好了!osworkflow核心代码中的包已介绍完了。对osworkflow应有了一个大概的了解了吧。这才刚开始。