`

学习工作流osworkflow

阅读更多

    做了几个项目,一直被流程的控制所困扰,决定学习工作流方面的知识,从网上了解到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 例子和原理

    OSWorkflow(OpenSymphony Workflow)是一个开源的工作流引擎,它提供了一种灵活的方式来设计、实施和管理业务流程。本篇文章将深入探讨OSWorkflow的工作原理及其应用实例。 OSWorkflow的核心概念包括工作流定义、...

    OsWorkflow工作流实例

    通过理解和实践这个实例,我们可以学习到如何在实际项目中应用工作流引擎,提升软件系统的灵活性和可维护性。无论是在企业级应用还是中小项目中,OsWorkflow都是一个值得考虑的工作流解决方案。

    workflow_osworkflow_工作流_

    **工作流技术与OSWorkflow详解** 工作流(Workflow)是一种...通过深入学习和实践"workflow.pdf"中的内容,开发者可以快速掌握OSWorkflow的基本用法,从而在项目中有效地运用工作流技术,提升业务流程的自动化水平。

    osworkflow详细资料 pdf 工作流

    **工作流技术与OSWorkflow详解** 工作流(Workflow)是一种自动化业务流程的技术,它通过定义、执行和管理...通过深入学习和实践,开发者可以充分利用OSWorkflow的功能,为企业定制出符合自身需求的工作流解决方案。

    Java四大主流开源工作流引擎分析Shark,osworkflow,jbpm,jflow

    本文将深入分析四个主流的开源工作流引擎:Shark、osworkflow、jbpm和jflow。 首先,Shark是Enhydra项目的一部分,Enhydra是一个涵盖广泛的技术栈,包括J2EE应用服务器、对象/关系映射工具以及工作流引擎等。Shark...

    OSWorkFlow 工作流系统设计知识的详细讲解

    通过本文档的学习,我们可以了解到OSWorkFlow作为一款强大且灵活的工作流管理系统,在实际开发中具有广泛的应用价值。无论是在企业内部流程管理还是在更复杂的业务场景中,OSWorkFlow都能够提供有效的支持。掌握其...

    工作流引擎(osworkflow) 2.80

    工作流引擎(osworkflow) 2.80 是一个开源的工作流管理系统,专为处理复杂的业务流程自动化而设计。OSWorkflow 提供了一种灵活的方式,使开发者能够定义、执行和管理组织内部的工作流程。这个版本包括了示例项目和...

    osworkflow学习笔记

    通过osworkflow项目的学习和实践,总结出的一套osworkflow工作流引擎的学习笔记,供需要使用osworkflow系统的同学们借鉴,谢谢!

    OSWorkflow 工作流 开发指南、中文手册

    OSWorkflow 是一个强大的工作流引擎,它为Java应用程序提供了灵活的工作流管理能力。这个开发指南和中文手册将帮助开发者深入理解和有效地使用OSWorkflow。在本文中,我们将详细探讨OSWorkflow的核心概念、功能特性...

    用OSWorkFlow和JBPM开发工作流异同点解析

    【工作流引擎选择:OSWorkflow vs JBPM】 工作流管理系统(Workflow Management System,WfMS)在企业级应用中扮演着重要角色,用于自动化业务流程。OSWorkflow 和 JBPM 是两个广泛使用的开源工作流引擎,它们各有...

    OSworkFlow工作流请假流程实例

    OSworkflow(OpenSymphony Workflow)是一个开源的工作流管理系统,它提供了强大的流程定义和执行的能力,广泛应用于企业级应用中,如请假流程等业务场景。在本实例中,我们将深入探讨如何利用OSworkflow来实现一个...

    OSWorkFlow

    OSWorkFlow是一个基于Java的工作流引擎,用于在企业级应用中实现复杂的业务流程自动化。它提供了灵活的流程定义和执行模型,使得开发者可以方便地设计、实施和管理各种工作流。下面将详细介绍OSWorkFlow的核心概念、...

    OSWorkflow

    OSWorkflow是一款开源的工作流引擎,它为Java开发者和架构师提供了一个强大的工具来实现业务流程管理(BPM)。本书《OSWorkflow:Java开发人员和架构师集成开源业务流程管理指南》由Diego Adrian Naya Lazo撰写,...

    OSWorkflow-chinese-manual-2.8.rar_Java 8_manual_osworkflow_工作流

    《OSWorkflow 中文手册 2.8》是一个针对Java 8环境下的工作流管理系统OSWorkflow的详细指南,专为初学者设计,旨在帮助用户理解和掌握工作流的配置和实际操作。OSWorkflow是一款开源的工作流引擎,它允许开发者定义...

    工作流学习,相关的文档与例子

    综合以上信息,学习工作流不仅需要理解工作流的基本概念,还要熟悉工作流建模语言(如XPDL),掌握特定工作流引擎(如OSWorkflow)的使用,以及遵循WFMC制定的行业标准。通过阅读提供的文档和实践案例,你将能更深入...

    osworkflow_bundle2

    "osworkflow_bundle2" 是一个专门用于学习 OSWorkflow 的示例集合,它包含了一系列的资源和实例,帮助用户理解并掌握如何使用这个强大的工作流框架。在这个压缩包中,你将找到 "osworkflow_bundle" 文件,这是该学习...

    工作流最全的资料学习

    学习工作流技术,你需要理解以下几个核心概念: 1. **工作流模型**:这是描述业务流程的抽象表示,定义了任务的顺序、条件和决策点。 2. **工作流引擎**:负责执行工作流模型,管理任务的生命周期,处理转移和决策...

    流程引擎OSworkflow2.8资料(所有jar包,学习资料,api)

    OSWorkflow 是一个强大的开源工作流引擎,主要用于管理应用程序中的复杂业务流程。在2.8版本中,它提供了全面的功能和良好的可扩展性,是Java开发者处理流程自动化的重要工具。在这个压缩包中,你将找到一系列资源,...

    osworkflow-2.7.0.zip

    开源工作流osworkflow是软件开发中的一个重要工具,它主要用于实现业务流程的自动化管理。osworkflow由Jack Vanlightly创建,提供了一种灵活的方式来定义和执行工作流实例,支持动态修改流程,使得开发者能够在运行...

    OSWorkflow源码及电子书

    总之,OSWorkflow源码及电子书的资源集合,对于那些希望深入理解并使用工作流技术的开发者来说,是一份不可多得的学习材料。它涵盖了从基础到高级的各个方面,无论你是初学者还是经验丰富的开发者,都能从中受益。

Global site tag (gtag.js) - Google Analytics