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 支持多种持久化机制,如 JDBC、Hibernate 等,确保流程数据的可靠性。 6. **OSWorkflow-chinese-manual-2.8.pdf** 这份文档详细解释了OSWorkflow 2.8版本的功能和用法,涵盖了从安装到...
8. **持久化存储**:OSWorkflow 支持多种持久化机制,如 JDBC、Hibernate 等。我们需要配置合适的持久化策略,以确保数据在应用重启后仍可恢复。 9. **测试和优化**:完成上述步骤后,我们需要编写单元测试和集成...
OSWorkflow支持多种持久化机制,如JDBC、Hibernate等,方便开发者根据项目需求选择合适的存储方式。 4. **事务管理**:OSWorkflow支持JTA(Java Transaction API),能够与其他事务处理系统协同工作,确保流程操作...
为了保证流程数据的可靠性,OSWorkflow支持多种持久化策略,如JDBC存储、Hibernate集成等,确保流程实例在系统重启后仍能恢复。 8. **用户界面与自定义** 虽然OSWorkflow本身不提供完整的用户界面,但提供了API和...
- **API 使用**:介绍了如何调用 OSWorkflow 的 API 来启动、控制和监控工作流。 #### 九、扩展与配置 - **OSWorkflow 包描述**:列举了 OSWorkflow 中各个包的作用和功能。 - **OSWorkflow 数据库描述**:详细...
- **与现有系统集成**:通过API调用、消息队列、数据库触发器等方式,使OSWorkflow能够嵌入到现有的业务流程中。 - **流程描述定义规范**:XML配置文件遵循特定语法,描述工作流的结构和行为。 - **GUI设计器**:...
5. **持久化机制**:OSWorkflow支持多种持久化机制,如JDBC、Hibernate等,手册会解释如何配置和使用这些持久化策略。 6. **事件和监听器**:事件监听器允许开发者在特定的工作流事件发生时执行自定义逻辑,手册会...
8. **持久化策略**:OSWorkflow支持多种持久化策略,包括JDBC、Hibernate和JDO。这些策略用于保存和恢复流程实例的状态,确保即使在系统重启后也能继续执行。 9. **版本控制**:OSWorkflow支持流程定义的版本控制,...
- 配置 OSWorkflow 的核心组件,包括持久化策略(如 JDBC 或 Hibernate)、事件监听器、工作流初始化设置等。 3. **流程定义** - OSWorkflow 使用 XML 文件来定义工作流,包括步骤、状态、转移和条件。 - 每个...
流程定义文件是OSWorkflow的核心组成部分之一,它描述了整个工作流的逻辑结构。常见的格式包括XML或JSON。为了加载这些文件,可以采用以下方法: - **静态加载**:在应用启动时通过配置文件指定路径。 - **动态加载...
1. **易于集成**:OSWorkflow设计之初就考虑到了与现有系统的兼容性问题,能够方便地与Spring、Hibernate等框架结合使用。 2. **灵活性高**:用户可以根据需要自定义工作流的状态转换逻辑、动作和条件判断。 3. **轻...
3. **持久化**:支持多种持久化策略,如JDBC、Hibernate等,确保流程状态在系统重启后能恢复。 4. **事务管理**:与应用服务器的事务管理集成,确保流程操作的一致性。 5. **事件驱动**:利用事件监听器机制,可以在...
OSWorkflow支持多种持久化机制,如JDBC、Hibernate等。选择合适的持久化方式取决于你的项目环境和需求。例如,如果你的应用已经使用了Hibernate作为ORM框架,那么将工作流状态与数据库交互可能更方便。 **3. 载入...
- **持久化**:OSWorkflow支持多种持久化策略,如JDBC、Hibernate等,以适应不同的数据存储需求。 - **事件驱动**:通过监听器机制,可以定制流程事件的处理逻辑。 - **插件体系**:允许开发自定义的步骤处理器、...
6. **集成能力**:OSWorkflow可以轻松地与各种应用框架和数据库进行集成,如Spring、Hibernate、JDBC等,这大大增强了其在实际项目中的应用范围。 7. **持久化机制**:所有的工作流状态和历史数据都会被持久化存储...
6. **API与集成**:osWorkflow 提供了丰富的Java API,方便开发者在应用程序中调用和集成工作流引擎。此外,它还支持多种持久化机制(如JDBC、Hibernate等),适应不同环境的需求。 7. **事件与监听器**:...
目前支持查询的包括Hibernate、JDBC和内存存储等。 - **构造查询对象**:需要创建一个`WorkflowExpressionQuery`对象来进行查询操作。 - **查询限制**:例如Hibernate存储不支持mixed-type查询,即在一个查询中同时...
### JBPM、OSWORKFLOW分析报告 #### 一、JBPM概述 JBPM,全称为Java Business Process Management,是一款开放源代码的业务流程管理框架。它涵盖了业务流程管理、工作流和服务协作等多个领域,旨在为开发者提供一...
它提供了许多的持久化API支持,包括EJB、Hibernate、JDBC和其它。 知识点:工作流引擎、企业应用程序、持久化API 7. wfmOpen:wfmOpen是WfMC和OMG中的工作流设施(workflow facility)的J2EE实现。工作流通过扩展...