Descriptor在jbpm的IOC实现中扮演重要角色,它由相应的Binding类生成,并生成相应对象的职责,可谓职责重大。
Descriptor主要用于生成那些对象实例?
Descriptor主要负责生成流程引擎使用的一些实例,比如TaskService、
HistoryService、ISession等,可以毫不夸张的说,没有Descriptor,流程引擎将没有资源可用;对于jpdl对应的Binding生成的实例后续文章进行详解!
Descriptor的继承结构如何?
下面是FloatDescriptor的继承结构:
Descriptor的实例化过程?
一般情况下,我们在配置文件中定义我们需要生成Descriptor的标签(也就是Binding中的Tag字符串);WireParser既负责加载Binding的配置文件,也负责根据根据标签找到相应的Binding实例,并生成相应的descriptor;然后会将其添加到WireDefinition;
需要说明的是WireDefinition中有descriptorNames和descriptors,前者会以descriptor继承的所有的基类和接口(但是除去已经添加到其中)的类型为Key,这决定了我们最终获取我们需要的对象的方式;后者就是一个承载descriptor的普通的集合;
Descriptor的结构和作用?
一般的Descriptor主要由两个成员方法组成construct和initialize,前者一般生成相应的对象实例,后者主要初始化相应的字段等。
DefaultObservable的主要作用?
事件监听在面向对象开发中有广泛的应用!当我们需要在construct相应对象前或者后执行自己的一些业务逻辑,我们就可以实现自己的监听器,然后注册到事件源中,当事件发生时将会执行我们的业务逻辑。
通过Descriptor生成对象的全过程中涉及的主要对象?
EnvironmentImpl->WireContext->WireDefinition->相应Descriptor->生成相应对象