OSWorkflow是一个比较老的工作流框架,官方早就已经停止了对它的支持。但是用来学习工作流的基本思想,用于简单的工作流业务还是可以的。官方文档中部署示例是针对tomcat4来说明的,在这里进行了调整,使其能够跑在tomcat7和MySQL数据库上。
下载地址:https://java.net/downloads/osworkflow/
解压下载的压缩包,其中的osworkflow-2.8.0-example.war是可以直接跑在任何servlet服务器中的。但是默认情况下,这个示例程序是使用的xml作为来做存储的。现在需要将其调整到数据库中。
示例程序中有几个比较重要的配置文件:
osworkflow.xml:主要配置文件,系统主要通过该文件配置数据库或者流程定义文件。
<osworkflow>
<!-- xml的存储方式
<persistence class="com.opensymphony.workflow.spi.memory.MemoryWorkflowStore"/>
<factory class="com.opensymphony.workflow.loader.XMLWorkflowFactory">
<property key="resource" value="workflows.xml" /> 只对XMLWorkflowFactory
</factory>
-->
<!-- 数据库的存储方式 -->
<persistence class="com.opensymphony.workflow.spi.jdbc.JDBCWorkflowStore">
<property key="datasource" value="java:comp/env/jdbc/osworkflow"/>
<property key="entry.sequence" value="select case when a.rowcount=0 then 0 else a.maxId+1 end from (select count(*) as rowcount,max(id) as maxId from os_wfentry)as a"/>
<property key="entry.table" value="OS_WFENTRY"/>
<property key="entry.id" value="ID"/>
<property key="entry.name" value="NAME"/>
<property key="entry.state" value="STATE"/>
<property key="step.sequence" value="select sum(c1) from (select 1 tb, count(*) c1 from os_currentstep union select 2 tb, count(*) c1 from os_historystep) as a"/>
<property key="history.table" value="OS_HISTORYSTEP"/>
<property key="current.table" value="OS_CURRENTSTEP"/>
<property key="historyPrev.table" value="OS_HISTORYSTEP_PREV"/>
<property key="currentPrev.table" value="OS_CURRENTSTEP_PREV"/>
<property key="step.id" value="ID"/>
<property key="step.entryId" value="ENTRY_ID"/>
<property key="step.stepId" value="STEP_ID"/>
<property key="step.actionId" value="ACTION_ID"/>
<property key="step.owner" value="OWNER"/>
<property key="step.caller" value="CALLER"/>
<property key="step.startDate" value="START_DATE"/>
<property key="step.finishDate" value="FINISH_DATE"/>
<property key="step.dueDate" value="DUE_DATE"/>
<property key="step.status" value="STATUS"/>
<property key="step.previousId" value="PREVIOUS_ID"/>
</persistence>
<factory class="com.opensymphony.workflow.loader.JDBCWorkflowFactory">
<property key="datasource" value="java:comp/env/jdbc/osworkflow"/>
</factory>
</osworkflow>
其中主要需要注意的地方是
datasource: 这里配置了jndi数据源,名称是jdbc/osworkflow,你需要在tomcat的context.xml中进行相应的配置。数据库文件可以在下载包的src\etc\deployment\jdbc中找到。官方原配置中没有"java:comp/env/",导致在tomcat中始终报“找不到数据源”的错误。
entry.sequence和step.sequence:这两个是用来配置os_wfentry(流程实例)表和os_currentstep(当前步骤或节点)表的主键生成策略的。官方原配置中没有考虑MySQL,而是使用Oracle的nextVal数据库函数,要在MySQL上使用,我把改成了上述配置。
persistence:配置存储方式,WorkflowStore有很多种,默认配置的是MemoryWorkflowStore,这里改成了JDBCWorkflowStore。
factory:也是配置存储方式,两个基本差不多,但是factory中不需要配置项persistent中那么多的property,只需要配置一个datasource就可以了。至于为什么非得配置两个就不得而知了,也许作者是准备将流程定义和流程执行的数据放在不同的数据库中,甚至用不同的存储方式来存储。因为从源码中可以看出,factory负责的是流行定义方面的信息处理,额persistent则主要负责管理流程的执行过程。
propertyset.xml:如果你选择了JDBCWorkflowStore,那么还需要配置这个文件:
<propertysets>
<propertyset name="jdbc" class="com.opensymphony.module.propertyset.database.JDBCPropertySet">
<arg name="datasource" value="jdbc/osworkflow"/>
<arg name="table.name" value="OS_PROPERTYENTRY"/>
<arg name="col.globalKey" value="GLOBAL_KEY"/>
<arg name="col.itemKey" value="ITEM_KEY"/>
<arg name="col.itemType" value="ITEM_TYPE"/>
<arg name="col.string" value="STRING_VALUE"/>
<arg name="col.date" value="DATE_VALUE"/>
<arg name="col.data" value="DATA_VALUE"/>
<arg name="col.float" value="FLOAT_VALUE"/>
<arg name="col.number" value="NUMBER_VALUE"/>
</propertyset>
</propertysets>
这里又配置了一遍数据源。
workflows.xml:看名称就知道,它是用来配置流行定义文件的。如果你在osworkflow.xml中配置XMLWorkflowFactory,那么你还需要为这个factory配置一个resouce来引用下面的配置:
<workflows>
<workflow name="example" type="resource" location="example.xml"/>
</workflows>
这个文件中可以定义多个流行定义,每个流行定义对应一个文件。如上所示定义了一个example流行,对应的文件是example.xml。
分享到:
相关推荐
要将 OSWorkflow 集成到 MySQL 中,首先需要在数据库中创建相应的表结构,这些表通常包括工作流实例表、步骤表、状态转移表等。然后,你需要配置 OSWorkflow 的数据库连接信息,使其能够正确地与 MySQL 进行通信。 ...
这个示例提供了一个完整的osworkflow与Eclipse结合的请假审批流程,它不仅展示了osworkflow的工作流管理能力,还演示了如何将工作流引擎与实际业务逻辑相结合,为实际的企业应用提供了参考。通过学习和实践这个示例...
**osworkflow** 是一个开源的工作流管理系统,专为Java应用程序设计,用于管理复杂的工作流程。在本入门指南中,我们将深入探讨如何使用osworkflow,并将其与流行的数据持久化框架Hibernate和依赖注入容器Spring进行...
标题 "osworkflow+spring+jdbc实现" 涉及到的是一个集成开源工作流引擎OSWorkflow(OpenSymphony Workflow)与Spring框架,并利用JDBC作为持久化存储的解决方案。这个集成使得开发者能够在Java应用中方便地引入工作...
在IT行业中,工作流管理系统是实现企业业务流程自动化的重要工具,而`osworkflow`、`Spring`和`Hibernate`这三者结合的应用则为构建高效、灵活的工作流系统提供了强大的支持。`osworkflow`是一个开源的工作流引擎,...
osworkflow是一款开源的工作流引擎,它提供了灵活的工作流程定义和执行管理功能。在Java应用中,osworkflow常常与Spring和Hibernate这两个主流的框架结合使用,以实现业务流程的自动化处理。本篇文章将深入探讨如何...
OsWorkflow是一款开源的工作流引擎,它为应用程序提供了一种灵活且可扩展的方式来管理业务流程。在本实例中,我们将深入探讨OsWorkflow的核心概念、主要功能以及如何创建和测试一个工作流实例。 工作流引擎是软件...
2. **工作流定义示例**:展示一个简单的XML工作流定义,解释各个元素的含义。 3. **API使用**:详细介绍OSWorkflow提供的主要API,如开始、暂停、恢复和结束工作流实例,以及查询和完成任务的方法。 4. **案例研究**...
**工作流技术与OSWorkflow详解** 工作流(Workflow)是一种自动化业务流程的技术,它通过定义、执行和管理工作任务的流转,实现企业业务流程的规范化和自动化。在IT领域,工作流系统广泛应用于企业管理、项目协作、...
OSWorkflow(OpenSymphony Workflow)是一个开源的工作流引擎,它提供了一种灵活的方式来设计、实施和管理业务流程。本篇文章将深入探讨OSWorkflow的工作原理及其应用实例。 OSWorkflow的核心概念包括工作流定义、...
OSWorkflow 是一个开源的工作流引擎,专门用于实现这种状态机模型。 OSWorkflow 提供了一个强大的框架,允许开发者在应用程序中轻松地管理和控制工作流程。它的核心功能包括: 1. **状态管理**:OSWorkflow 支持...
### OSWorkFlow 工作流系统设计知识的详细讲解 #### 概述 本文档将对OSWorkFlow工作流系统的设计知识进行详细讲解。OSWorkFlow是一个开源的工作流引擎,适用于构建灵活、高效的企业级应用。它提供了一套完整的解决...
本文将深入分析四个主流的开源工作流引擎:Shark、osworkflow、jbpm和jflow。 首先,Shark是Enhydra项目的一部分,Enhydra是一个涵盖广泛的技术栈,包括J2EE应用服务器、对象/关系映射工具以及工作流引擎等。Shark...
在"osworkflow_leaveApprove_mysql"项目中,我们看到的是一个基于OSWorkflow的请假审批流程示例,专为初学者设计,帮助他们快速理解和掌握工作流系统的运作原理。 MySQL作为全球最受欢迎的开源关系型数据库管理系统...
【工作流引擎选择:OSWorkflow vs JBPM】 工作流管理系统(Workflow Management System,WfMS)在企业级应用中扮演着重要角色,用于自动化业务流程。OSWorkflow 和 JBPM 是两个广泛使用的开源工作流引擎,它们各有...
工作流引擎(osworkflow) 2.80 是一个开源的工作流管理系统,专为处理复杂的业务流程自动化而设计。OSWorkflow 提供了一种灵活的方式,使开发者能够定义、执行和管理组织内部的工作流程。这个版本包括了示例项目和...
OSWorkflow 是一个强大的工作流引擎,它为Java应用程序提供了灵活的工作流管理能力。这个开发指南和中文手册将帮助开发者深入理解和有效地使用OSWorkflow。在本文中,我们将详细探讨OSWorkflow的核心概念、功能特性...
osWorkflow 是一款开源的工作流引擎,主要用于处理业务流程中的各种工作流逻辑。它提供了一种灵活的方式来定义、控制和执行复杂的业务流程,允许开发者在不修改代码的情况下改变流程。本指导文档结合源码将深入解析 ...
《OSWorkflow 中文手册 2.8》是一个针对Java 8环境下的工作流管理系统OSWorkflow的详细指南,专为初学者设计,旨在帮助用户理解和掌握工作流的配置和实际操作。OSWorkflow是一款开源的工作流引擎,它允许开发者定义...