`

学习工作流osworkflow(1)

阅读更多
做了几个项目,一直被流程的控制所困扰,决定学习工作流方面的知识,从网上了解到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
分享到:
评论

相关推荐

    工作流 osworkflow 例子和原理

    1. 配置工作流定义:编写XML文件,定义流程的步骤、参与者、条件和动作。 2. 实现参与者接口:定义参与者类,处理每个步骤的业务逻辑。 3. 编写控制器:利用OSWorkflow API启动流程、查询状态、执行操作。 4. 监听和...

    OsWorkflow工作流实例

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

    workflow_osworkflow_工作流_

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

    osworkflow详细资料 pdf 工作流

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

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

    Shark的流程定义语言是XPDL,它基于UML1.x的活动图,使得并发线程管理和任务分配更为直观,非常适合工作流建模。 jbpm则由JBoss公司开发,其最新版本jbpm3采用了Hibernate3作为持久层,这也是由于二者同属JBoss生态...

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

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

    工作流引擎(osworkflow) 2.80

    1. **工作流引擎概念**:工作流引擎是软件系统的核心组件,它负责执行预定义的工作流定义,处理任务的分配、流转和状态变化。OSWorkflow 是一款基于 Java 的工作流引擎,能够与各种Java应用程序集成,如Java EE 应用...

    osworkflow学习笔记

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

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

    1. API集成:OSWorkflow 提供丰富的Java API,方便在应用中集成和控制工作流。 2. Web界面:内置的Web管理界面,用于查看流程实例、分配任务、审批等操作。 3. 模板和插件:支持自定义工作流模板和插件,以适应不同...

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

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

    OSworkFlow工作流请假流程实例

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

    OSWorkFlow

    1. 工作流模型:OSWorkFlow使用XML来定义工作流模型,包括任务(Task)、状态(State)、转换(Transition)等元素,这些元素共同构成了一个完整的工作流程。 2. 实例(Instance):当一个工作流模型被实例化后,就...

    OSWorkflow

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

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

    1. **工作流概念**:介绍工作流的基本概念,如活动(Activity)、状态(State)、转移(Transition)和参与者(Actor),帮助读者建立工作流管理的基础认知。 2. **OSWorkflow安装与配置**:详细阐述如何在Java 8...

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

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

    osworkflow_bundle2

    1. **工作流定义**:OSWorkflow 提供了一种基于 XML 的方式来定义工作流。工作流定义包括了任务、状态转换、参与者分配等,使得业务流程能够以声明式的方式进行配置。 2. **工作流实例**:在运行时,OSWorkflow 将...

    工作流最全的资料学习

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

    osworkflow-2.7.0.zip

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

    OSWorkflow源码及电子书

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

    osworkflow

    1. **理解基础概念**:在深入学习之前,首先要理解工作流的基本概念,包括流程、状态、转换和参与者等。 2. **阅读官方文档**:osWorkflow 官方文档提供了详细的介绍和示例,是学习的最佳资源。 3. **实践操作**:...

Global site tag (gtag.js) - Google Analytics