`
wgj830823
  • 浏览: 49641 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

osworkflow的代码结构

阅读更多
转载请说明出处。该文档的版权属于http://zstzah.blog.bokee.net
 
首先来看看它的包的静态结构,
在workflow包中我们发现了很多内容,光从名字上来看,就很一目了然。我将对最初常用的几个包进行阅读,后续在用到更多的功能时,补充该文档。该文档原始地址
最早主要会提到的是basic、config、loader这三个包中的部分类,这三个包对于osworkflow的初始化非常重要。其中也会提到spi中的几个类,对于持久化操作的封装将使用这个包内的东西。
1、 basic 这个包中有两个类,BasicWorkflow,BasicWorkflowContext。如下我们来看看这两个类的继承体系:下面首先是workflow控制流程对象的继承体系 
再来看看BasicWorkflowContext的继承体系:
 
 
 
 
这个包其实从名字上来看非常的明了,也就是我们从使用osworkflow的角度来看,一个流程实例的创建,我们可以使用的基本对象是BasicWorkflow,而我们同时也使用的BasicWorkflowContext这个对象来完成保存流程请求的用户的基本功能。
2、 config 这个包完成的工作就像他的名字一样,基本的两个配置类在这个包中:DefaultConfiguration、SpringConfiguration。我们来看看这个包的基本结构:
 
DefaultConfiguration这个类,完成了基本的配置文件的载入工作,包括osworkflow.xml(存放持久层配置以及流程工厂配置的文件)以及workflows.xml(存放流程模型资源的配置文件)的解析和映射。
我们来看看它的几个实例字段:
//流程工厂类,通常被配置到osworkflow.xml文件中,在初始化的时候会去寻找是不是配置了别的工厂,如果配置了,将替换这个工厂的引用
    private AbstractWorkflowFactory factory = new URLWorkflowFactory();
 
//持久化信息的map,从配置文件中读出来,存放到这个map中
    private Map persistenceArgs = new HashMap();
 
    //完成持久化信息的各种工作的类全路径
private String persistenceClass;
 
//这个引用本身是一个接口,它将在初始化发生的时候,赋予它的子类实现,这个接口在类中直接被实例化成WorkflowStore这接口的实现类。具体使用什么实现类将在配置文件中配置。
    private transient WorkflowStore store = null;
       //这个是配置是否完成的标志字段,这个字段在load方法完成的时候,被设置为true
    private boolean initialized;
 
SpringConfiguration这个类为和Spring的整合提供了支持,目前还没有对Spring整合进行分析,在这里暂时不进行分析,将在以后补充。
3、 loader 这个包,这个包中有大量的Descriptor,这些个描述符对象,记录了一个流程实例的步骤、动作、状态、名称等信息。由于这个类图过分庞大,因此不在这里出图例。这个类中也有一些关键的流程模型加载的工厂类,完成流程模型信息的初始化。我们在实际的应用中,只使用到了XMLWorkflowFactory,那么我们的流程配置文件自然也就使用了xml格式,在AbstractWorkflow中,大量的调用到了这个类的接口,来获取模型对象。这个类的详细分析,将放到以后的文档中。这里只要明白这个类是保存里流程模型对象的工厂,也就对模型进行一些操作,比如删除和保存一个流程模型。
4、 spi 这个包里面的东西也很多,主要我们会提到的是记录流程实例状态的对象、持久化真正实现的方式。先来看看实例状态对象的类图:
SimpleWorkflowEntry这个类,经常会用到,在流程启动和运行过程中,我们通常都使用这个类来标识流程实例的所对应的模型和实例状态。
5、还有就是真正操作持久类的对象Store
这里只把实际操作流程数据库的jdbc实现类图画出来。创建流程实例对象到数据库,操作流程实例相关的很多数据库数据。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics