`

jBPM(十一): 从JbpmContextFilter说起

阅读更多

 

    在jBPM(十):webSale的"页面流"介绍 中,我们对webSale做了个简要的介绍,其中并没有涉及到jBPM深层次的代码调用,从这篇开始,我将试着梳理总结研究jBPM的心得.每一 人请求都是先要通过filter的, 这里从webSale要通过的JbpmContextFilter说起.

    原来是误解
        在jBPM(十):webSale的"页面流"介绍 的讨论中,觉得发现了JbpmThreadsServlet的妙用, 现在回过头来再看发现原来是一个误会. 那误解是什么? 为什么会有误解呢? 这两个问题可以从我们熟悉的Spring里ContextLoaderListener说起.   
        我们知道ContextLoaderListener通过其属性contextLoader新建了一个WebApplicationContext, 这样我们就可以通过IoC的方式来get/set那些依赖类了.
        有了上面spring中的认识, 这里看到JbpmThreadsServlet里的JbpmContext jbpmContext = getJbpmConfiguration().createJbpmContext(jbpmContextName)代码,就很"自然"认为 jbpmContext像是Spring的ApplicationContext那样是整个系统的container,而这样 JbpmThreadsServlet虽是一个servlet但它却起了类似于ContextLoaderListener一个listener的作用.

        那破除这个误解的关键点又在什么地方?  就是渐渐发现原来那个JbpmContext是每一次请求(经过JbpmThreadsServlet的请求)都会new一个出来的.  这是怎么发现的? 其中又涉及到哪些奥妙呢?

        所有一切都得从JbpmConfiguration类及其对象的创建说起(因jbpmContext 是由JbpmConfiguration的方法createJbpmContext生成的). 也就是JbpmThreadsServlet类中的getJbpmConfiguration方法.

    JbpmConfiguration类及其对象的创建
        我们先看这个类的实例是怎么创建的. getInstance方法, 我们所熟悉的单例模式. 这里只不过是通过一个Map属性来存储所有可能创建出的实例, 比较说这个方法比传统的单例模式要先进些,也借用前些在看一个看似矛盾的说法: 多单例模式. 
        不管是否用单例模式(或多单例模式),类的构造方法总是要调用的吧. 其实严格来说并不叫单例模式, 只是长的像些, 不过通过getInstance的方式,  JbpmConfiguration自身充当了其自身实例管理的功能.  我们再看这个类的构造方法及其调用.
       代码是这样的:
            ObjectFactory objectFactory = parseObjectFactory(jbpmCfgXmlStream);
            instance = new JbpmConfiguration(objectFactory);
        这样JbpmConfiguration就创建出一个实例来. 注意这里的ObjectFactory接口, 在JbpmContext创建时会重点用到它,这段时间的介绍也基本上是围绕它展开的.

-------------------
    至此, 我们看到了JbpmConfiguration实例的创建, 而JbpmConfiguration是jBPM的起点,属于外围. 在这里, 我想总结下为什么在花专门的时间来研究下jBPM的外围代码. 大致在如下几个理由:

  1. 好奇心驱使. 应该说,我是那种看到优秀代码就好奇的人, 只要条件允许总是想看看高手是怎么来设计/实现的. 根据以往的经验来看, 这个好奇心给自己的设计/编码有了不小的提高.
  2. 想分清jBPM的外围与内核代码, 以便以后研究核心代码时不再受那些外围代码的迷惑. 现在这样先从外围代码起步,就可以划整为零地各个击破.

 

5
0
分享到:
评论
1 楼 Storm1988 2009-04-28  
总结来讲就是说,JbpmConfiguration是用来管理整个工作流引擎的,与工作流引擎里面具体流程关系不大。

同时JbpmConfiguration提供了类似单例模式的方式以获取实例。

不知道总结的对吗??

相关推荐

    jbpm jbpm4.3.jar

    jbpm jbpm4.3.jar DDDDDDDD

    JBPM数据库表说明 jbpm 工作流 详细到每一个字段,不要下载分

    JBPM数据库表说明 2 1 流程配置类数据库表: 2 1.1 JBPM_PROCESSDEFINITION:流程模版表 2 1.2 JBPM_NODE:流程节点表 2 1.3 JBPM_TRANSITION:流程迁移表 3 1.4 JBPM_ACTION:流程动作表 4 1.5 JBPM_EVENT:...

    jBPM开发:配置EclipseIDE开发环境参考.pdf

    ### jBPM开发:配置EclipseIDE开发环境详解 #### 一、配置开发工具 **1. 安装 Eclipse Designer到 Myeclipse6** - **步骤**: - 将`jbpm-jpdl-suite-3.2.3/designer/eclipse/plugins`目录下的所有文件及文件夹...

    【转载 见附件】纵观jBPM:从jBPM3到jBPM5以及Activiti5

    "【转载 见附件】纵观jBPM:从jBPM3到jBPM5以及Activiti5" 这个标题表明这是一个关于jBPM发展历程的综合分析,涵盖了从jBPM3到jBPM5的变迁,并且提到了Activiti5,这是一款与jBPM相关的流程管理框架。标题暗示了文章...

    jBPM开发:配置EclipseIDE开发环境.pdf

    从给定的文件信息中可以提取到一系列与配置Eclipse集成开发环境(IDE)以进行jBPM开发有关的知识点。jBPM是一个开源的业务流程管理套件(Business Process Management Suite, BPM Suite),它可以帮助开发者实现业务...

    JBPM4.4所需要的包.rar

    标题中的"JBPM4.4所需要的包.rar"表明这是一个与JBPM 4.4...总的来说,这个"JBPM4.4所需要的包.rar"是一个基础的JBPM运行环境,涵盖了从表达式语言解析到邮件通知的关键组件,为搭建和运行JBPM 4.4流程提供了必要支持。

    纵观jBPM:从jBPM3到jBPM5以及Activiti5.doc

    【jBPM与Activiti的发展历程】 jBPM是一个开源的业务流程管理(Business Process Management,简称BPM)框架,自jBPM3以来经历了显著的变革。jBPM3是一个早期版本,提供了基于Eclipse的流程设计器和用于监控流程...

    JBPM5+Spring+Hibernate+MySQL 请假例子

    【JBPM5】 JBPM5是Business Process Management(业务流程管理)的开源框架,它提供了对企业级工作流和业务流程的全面支持。JBPM5允许开发者定义、执行和监控复杂的业务流程,通过图形化的流程设计工具,可以方便地...

    jbpm6:将 jBPM 6 嵌入到 Java EE 应用程序中

    将 jBPM 6 嵌入到 Java EE 应用程序中 官方文档: : 使用来做这个... 在 JBoss AS 中声明数据源:从 jbpm6/container/standalone.xml(或使用默认的 java:jboss/datasources/ExampleDS)在 $JBOSS_HOME/standalone/con

    jBPM3:从https分叉

    jBPM 3不再在社区中积极开发,这就是冻结公共SVN源位置的原因。 维持工作仅在内部进行。 该存储库基于作为JBoss Enterprise SOA-P 5.3.1源代码提供的3.2.14版本的源代码。

    jbpm4jbpm5

    开发者可以从中学到如何在实际项目中有效地运用jbpm,以及如何解决开发过程中遇到的问题。 总的来说,这个主题资料包提供了jbpm4和jbpm5的基础知识、实战经验和用户操作指导,对于想要学习或深化jbpm流程管理框架...

    纵观jBPM:从jBPM3到jBPM5以及Activiti5

    对jBPM来说,今年最大的事件莫过于jBPM的创建者Tom Baeyens离开JBoss了。TomBaeyens离开的具体原因尚不清楚,但他的离开产生了两个结果:一是jBPM的下一个版本jBPM5完全放弃了jBPM4的基础代码,基于Drools Flow重头...

    jBPM(八): 也说jBPM + Tomcat + MySQL

    本文主要探讨的是如何将jBPM(一个开源的工作流管理系统)集成到Tomcat应用服务器,并连接MySQL数据库进行数据存储。jBPM是一个强大的业务流程管理(BPM)和工作流系统,它提供了完整的工具集来设计、部署和执行业务...

    Myeclipse优化JBPM4.0配置.docx

    Myeclipse优化JBPM4.0配置 MyEclipse是一个流行的集成开发环境(IDE),它可以与JBPM4.0集成,以实现业务流程管理。JBPM4.0是一个基于Java的开源工作流引擎,它提供了强大的业务流程管理功能。本文将介绍如何在...

    jbpm简介\jbpm简介

    ### jBPM简介与关键技术知识点 #### 一、jBPM概述 jBPM是一个开源的、纯Java的、轻量级的商业流程管理(Business Process Management, BPM)工作流引擎。它支持多种可执行流程语言,并且可以在任何JavaEE应用...

    jBPM3.2.rar_JBPM3.2_jbpm_jbpm 3.2_jbpm3_jbpm3.2教程

    "jbpm工作流开发指南"这个文档应该是关于jbPM 3.2的详细教程,涵盖了从环境配置到实际开发的全过程。你可以通过阅读这个文档,深入了解jbPM 3.2的使用方法,解决在实际项目中遇到的问题。 总的来说,jbPM 3.2是一个...

    JBPM修改数据库教程以及实例

    本教程将指导您如何将JBPM的默认数据库从H2切换到MySQL或PostgreSQL,并提供实践案例。 首先,我们需要了解为什么要更换数据库。H2虽然轻量级且易于开发,但在高并发、大数据量和多用户环境下,其性能可能无法满足...

    jbpm白皮书 介绍jbpm 入门

    ### jBPM 白皮书:介绍 jBPM 入门 #### 一、引言与背景 在当今数字化转型的时代背景下,业务流程管理(Business Process Management,简称 BPM)成为了企业提升效率、优化流程的关键技术之一。BPM 提供了一种程序...

    jbpm数据库表结构

    JBPM的核心表结构覆盖了从流程定义到执行过程中的各个关键环节,具体包括但不限于以下几类: 1. **流程定义相关的表** - **JBPM_PROCESSDEFINITION**:流程模版表 - **ID_**:流程模版的唯一标识符。 - **NAME_*...

Global site tag (gtag.js) - Google Analytics