shark工作流源代码学习(一)
来源:互联网 发布:现任明教教主 python 编辑:程序博客网 时间:2024/06/10 00:41
org.enhydra.shark.SharkEngineManager
SharkEngineManager是shark引擎的控制室,它在shark引擎内部使用,shark引擎的所有管理器都是由它产生的。
SharkEngineManager使用了singleton模式,保证整个系统只有一个它的instance
// the one and only instance of this class
private static SharkEngineManager engineManager;
static SharkEngineManager getInstance () {
if (engineManager==null) {
engineManager=new SharkEngineManager();
}
return engineManager;
}
SharkEngineManager的所有get()方法的作用都是返回初始化时实例化的管理器,这些管理器也是singleton的,这样通过一个类,实现了无限个类的singleton模式,这在我们平常的系统中可以借鉴。
当系统启动时,将调用Shark.conf()进行系统的配置,配置时将调用SharkEngineManager的init (Properties properties)方法,该方法示例如下:
void init (Properties properties) {
String objectFactoryClassName=properties.getProperty
("ObjectFactoryClassName",
"org.enhydra.shark.SharkObjectFactory");
String amClassName =properties.getProperty
("AssignmentManagerClassName");
…………
}
如上所示,首先从properties中读ObjectFactoryClassName,如果有,则使用配置文件中的;如果没有,则用org.enhydra.shark.SharkObjectFactory。AssignmentManagerClassName也是从配置文件中读的。
Init()的下一步是用读到的配置或用缺省的配置将各管理器实例化,在后面运行时直接取用,如下:
try {
callbackUtilities=(CallbackUtil)cl.loadClass(cbuClassName).newInstance();
callbackUtilities.setProperties(properties);
objectFactory =(SharkObjectFactory)cl.loadClass(objectFactoryClassName).newInstance();
toolAgentManager = (ToolAgentManager) cl.loadClass(tamClassName).newInstance();
xmlInterface=new XMLInterfaceForJDK13();
} catch (Throwable ex) {
throw new Error("Problems instantiating core managers");
}
当然了,这里返回的都是接口,所以,我们可以方便的扩展它,只要写自己的类继承这些接口,然后在配置文件中进行配置,就可以不动它的代码而达到扩展的目的。
hongbo781202,又名HongSoft,职业程序员,研究领域:1)基于工作流的BPM系统研究2)基于JAVA的信息安全
技术.http://blog.csdn.net/hongbo781202/
hongbosoftware@163.com
- shark工作流源代码学习(一)
- shark工作流源代码学习(一)
- shark工作流源代码学习(一)
- shark工作流源代码学习(一)
- shark工作流学习(一)
- shark工作流学习(一)
- shark工作流学习(一)
- shark工作流源代码学习(二)
- shark工作流源代码学习(三)
- shark工作流源代码学习(四)
- shark工作流源代码学习(四)
- shark工作流源代码学习(三)
- shark工作流源代码学习(二)
- shark工作流源代码学习(二)
- shark工作流源代码学习(四)
- shark工作流源代码学习(三)
- shark工作流源代码学习(二)
- shark工作流源代码学习(二)
- shark工作流源代码学习(二)
- shark工作流学习(二)
- 1. 从MYSQL 网站下载5.0
- shark工作流学习(三)
- shark工作流学习(一)
- shark工作流源代码学习(一)
- 如何在php设置支持大文件上传
- 学习java i/o库要掌握的三个关键知识点
- Adapter模式在J2SE事件处理中的应用
- 用 Mylar 进行以任务为中心的编程-第2 部分
- BouncyCastle JCE实践(一)
- IP 和 localhost
- 一些Flex开源项目的整理
- csdn博客速度如何