博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Fire Workflow 源码分析——(基本组成)(5)

Posted on 2009-11-11 14:48  Leshem  阅读(1923)  评论(3编辑  收藏  举报

     最近一大堆乱七八糟的事情,今天把 org.fireflow.model.io这个包给介绍完,那么Fire Workflow的Model项目算是完成了。

    

主要分两大块:序列化和解析。

FPDLNames这个类定义了FPDL的元素和规范。包括命名空间里面的基本元素,本类决定流程文件的格式和规范,由于元素太多,这里不一一展示了。FPDL基本是对XPDL的扩展,详细内容可以参见http://www.fireflow.org/viewthread.php?tid=68&extra=page%3D1

 

 

IFPDLSerializer: FPDL序列化器。将WorkflowProcess对象序列化到一个输出流。

 

Dom4JFPDLSerializer 实现IFPDLSerializer接口。Dom4J实现。

 

DEFAULT_XPDL_VERSIONDEFAULT_VENDOR分别表示默认版本和提供者,目前发现没有什么用……

对于实现的Serializer(),源代码如下:

 

Code 

 

workflowProcessToXMLString():将流程文件输出到一个String

其他的Write方法都是在XMLWriter()中使用的,分别处理FPDL流程文件中的不同元素。

 

JAXP_FPDL_Serializer 实现IFPDLSerializer接口。用JAXP实现,功能和前者完全一致。

 

IFPDLParser: FPDL解析器,将一个xml格式的fpdl流程定义文件解析成WorkflowProcess对象。

 

Dom4JFPDLParser 实现IFPDLParser接口,用Dom4J实现。

 

parse()的代码如下:

Code

  JAXP_FPDL_Parser 实现IFPDLParser接口,用JAXP实现。不详述。

 

DateUtilities关于识别各种日期格式的类。

 

dateUtilities:这里用了单件模式,调用getInstance()来获得对象实例。

formats:存储各种日期格式,格式有:

      "yyyy-MM-dd'T'HH:mm:ss'Z'"

    "yyyy-MM-dd'T'HH:mm:ssZ"

    "yyyy-MM-dd'T'HH:mm:ssz"

// XPDL examples format

   "MM/dd/yyyy HH:mm:ss a"

    // alternative formats

"yyyy-MM-dd HH:mm:ss"

构造函数DateUtilities()调用了resetFormats()来重置formats

parse()方法将字符串转化为日期格式。

MySigleton4DocumentFactory 是对org.dom4j.util.SingletonStrategy接口的简单实现,返回一个DocumentFactory,配合单件用的。

 

FPDLSerializerException 继承了Exception类,四个重载的构造函数调用的都是父类的方法。

 

FPDLParserExceptionFPDLSerializerException

 

Util4Serializer 为序列化流程提供基本的元素操作。用Dom4J实现。

 

Util4JAXPSerializer Util4Serializer,用JAXP实现。

 

Util4Parser 为流程文件的解析提供基本的元素操作,用Dom4J实现。

 

Util4JAXPParser Util4Parser,用JAXP实现。

 

 

下次开始讲Fire Workflow的另一个项目文件FireflowEngine。