做了几个项目,一直被流程的控制所困扰,决定学习工作流方面的知识,从网上了解到osworkflow是一个轻量级的又极为灵活的工作流引擎(详细情况请访问:http://www.opensymphony.com/osworkflow
),所以拿来学习。
折腾了一个下午,终于把自带的example运行起来了。我的测试环境:winxp tomcat4.1.30 oracle8.05 jdk1.4.2。
首先,下载https://osworkflow.dev.java.net/files/documents/635/4647/osworkflow-2.7.0.zip
。解压后,将osworkflow-2.7.0-example.war拷贝至tomcat的webapp下,启动tomcat,访问http://localhost/osworkflow-2.7.0-example
,一切都很easy。
osworkflow提供了多种持久化机制MemoryStore
(default), SerializableStore, JDBCStore,
OfbizStore等等。由于下载的example是为了方便初学者尽快的将程序运行起来,所以采用了MemoryStore。呵呵,实际的系统可不会
让数据全呆在内存里哦。改成JDBCStore试试。
1、修改tomcat的sever.xml,添加:
<Context path="/
osworkflow-2.7.0-example" docBase="
osworkflow-2.7.0-example"
debug="5" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_osworkflow_log." suffix=".txt"
timestamp="true"/>
Resource name="jdbc/mydb
" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/mydb">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@127.0.0.1:1521:orcl</value>
</parameter>
<parameter>
<name>username</name>
<value>oswf</value>
</parameter>
<parameter>
<name>password</name>
<value>oswf</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
</Context>
2、修改WEB-INF/classes/osworkflow.xml(红色部分根据您的数据库作相应修改)
<osworkflow>
<persistence class="com.opensymphony.workflow.spi.jdbc.JDBCWorkflowStore">
<!-- For jdbc persistence, all are required. -->
<property key="datasource" value="jdbc/mydb
"/>
<property key="entry.sequence" value="SELECT seq_os_wfentry.nextVal from dual
"/>
<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 seq_os_currentsteps.nextVal from dual
"/>
<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.XMLWorkflowFactory">
<property key="resource" value="workflows.xml" />
</factory>
</osworkflow>
3、在WEB-INF/classes里新建propertyset.xml
<propertysets>
<propertyset name="jdbc"
class="com.opensymphony.module.propertyset.database.JDBCPropertySet">
<arg name="datasource" value="jdbc/mydb
"/>
<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>
4、修改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">java:comp/env/jdbc/mydb
</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">java:comp/env/jdbc/mydb
</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">java:comp/env/jdbc/mydb
</property>
</provider>
<!--
Authenticators can take properties just like providers.
This smart authenticator should work for ''''most'''' cases - it dynamically looks up
the most appropriate authenticator for the current server.
-->
<authenticator class="com.opensymphony.user.authenticator.SmartAuthenticator" />
</opensymphony-user>
5、在sql-plus里运行下载包里的 src\etc\deployment\jdbc\oracle.sql
6、启动tomcat
7、OK。
分享到:
相关推荐
OSWorkflow(OpenSymphony Workflow)是一个开源的工作流引擎,它提供了一种灵活的方式来设计、实施和管理业务流程。本篇文章将深入探讨OSWorkflow的工作原理及其应用实例。 OSWorkflow的核心概念包括工作流定义、...
通过理解和实践这个实例,我们可以学习到如何在实际项目中应用工作流引擎,提升软件系统的灵活性和可维护性。无论是在企业级应用还是中小项目中,OsWorkflow都是一个值得考虑的工作流解决方案。
**工作流技术与OSWorkflow详解** 工作流(Workflow)是一种...通过深入学习和实践"workflow.pdf"中的内容,开发者可以快速掌握OSWorkflow的基本用法,从而在项目中有效地运用工作流技术,提升业务流程的自动化水平。
**工作流技术与OSWorkflow详解** 工作流(Workflow)是一种自动化业务流程的技术,它通过定义、执行和管理...通过深入学习和实践,开发者可以充分利用OSWorkflow的功能,为企业定制出符合自身需求的工作流解决方案。
本文将深入分析四个主流的开源工作流引擎:Shark、osworkflow、jbpm和jflow。 首先,Shark是Enhydra项目的一部分,Enhydra是一个涵盖广泛的技术栈,包括J2EE应用服务器、对象/关系映射工具以及工作流引擎等。Shark...
通过本文档的学习,我们可以了解到OSWorkFlow作为一款强大且灵活的工作流管理系统,在实际开发中具有广泛的应用价值。无论是在企业内部流程管理还是在更复杂的业务场景中,OSWorkFlow都能够提供有效的支持。掌握其...
工作流引擎(osworkflow) 2.80 是一个开源的工作流管理系统,专为处理复杂的业务流程自动化而设计。OSWorkflow 提供了一种灵活的方式,使开发者能够定义、执行和管理组织内部的工作流程。这个版本包括了示例项目和...
通过osworkflow项目的学习和实践,总结出的一套osworkflow工作流引擎的学习笔记,供需要使用osworkflow系统的同学们借鉴,谢谢!
OSWorkflow 是一个强大的工作流引擎,它为Java应用程序提供了灵活的工作流管理能力。这个开发指南和中文手册将帮助开发者深入理解和有效地使用OSWorkflow。在本文中,我们将详细探讨OSWorkflow的核心概念、功能特性...
【工作流引擎选择:OSWorkflow vs JBPM】 工作流管理系统(Workflow Management System,WfMS)在企业级应用中扮演着重要角色,用于自动化业务流程。OSWorkflow 和 JBPM 是两个广泛使用的开源工作流引擎,它们各有...
OSworkflow(OpenSymphony Workflow)是一个开源的工作流管理系统,它提供了强大的流程定义和执行的能力,广泛应用于企业级应用中,如请假流程等业务场景。在本实例中,我们将深入探讨如何利用OSworkflow来实现一个...
OSWorkFlow是一个基于Java的工作流引擎,用于在企业级应用中实现复杂的业务流程自动化。它提供了灵活的流程定义和执行模型,使得开发者可以方便地设计、实施和管理各种工作流。下面将详细介绍OSWorkFlow的核心概念、...
OSWorkflow是一款开源的工作流引擎,它为Java开发者和架构师提供了一个强大的工具来实现业务流程管理(BPM)。本书《OSWorkflow:Java开发人员和架构师集成开源业务流程管理指南》由Diego Adrian Naya Lazo撰写,...
《OSWorkflow 中文手册 2.8》是一个针对Java 8环境下的工作流管理系统OSWorkflow的详细指南,专为初学者设计,旨在帮助用户理解和掌握工作流的配置和实际操作。OSWorkflow是一款开源的工作流引擎,它允许开发者定义...
综合以上信息,学习工作流不仅需要理解工作流的基本概念,还要熟悉工作流建模语言(如XPDL),掌握特定工作流引擎(如OSWorkflow)的使用,以及遵循WFMC制定的行业标准。通过阅读提供的文档和实践案例,你将能更深入...
"osworkflow_bundle2" 是一个专门用于学习 OSWorkflow 的示例集合,它包含了一系列的资源和实例,帮助用户理解并掌握如何使用这个强大的工作流框架。在这个压缩包中,你将找到 "osworkflow_bundle" 文件,这是该学习...
学习工作流技术,你需要理解以下几个核心概念: 1. **工作流模型**:这是描述业务流程的抽象表示,定义了任务的顺序、条件和决策点。 2. **工作流引擎**:负责执行工作流模型,管理任务的生命周期,处理转移和决策...
OSWorkflow 是一个强大的开源工作流引擎,主要用于管理应用程序中的复杂业务流程。在2.8版本中,它提供了全面的功能和良好的可扩展性,是Java开发者处理流程自动化的重要工具。在这个压缩包中,你将找到一系列资源,...
开源工作流osworkflow是软件开发中的一个重要工具,它主要用于实现业务流程的自动化管理。osworkflow由Jack Vanlightly创建,提供了一种灵活的方式来定义和执行工作流实例,支持动态修改流程,使得开发者能够在运行...
总之,OSWorkflow源码及电子书的资源集合,对于那些希望深入理解并使用工作流技术的开发者来说,是一份不可多得的学习材料。它涵盖了从基础到高级的各个方面,无论你是初学者还是经验丰富的开发者,都能从中受益。