osworkflow源码分析(一)
来源:互联网 发布:淘宝手机二维码链接 编辑:程序博客网 时间:2024/04/29 22:30
理解osworkflow.xml:
加载osworkflow.xml过程:
1)DefaultConfiguration中,在load方法中调用getInputStream()以获取系统的osworkflow.xml文件
在getInputStream方法中:
protected InputStream getInputStream(URL url) {
InputStream is = null;
if (url != null) {
try {
is = url.openStream();
} catch (Exception ex) {
}
}
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
if (is == null) {
try {
is = classLoader.getResourceAsStream("osworkflow.xml");
} catch (Exception e) {
}
}
if (is == null) {
try {
is = classLoader.getResourceAsStream("/osworkflow.xml");
} catch (Exception e) {
}
}
if (is == null) {
try {
is = classLoader.getResourceAsStream("META-INF/osworkflow.xml");
} catch (Exception e) {
}
}
if (is == null) {
try {
is = classLoader.getResourceAsStream("/META-INF/osworkflow.xml");
} catch (Exception e) {
}
}
return is;
}
在load方法中
Document doc = db.parse(is); //开始解析由上面方法传递回来的流
然后可以看到接下来通过xml中指定的工厂类进行init
由上面代码可以看的出defaultconfiguration是如何加载osworkflow.xml的。
load()方法解析文件,并load相应的工厂类.
workflowFactory:
在loader包下提供了多种多种格式的factory,如xmlworkflowfactory、JDBCworkflowfactory、URLworkflowfactory、springworkflowfactory(在实际中jar包中没找到,但是在javadoc中确实有)等等。
这几种工厂类都是在各自的getWorkflow方法体内调用loadWorkflow方法。
private void loadWorkflow(WorkflowConfig c) throws FactoryException {
try {
c.descriptor = WorkflowLoader.load(c.url);
} catch (Exception e) {
throw new FactoryException("Error in workflow descriptor: " + c.url, e);
}
}
而实际调用的则是workflowloader.load方法。可以进一步跟踪到workflowloader中,可以看到如何是将descriptor返回的。
com.opensymphony.workflow.spi spi指server provider identification
在spi包中可以看到各种存储的子包
里面具体代码还没细看,以后会慢慢完善!我想在load方法中将persistenceArgs参数返回会在上面这些包的类中进行处理……
未完待续~~
- osworkflow源码分析(一)
- OSWorkflow源码分析
- 3-OSWorkflow源码分析
- osworkflow 源码
- OSWorkFlow学习笔记(一)
- OSWorkFlow分析
- OSWorkFlow分析
- OSWorkFlow分析
- OSWorkFlow分析
- osworkflow api分析(版本2)
- 源码分析(一)
- osworkflow源码解读----前言
- osworkflow源码学习
- OSWorkflow表结构分析
- osworkflow分析(二)
- osworkflow主要方法分析
- OSWorkflow表结构分析
- osworkflow API 分析(转)
- 虚函数
- 哎
- Intel - 80386
- 一花一世界
- MP3的一些资料
- osworkflow源码分析(一)
- 职场生存--寓言四则启示(转载自www.infoxa.com)
- 怒我直言:Eclipse v3.1 并没有传说中的那么好
- 最熟悉的陌生人
- 如何显示一个字符的ascII码值?
- C#编码规范
- 正则表达式练习器
- Handle v3.1
- 汇编语言的基础知识标识符和表达式的继续