在jBPM(十三): 从ObjectFactory到ObjectInfo
的分析中, 我们看到ObjectInfo是jBPM解析配置文件过程中一个很核心的概念, 本篇和接下来的几篇中,我们将重点来看这个重要概念及它在设计模式方面带来的启发.
本篇中集中看ObjectInfo(实现类)的创建. 不过,作为过渡,还是很有必要先看下ObjectInfo的家谱.
ObjectInfo是一个接口,它本身继承自Serializable. 它的实现类及实现类的嫡系如下图所示:
对这个图,这里我们稍微多说两句,就当是作为铺垫照应随后要介绍的jBPM配置文件.
我们看到,具体子类有JbpmContextInfo,StringInfo, ListInfo, MapInfo...
JbpmContext类在前面已有所接触,它是我们调用jBPM API时很重要的一个概念,这里我们只表明下,它是继承自Object类的,
另外几个XXXInfo类的主体(如StringInfo类的主体是String),我们都很熟悉,也是最为常用的类,
当然它们也都继承自Object类.
说JbpmContext和String等都继承自Object类是废话,Java中的类没有一个不是继承自Object类,不过,我这里拙嘴笨舌地绕一
圈就是想说: 实现类里从内容和名字上都体现了ObjectInfo这个概念表达的主旨.
我们再回过头来看ObjectInfo接口定义的方法: hasName, getName,isSingleton,createObject.
无疑最后的createObject方法是最为重要的一个, 看名字"create Object",
这是不是对应着ObjectFactory中定义的createObject(String name)方法呢? 答案是肯定的,
随着梳理的进展,这个答案会越来越清晰地呈现在我们面前. 说到这里,相信大家也多多少少觉察出这里边体现出的设计模式,对,工厂模式,
应该说这个工厂模式是我见过的最为标准的一个,也堪称教科书般的示例.
上面对ObjectInfo的家谱做了一个简短的介绍,接下来我们来看一个ObjectInfo是怎么创建出来的. 由于ObjectInfo有很多子类, 这里只看一个,JbpmContextInfo类. 看下图:
结合jBPM的源码,我们可以看出, 在new一个JbpmConfiguration实例时,
先在new出一个ObjectFactory实例来, 而在生成一个ObjectFactory实例时,又有多个ObjectInfo生成,
这里ObjectInfo产生的大背景.
接下来,我们再从微观层面上来看ObjectInfo产生的瞬间.
依据左图的方法调用栈,我们看ObjectFactoryParser类中parseElements方法. 结合大背景及这个方法中用到的API,
我们不难看出,
这个方法把jBPM配置文件中的每一个Element(也就配置文件中每一个标签)通过parse方法转化为一个ObjectInfo实例,进而再把每一
个新生成的ObjectInfo实例放到objectFactory中. 这样ObjectInfo实例的产生就只能到parse方法里才能看到了.
在parse方法中,
先得到elementTagName(以element.getTagName()方式),再据此elementTagName到mappings中取出
对应类的Constructor实例. 以现在所说的JbpmContextInfo类为例,
elementTagName是"jbpm-context",
对应的Constructor实例是org.jbpm.configuration.JbpmContextInfo声明的满足某些特性的构造方法.
再接下来就是见证神奇的时刻, 也是我们要看的结果: constructor.newInstance生成了一个ObjectInfo实例!
这篇写完了, 再加过头来总结下吧: ObjectInfo家谱, ObjectInfo实现子类及与ObjectFactory相应方法的暗合, 工厂模式, 宏观微观来看一个ObjectInfo(以JbpmContextInfo为例)的诞生.
现在可以更有信心地说: 下一篇更加精彩, 敬请关注.
分享到:
相关推荐
1.6 JBPM_DELEGATION:流程代理类表(用于实例化jbpm中的action类) 6 1.7 JBPM_TASK:流程任务表 6 1.8 JBPM_TASKCONTROLLER:流程任务控制器 7 1.9 JBPM_VARIABLEACCESS:流程变量表 7 1.10 JBPM_MODULE...
jbpm jbpm4.3.jar DDDDDDDD
JBPM(Java Business Process Management)是一个开源的工作流和业务流程管理系统,它允许开发者设计、执行、管理和监控业务流程。在JBPM中,处理并发子流程是实现复杂业务逻辑的重要一环。本文将深入探讨如何使用...
JBPM是一个扩展性很强的工作流系统,百分百用JAVA语言开发,持久层采用Hibernate实现,理论上说,只要Hibernate支持的数据库JBPM都支持。同时它还能被部署在任何一款JAVA应用服务器上 JBPM的工程文件,大家可以到...
【jbpm中文文档和一个请假实例】 jbpm(Java Business Process Management)是一个开源的工作流管理系统,主要用于业务流程的建模、执行和管理。它提供了一种灵活的方式来定义和执行复杂的业务流程,支持工作流和...
**Jbpm实例代码详解** Jbpm,全称Java Business Process Management,是一个开源的工作流管理系统,用于设计、执行和管理业务流程。它提供了一套完整的工具集,包括流程建模、部署、执行、监控和优化,使得企业可以...
jbpm,全称为Java Business Process Management,是一款开源的工作流管理系统,专为业务流程自动化和管理设计。本资源“jbpm深入浅出第7章实例代码”聚焦于通过jbpm实现工作流的实战演练,旨在帮助读者更深入地理解...
**jBPM 4视频教程03:管理流程实例** jBPM 4是一个开源的工作流管理系统,它为业务流程的建模、部署、执行和监控提供了全面的解决方案。本视频教程03专注于如何通过jBPM 4来管理实际的业务流程实例,帮助初学者快速...
标题中的"JBPM4.4所需要的包.rar"表明这是一个与JBPM 4.4版本相关的压缩文件,包含了一些必要的库和组件。JBPM(Java Business Process Management)是一个开源的工作流和业务流程管理系统,用于设计、执行和管理...
【jbpm4.4 工程项目实例】是一个基于jbpm工作流引擎的Web应用程序,旨在提供一个实际操作的示例,帮助开发者了解如何在实际项目中应用jbpm。jbpm是一个开源的工作流管理系统,它支持业务流程建模、部署、执行以及...
jBPM4.4是该框架的一个版本,它提供了强大的工作流服务,包括流程定义、流程实例管理、任务处理、事件处理以及规则集成等。在这个入门开发实例中,我们将探讨如何利用jBPM4.4进行业务流程的建模、部署和执行。 **一...
这个经典的jbpm实例提供了一个已经配置好的环境,可以直接在Tomcat应用服务器上部署,并能在MyEclipse集成开发环境中导入使用,极大地简化了开发者的学习和开发流程。 一、jbpm简介 jbpm是一个基于Java的流程引擎,...
JBPM(Java Business Process Management)是一个开源的工作流管理系统,它用于设计、执行和管理业务流程。在JBPM中,数据库扮演着至关重要的角色,存储了流程定义、执行实例、任务信息等多种数据。了解JBPM数据库表...
【jbpm4请假实例代码】是一个基于jbpm4工作流引擎的示例应用,它用于演示如何在实际项目中实现员工请假流程的自动化管理。jbpm4是一个开源的工作流管理系统,它提供了强大的业务流程建模、执行和管理功能,使得...
在这个"我写的一个jbpm实例"中,我们将深入探讨jbpm的核心概念和实现步骤。 1. **jbpm简介** jbpm是基于Java的BPM(Business Process Management)解决方案,支持BPMN 2.0标准,使得流程模型更加直观易懂。jbpm...
本实例将带你初探jbpm的世界,通过一个简单的实例来理解其基本概念和用法。 1. **jbpm简介** jbpm是一个基于Java的BPMN2标准实现,能够帮助开发者构建可伸缩、灵活的业务流程。它支持工作流定义、任务分配、事件...
JBPM用户指南中文版结合实例,为学习者提供了一条深入理解JBPM的路径。通过学习,你可以掌握如何使用JBPM设计和管理业务流程,提升企业的运营效率和灵活性。同时,了解如何利用其丰富的功能,如规则引擎、事件处理等...
SSH分别代表Spring(Spring框架)、Struts(MVC框架)和Hibernate(持久层框架),而jbpm4则是一个流程管理工具,用于处理业务流程的定义和执行。ExtJs是一个JavaScript库,用于创建富客户端的用户界面。这个压缩包...
**JBPM4 实例详解** JBPM4 是一个开源的工作流管理系统,用于处理业务流程自动化。它是Java平台上的一个轻量级、灵活的业务流程管理(BPM)框架,为组织提供了一种有效管理和控制业务流程的方法。对于初学者而言,...
jBPM4工作流应用指南和实例(含全jar包)包太大,分卷了,下载的时候注意是四个分卷包。 注意:只收一卷的金币。其他都免费