java开源的工作流目前风头正劲的当属OSWorkFlow和jbpm,而OSWorkFlow由于其灵活性越来越受到开发者的追捧。使用工作流能很大的简化具有流程化处理的程序逻辑,使得用户集中精力关注于业务的实现。
OSWorkFlow的重点就在于工作流文件的建立,所以工作流文件的定义和语法就是掌握的重点,推荐满江红站点
http://wiki.redsaga.com
翻译的中文参考文档,基于最新版本,特别详细和到位。
由于文档中的示例配置较老,这里主要说一下osworkflow在tomcat5.5版本下的配置,基于mysql数据库。其他的知识点就需要自己来学习了。
运行环境:
Tomcat 5.5
MySQL 5.0
OSWorkFlow 2.8
步骤如下:
1、下载并部署osworkflow-2.8.0-example.war
2、下载MySQL的JDBC驱动,拷贝至$TOMCAT_HOME/common/lib/目录下
3、配置Tomcat数据源(注意:tomcat5和tomcat5.5数据源配置是有差异的,此处为5.5的)
修改$TOMCAT_HOME/conf/server.xml,在</Host>前加上
<Context path="/osworkflow_example" docBase="osworkflow-2.8.0-example"
debug= "99" reloadable="true" crossContext="true" verbosity="DEBUG">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="OSWorkflow." suffix=".log" timestamp="true"/>
<!--jdbc/DefaultDS为数据源的名称,后面许多地方要用到,不要更改-->
<Resource name="jdbc/DefaultDS" auth="Container"
type="javax.sql.DataSource" password="admin"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/workflow?autoReconnect=true"<!--将此处设置为你的数据库连接-->
maxActive="4"/>
</Context>
4、修改web应用的/WEB-INF/classes下的osworkflow.xml为
<osworkflow>
<persistence class="com.opensymphony.workflow.spi.jdbc.MySQLWorkflowStore">
<!--此处指定的class似乎只有MySQL需要这样指定,其它数据库均使用JDBCWorkflowStore-->
<!-- For jdbc persistence, all are required. -->
<property key="datasource" value="jdbc/DefaultDS"/>
<property key="entry.sequence"
value="SELECT nextVal('seq_os_wfentry')"/>
<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 nextVal('seq_os_currentsteps')"/>
-->
<property key="step.sequence" value="select sum(c1) + 1 from (select
1 as tb, count(*) as c1 from os_currentstep union select 2 as tb,
count(*) as c1 from os_historystep) as TabelaFinal" />
<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"/>
<property key="step.sequence.increment"
value="INSERT INTO OS_STEPIDS (ID) values (null)"/>
<property key="step.sequence.retrieve"
value="SELECT max(ID) FROM OS_STEPIDS"/>
<property key="entry.sequence.increment"
value="INSERT INTO OS_ENTRYIDS (ID) values (null)"/>
<property key="entry.sequence.retrieve"
value="SELECT max(ID) FROM OS_ENTRYIDS"/>
</persistence>
<factory class="com.opensymphony.workflow.loader.XMLWorkflowFactory">
<property key="resource" value="workflows.xml" />
</factory>
</osworkflow>
5、修改web应用的/WEB-INF/classes下的osuser.xml为
<opensymphony-user>
<provider class="com.opensymphony.user.provider.jdbc.JDBCAccessProvider">
<property name="user.table">os_user</property>
<property name="group.table">os_group</property>
<property name="membership.table">os_membership</property>
<property name="user.name" >username</property>
<property name="user.password">passwordhash</property>
<property name="group.name">groupname</property>
<property name="membership.userName" >username</property>
<property name="membership.groupName">groupname</property>
<property name="datasource">jdbc/DefaultDS</property>
</provider>
<provider class="com.opensymphony.user.provider.jdbc.JDBCCredentialsProvider">
<property name="user.table">os_user</property>
<property name="group.table">os_group</property>
<property name="membership.table">os_membership</property>
<property name="user.name" >username</property>
<property name="user.password">passwordhash</property>
<property name="group.name">groupname</property>
<property name="membership.userName" >username</property>
<property name="membership.groupName">groupname</property>
<property name="datasource">jdbc/DefaultDS</property>
</provider>
<provider class="com.opensymphony.user.provider.jdbc.JDBCProfileProvider">
<property name="user.table">os_user</property>
<property name="group.table">os_group</property>
<property name="membership.table">os_membership</property>
<property name="user.name" >username</property>
<property name="user.password">passwordhash</property>
<property name="group.name">groupname</property>
<property name="membership.userName" >username</property>
<property name="membership.groupName">groupname</property>
<property name="datasource">jdbc/DefaultDS</property>
</provider>
<authenticator class="com.opensymphony.user.authenticator.SmartAuthenticator" />
</opensymphony-user>
6、在classes目录下新建propertyset.xml,内容如下
<propertysets>
<propertyset name="jdbc"
class="com.opensymphony.module.propertyset.database.JDBCPropertySet">
<arg name="datasource" value="jdbc/DefaultDS"/>
<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>
7、在mysql数据库中建立workflow数据库,从下载的包中找到osworkflow2.8\src\etc\deployment\jdbc\mysql.sql,执行该SQL语句
配置工作完成,启动进行测试吧。这时候tomcat可能会出错,去掉以上各个xml中的中文注释,重新启动应该就没有问题了。
相关推荐
总的来说,OsWorkflow工作流实例为我们提供了一个强大的工具,用于构建和管理业务流程。通过理解和实践这个实例,我们可以学习到如何在实际项目中应用工作流引擎,提升软件系统的灵活性和可维护性。无论是在企业级...
本文档将对OSWorkFlow工作流系统的设计知识进行详细讲解。OSWorkFlow是一个开源的工作流引擎,适用于构建灵活、高效的企业级应用。它提供了一套完整的解决方案,帮助开发者实现业务流程自动化,提高工作效率。 ####...
本文将深入分析四个主流的开源工作流引擎:Shark、osworkflow、jbpm和jflow。 首先,Shark是Enhydra项目的一部分,Enhydra是一个涵盖广泛的技术栈,包括J2EE应用服务器、对象/关系映射工具以及工作流引擎等。Shark...
其中,OSWorkflow是一款开源的工作流引擎,特别适用于Java应用环境,提供了丰富的API和灵活的配置,使得开发者能够轻松地实现复杂的工作流程。 **OSWorkflow简介** OSWorkflow,全称OpenSymphony Workflow,是由...
工作流引擎(osworkflow) 2.80 是一个开源的工作流管理系统,专为处理复杂的业务流程自动化而设计。OSWorkflow 提供了一种灵活的方式,使开发者能够定义、执行和管理组织内部的工作流程。这个版本包括了示例项目和...
电子政务,即政府机构运用现代计算机和网络技术,将其管理和服务职能转移到网络,同时实现政府组织结构和工作流程的重组优化,超越时间、空间和部门分隔的制约,为全社会提供高效优质、规范透明和全方位的管理与服务...
OSWorkflow是一款开源的工作流引擎,它为开发者提供了灵活的API和丰富的功能,使得开发者能够轻松地集成到自己的应用系统中,实现复杂的工作流程管理。OSWorkflow的核心设计目标是提供一种轻量级、可扩展且易于使用...
OSWorkflow 是一个开源的工作流引擎,专门用于实现这种状态机模型。 OSWorkflow 提供了一个强大的框架,允许开发者在应用程序中轻松地管理和控制工作流程。它的核心功能包括: 1. **状态管理**:OSWorkflow 支持...
OSWorkflow(OpenSymphony Workflow)是一个开源的工作流引擎,它提供了一种灵活的方式来设计、实施和管理业务流程。本篇文章将深入探讨OSWorkflow的工作原理及其应用实例。 OSWorkflow的核心概念包括工作流定义、...
OSWorkflow 是一个强大的工作流引擎,它为Java应用程序提供了灵活的工作流管理能力。这个开发指南和中文手册将帮助开发者深入理解和有效地使用OSWorkflow。在本文中,我们将详细探讨OSWorkflow的核心概念、功能特性...
### 工作流引擎 Osworkflow 及其持久化机制的研究 #### 1. 引言 随着企业信息化的发展,工作流技术作为一种重要的自动化工具,在提高工作效率、优化业务流程方面发挥着重要作用。工作流引擎作为工作流系统的核心...
此外,OSworkflow还提供了API接口,使得开发者可以在应用程序中与工作流引擎交互,如启动流程、查询当前状态、执行任务等。 为了实现这个请假流程,我们需要做以下工作: 1. **设计流程模型**:定义请假流程的各个...
OSWorkflow是一款开源的工作流引擎,它为Java开发者和架构师提供了一个强大的工具来实现业务流程管理(BPM)。本书《OSWorkflow:Java开发人员和架构师集成开源业务流程管理指南》由Diego Adrian Naya Lazo撰写,...
OSWorkflow 和 JBPM 是两个广泛使用的开源工作流引擎,它们各有特点,适用于不同的场景。下面我们将详细探讨它们在开发工作流时的异同点。 **一、流程描述文件的创建** 1. **JBPM** 提供了一个图形化的编辑工具,...
6. OSWorkflow:OSWorkflow是一个灵活的工作流引擎,设计成可以嵌入到企业应用程序中。它提供了许多的持久化API支持,包括EJB、Hibernate、JDBC和其它。 知识点:工作流引擎、企业应用程序、持久化API 7. wfmOpen...
通过osworkflow项目的学习和实践,总结出的一套osworkflow工作流引擎的学习笔记,供需要使用osworkflow系统的同学们借鉴,谢谢!
标题提到的"yy.rar_DEMO_demo osworkflow_流程引擎_请假流程引擎"是一个基于osWorkflow的工作流引擎的演示项目,专门设计用来展示如何实现请假流程。osWorkflow是一款开源的工作流引擎,它允许开发者定义、执行和...
OSWorkflow是一款开源的工作流引擎,它允许开发者定义、执行和管理复杂的业务流程。这个手册的出现,无疑为中文用户提供了宝贵的资源,便于在国内环境下更好地学习和应用OSWorkflow。 工作流(Workflow)是自动化...