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

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

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

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

 

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

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

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

Dom4JFPDLSerializer 实现IFPDLSerializer接口。Dom4J实现。

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

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

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

 

 

 

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

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

 

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

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

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

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

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

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

parse()的代码如下:

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

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

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

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

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,配合单件用的。

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

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

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

FPDLParserExceptionFPDLSerializerException

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

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

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

Util4JAXPSerializer Util4Serializer,用JAXP实现。

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

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

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

Util4JAXPParser Util4Parser,用JAXP实现。

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

 

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

 

 

 

 

相关文章: