OSWorkflow中文文档(第一版)
Author:Chris Chen
Date:2007-07-07
Introduction (2)
Run OSWorkflow2.8Example (2)
Required JAR Library (2)
OSWorkflow Required Library (2)
OSWorkflow Core Library (3)
OsworkflowOptional Library (3)
Spring Support to OSWorkflow (3)
Hibernate3Support to OSWorkflow (3)
WorkflowStore (4)
MemoryWorkflowStore (4)
JDBCWorkflowStore (4)
SpringHibernateWorkflowStore (9)
JDBCTemplateWorkflowStore (13)
HibernateWorkflowStore (17)
Understanding OSWorkflow (17)
Workflow Definition (17)
Workflow Concepts (18)
Steps,Status,and Actions (18)
Results,Joins,and Splits (18)
Java-based Functions (24)
BeanShell Functions (25)
BSF Functions (26)
Utility Functions (26)
Validators (27)
Registers (28)
Conditions (29)
SOAP Support (29)
Using the API (31)
Additional (34)
OSWorkflow Packages Description (34)
OSWorkflow Database Description (36)
os_currentstep (36)
os_currentstep_prev (37)
os_historystep (37)
os_historystep_prev (38)
os_wfentry (39)
os_entryids (39)
os_stepids (39)
os_propertyentry (39)
os_user (40)
os_group (40)
os_membership (40)
Afterword (41)
Introduction
OSWorkflow非常不同于大多数其它别的工作流,不论是商用的还是开源的。它的不同之处就在用它极其灵活(extremely flexible)。然而,这就使得我们很难掌握它。举个例子:OSWorkflow没有好的可视化工具来开发流程,这就意味着我们要手工地去书写和定义这些XML流程描述文件。这便需要应用开发者具备一定的勇气,就类似于有勇气写代码或者配置数据库一样。寻一个快速的”即插即用(plug-and-play)”工作流解决方案成为了一些人现有的问题,但我们最终发现这样的解决方案没有提供足够的灵活度从而不能在一个完善的系统中实现所有的需求。
OSWorkflow提供这样的灵活(OSWorkflow gives you this flexibility)
OSWorkflow认为是一个”低端”工作流实现。比如说循环(loops)和条件(conditions)在其它别的工作流里面被想像成是可视化的图标,然后在osworkflow里面是代码。这并不是说需要你来实现真正的代码,而是用脚本语言去定义这些条件。我们不期待那些不懂技术的用户去修改流程。我们发现有些系统提供了GUI可以简单地编辑一些流程,但当运用GUI 的时候这些流程最终被修改和破坏了。我们相信最好的
方式是能让这些开发者知道这些改变。我们也曾说过,OSWorkflow最终的版本将提供GUI来辅助开发者编辑流程。
OSWorkflow基于有限状态机制(finite state machine)这种思想。每一种状态(state)被描述成为step ID和status.从一个state转到另一个state没有动作(action)是不可能发生的。在一个工作流的生命周期内通常有一个或者多个有效的状态。这些简单的思想表现在osworkflow 引擎核心包里面,并且通过用一个简单的XML文件来描述一个商业的工作流程。
Run OSWorkflow2.8Example
Required JAR Library
OSWorkflow Required Library
Osworkflow核心包(%osworkflow解压包%\):
OSWorkflow-2.8.0.jar
OSWorkflow Core Library
Osworkflow必要包(%osworkflow解压包%\lib\core):
commons-logging.jar:必要,支持日志。
propertyset-1.4.jar:必要,支持propertyset的
aggregate,cached,,memory,jdbc,file,javabeans,map,xml接口实现,并不支持hibernate3,如果要支持hernate3,要自己写代码。这个下面再谈。
oscore-2.2.5.jar:必要,提供了一些工具等。
OsworkflowOptional Library
Osworkflow可选包(%osworkflow解压包%\lib\optional):
bsf.jar:支持bsf,可选。
bsh-1.2b7.jar:支持beanshell,可选。
ehcache.jar:支持缓存,可选。
osuser-1.0-dev-2Feb05.jar:支持例子里面的用户和组管理,在涉及到用户和组的操作建议加上此包。
Spring Support to OSWorkflow
Spring对osworkflow的支持(%spring解压包%\dist):
spring.jar(version:2.05)
Hibernate3Support to OSWorkflow
Hibernate3对osworkflow的支持(%hibernate解压包%\lib):
antlr.jar
cglib.jar
asm.jar
asm-attrs.jars
commons-collections.jar
commons-logging.jar
hibernate3.jar
jta.jar
dom4j.jar
log4j.jar
WorkflowStore
MemoryWorkflowStore
MemoryWorkflowStore(例子自带,略)
JDBCWorkflowStore
第一步:l
<?xml version="1.0"encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC"-//Sun Microsystems,Inc.//DTD Web Application2.3//EN" "java.sun/dtd/web-app_2_3.dtd">
<web-app>
<display-name>OSWorkflow Example App</display-name>
<description>OSWorkflow Example App</description>
<servlet>
<servlet-name>SOAPWorkflow</servlet-name>
log4j2xml配置<servlet-class>com.opensymphony.workflow.soap.SOAPWorkflowServlet</servlet-class> </servlet>
<servlet-mapping>
<servlet-name>SOAPWorkflow</servlet-name>
<url-pattern>/soap/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
第二步:配置数据源
如果是tomcat5.0及以上版本,在\%tomcathome%\conf\catalina\localhost建一个l,l里面的内容如下,请注意红部分为数据源名称:
<?xml version="1.0"encoding="UTF-8"?>
<Context crossContext="true"displayName="Welcome to Tomcat"
docBase="E:/workspace/OSWorkflow/exploded"path="">
<Resource auth="Container"name="jdbc/oswf"type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/oswf">
<parameter>
<name>factory</name>
<value>org.apachemons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://127.0.0.1:3306/OSWorkflow?useUnicode=true&characterEncoding=G BK</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>maxActive</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value&sql.jdbc.Driver</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>3</value>
</parameter>
</ResourceParams>
</Context>
如果是resin,请在l里面加入以下代码:
<resource-ref>
<res-ref-name>jdbc/oswf</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<init-param driver-name="sql.jdbc.Driver"/>
<init-param url="jdbc:mysql://localhost:3306/OSWorkflow"/>
<init-param user="root"/>
<init-param password=""/>
<init-param max-connections="20"/>
<init-param max-idle-time="30"/>
</resource-ref>
最终l如下,红部分为新加的数据源:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。