`

osworkflow api 之jdbc和hibernate

阅读更多
com.opensymphony.workflow.spi.ejb

略:

com.opensymphony.workflow.spi.jdbc

**

JDBCWorkflowStore(实现于WorkflowStore) 、MySQLWorkflowStore(继承于JDBCWorkflowStore)

先讲讲JDBCWorkflowStore:

首先理解一下osworkflow的表结构,在你所下载的压缩包里有个srcetcdeploymentjdbc目录,在这个目录下面有常用的各种数据库的ddl。       这是osworkflow内置的表结构。基本上就是这个类来对osworkflow的这个内置表进行实际操作的。

这个类里的方法众多,而且基本就是对数据库的基本操作的各种各样的方法,当然这里结合了工作流的知识,如针对step的某些有意义数据库操作,大致情况就是这样的。

如query方法的具体的jdbc方式的实现就在这里的。

MySQLWorkflowStore继承自JDBCWorkflowStore,另外重写了两个方法init和getNextStepSequence。在这里可以写针对自己需要用到的workflowstore,只要继承自JDBCWorkflow,并写重写必要的方法满足自己的实际需求即可。

在我的上一篇blog中持久化jdbcstore中的osworkflow.xml中有相应的对jdbcstore的存储范例。

com.opensymphony.workflow.spi.hibernate

**

这个包里主要是osworkflow提供对hibernate支持。

首先来看一下HibernateWorkflowStore类。

首先来看一下类注释:

/**

* A workflow store backed by Hibernate for persistence.  To use this with the standard

* persistence factory, pass to the DefaultConfiguration.persistenceArgs the SessionFactory to

* use:

* <code>DefaultConfiguration.persistenceArgs.put("sessionFactory", DatabaseHelper.getSessionFactory());</code>

* See the HibernateFunctionalWorkflowTestCase for more help.

*

* @author $Author: hani $

* @version $Revision: 1.18 $

*/

大致意思是说,以hibernate作为工作流的持久存储,为了使用标准的持久工厂即sessionfactory,在测试类HibernateFunctionalWorkflowTestCase里有较为完整的代码。其中借助的是DefaultConfiguration.persistenceArgs.put("sessionFactory", DatabaseHelper.getSessionFactory())。然后在DefaultConfiguration的getWorkflowStore获取workflowstore对象的时候,会调用store.init(getPersistenceArgs());实际执行的代码为:

sessionFactory = (SessionFactory) props.get("sessionFactory");

session = sessionFactory.openSession();



则可获得到session对象。

简单的可以理解为,put,然后store的init,最后get出就可以得到。而真正的创建sessionfactory是自己来完成,如上面是在DatabaseHelper类中的createHibernateSessionFactory方法创建出实际的sessionfactory。



从osworkflow自己带的测试类HibernateFunctionalWorkflowTestCase中的setup方法中可以看出

super.setUp();

        DatabaseHelper.createDatabase("");



        factory = DatabaseHelper.createHibernateSessionFactory();



        Configuration config = new DefaultConfiguration();

        config.load(getClass().getResource("/osworkflow-hibernate.xml"));

        workflow.setConfiguration(config);

        workflow.getConfiguration().getPersistenceArgs().put("sessionFactory", factory);

核心的实现方法在DatabaseHelper 类中的createHibernateSessionFactory方法。有兴趣的可以到这些测试代码中看一下具体是如何实现的。





其实大不可不必,如过你想要让HibernateWorkflowStore自己具有产生sessionfactory的功能,只要按照hibernate正常的生成办法写到HibernateWorkflowStore里就可以了。

我想如果要是想更方便的话可以通过在HibernateWorkflowStore内部生成HibernateWorkflowStore,既然osworkflow的作者不让在自己内部产生sessionfactory,她可能认为这个是用户自己的事,而不是osworkflow的事。那作为我们使用,我想可以更为方便点的修改它的源代码来达到这一目的。



private static SessionFactory sessionFactory;

  //~ Constructors ///////////////////////////////////////////////////////////
  static{
   try {
     sessionFactory = new Configuration().configure().buildSessionFactory();
   } catch (HibernateException ex) {
      throw new RuntimeException("Configuration problem: " + ex.getMessage(), ex);
    }
   }

二是在init中

  把sessionFactory = (SessionFactory) props.get("sessionFactory");注释

  编译,生成class,放到osworkflow-2.7.0.jar,取代原来的HibernateWorkflowStore.class



上面讲的都是hibernate的sessionfactory相关的东西。

其实每个方法如果需要解析的都会写出这么多内容的,而到底是应该掌握一个什么样的学习方法呢?我想我还是在思考。也许是看多了就眼明手亮了。

其实最让我觉得不爽的地方就是这个osworkflow的作者的代码里注释量基本为0。不知道是什么原因。

HibernateStep和HibernateHistoryStep和HibernateCurrentStep、HibernateWorkflowEntry基本没什么可说的,就是一些普通的get和set方法。



SpringHibernateWorkflowStore类:

主要是通过spring 提供的对hibernate的支持getHibernateTemplate来实现。
分享到:
评论

相关推荐

    OSworkflow中文手册和用户指南

    - **持久化**:OSWorkflow 支持多种持久化机制,如 JDBC、Hibernate 等,确保流程数据的可靠性。 6. **OSWorkflow-chinese-manual-2.8.pdf** 这份文档详细解释了OSWorkflow 2.8版本的功能和用法,涵盖了从安装到...

    osworkflow 简单实例

    8. **持久化存储**:OSWorkflow 支持多种持久化机制,如 JDBC、Hibernate 等。我们需要配置合适的持久化策略,以确保数据在应用重启后仍可恢复。 9. **测试和优化**:完成上述步骤后,我们需要编写单元测试和集成...

    OSWorkflow源码及电子书

    OSWorkflow支持多种持久化机制,如JDBC、Hibernate等,方便开发者根据项目需求选择合适的存储方式。 4. **事务管理**:OSWorkflow支持JTA(Java Transaction API),能够与其他事务处理系统协同工作,确保流程操作...

    OSWorkflow中文手册 OSWorkflow中文手册

    为了保证流程数据的可靠性,OSWorkflow支持多种持久化策略,如JDBC存储、Hibernate集成等,确保流程实例在系统重启后仍能恢复。 8. **用户界面与自定义** 虽然OSWorkflow本身不提供完整的用户界面,但提供了API和...

    osworkflow2.8.pdf

    - **API 使用**:介绍了如何调用 OSWorkflow 的 API 来启动、控制和监控工作流。 #### 九、扩展与配置 - **OSWorkflow 包描述**:列举了 OSWorkflow 中各个包的作用和功能。 - **OSWorkflow 数据库描述**:详细...

    OSWORKFlow流程开发教程

    - **与现有系统集成**:通过API调用、消息队列、数据库触发器等方式,使OSWorkflow能够嵌入到现有的业务流程中。 - **流程描述定义规范**:XML配置文件遵循特定语法,描述工作流的结构和行为。 - **GUI设计器**:...

    osworkflow中文手册

    5. **持久化机制**:OSWorkflow支持多种持久化机制,如JDBC、Hibernate等,手册会解释如何配置和使用这些持久化策略。 6. **事件和监听器**:事件监听器允许开发者在特定的工作流事件发生时执行自定义逻辑,手册会...

    OSWorkflow开发指南 - 中文

    8. **持久化策略**:OSWorkflow支持多种持久化策略,包括JDBC、Hibernate和JDO。这些策略用于保存和恢复流程实例的状态,确保即使在系统重启后也能继续执行。 9. **版本控制**:OSWorkflow支持流程定义的版本控制,...

    OSWorkFlow入门

    - 配置 OSWorkflow 的核心组件,包括持久化策略(如 JDBC 或 Hibernate)、事件监听器、工作流初始化设置等。 3. **流程定义** - OSWorkflow 使用 XML 文件来定义工作流,包括步骤、状态、转移和条件。 - 每个...

    OSWorkflow中文手册 2.8

    流程定义文件是OSWorkflow的核心组成部分之一,它描述了整个工作流的逻辑结构。常见的格式包括XML或JSON。为了加载这些文件,可以采用以下方法: - **静态加载**:在应用启动时通过配置文件指定路径。 - **动态加载...

    《OSWorkflow开发指南》电子版

    1. **易于集成**:OSWorkflow设计之初就考虑到了与现有系统的兼容性问题,能够方便地与Spring、Hibernate等框架结合使用。 2. **灵活性高**:用户可以根据需要自定义工作流的状态转换逻辑、动作和条件判断。 3. **轻...

    osworkflow-developer-guide.rar_OSWorkflow ebooks_OsWorkFlow.rar_

    3. **持久化**:支持多种持久化策略,如JDBC、Hibernate等,确保流程状态在系统重启后能恢复。 4. **事务管理**:与应用服务器的事务管理集成,确保流程操作的一致性。 5. **事件驱动**:利用事件监听器机制,可以在...

    OSWorkflow中文手册V2.8

    OSWorkflow支持多种持久化机制,如JDBC、Hibernate等。选择合适的持久化方式取决于你的项目环境和需求。例如,如果你的应用已经使用了Hibernate作为ORM框架,那么将工作流状态与数据库交互可能更方便。 **3. 载入...

    OSWorkflow开发指南

    - **持久化**:OSWorkflow支持多种持久化策略,如JDBC、Hibernate等,以适应不同的数据存储需求。 - **事件驱动**:通过监听器机制,可以定制流程事件的处理逻辑。 - **插件体系**:允许开发自定义的步骤处理器、...

    OSWorkflow中文手册

    6. **集成能力**:OSWorkflow可以轻松地与各种应用框架和数据库进行集成,如Spring、Hibernate、JDBC等,这大大增强了其在实际项目中的应用范围。 7. **持久化机制**:所有的工作流状态和历史数据都会被持久化存储...

    osworkflow-2.8.0.zip

    6. **API与集成**:osWorkflow 提供了丰富的Java API,方便开发者在应用程序中调用和集成工作流引擎。此外,它还支持多种持久化机制(如JDBC、Hibernate等),适应不同环境的需求。 7. **事件与监听器**:...

    OSWorkflow教程

    目前支持查询的包括Hibernate、JDBC和内存存储等。 - **构造查询对象**:需要创建一个`WorkflowExpressionQuery`对象来进行查询操作。 - **查询限制**:例如Hibernate存储不支持mixed-type查询,即在一个查询中同时...

    JBPM、OSWORKFLOW分析报告

    ### JBPM、OSWORKFLOW分析报告 #### 一、JBPM概述 JBPM,全称为Java Business Process Management,是一款开放源代码的业务流程管理框架。它涵盖了业务流程管理、工作流和服务协作等多个领域,旨在为开发者提供一...

    Java开源工作流引擎.pdf

    它提供了许多的持久化API支持,包括EJB、Hibernate、JDBC和其它。 知识点:工作流引擎、企业应用程序、持久化API 7. wfmOpen:wfmOpen是WfMC和OMG中的工作流设施(workflow facility)的J2EE实现。工作流通过扩展...

Global site tag (gtag.js) - Google Analytics