本站首页    管理页面    写新日志    退出


«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告

关注电子政务、大型企业应用开发、Web、Workflow、MOM、MDA、RCP、GEF

email:gmluyang@gmail.com


链接

好友
bluedavy-林昊
刑红瑞
SixSun-翻译
Birt中文指南
SixSun-OpenDoc
Eclipse RCP and Web in action(编写中)

我的分类(专题)

日志更新

最新评论

留言板


Blog信息
blog名称:SixSun的Blog
日志总数:152
评论数量:372
留言数量:13
访问次数:2382942
建立时间:2004年12月13日




[Java Open Source]初试OSworkflow
心得体会,  软件技术

SixSun 发表于 2005/6/26 16:33:00

    下午学习了一下OSworkflow的使用。下载了OSworkflow 小试了一把。学习Java已经半年多,虽说在工作中接触到工作流,但仍是一知半解,决定亲自一探究竟,还是有些收获,弄明白了一下概念。 (1)下载:OSworkflow(version 2.7.0)http://www.opensymphony.com/osworkflow/download.action (2)运行:解压后里面有一个 【osworkflow-2.7.0-example.war】的例子。放在Tomcat运行了一下。osworkflow-2.7.0-example  目录结构如下:--%osworkflowPATH%\          |----WEB-INF\classes           |----WEB-INF\lib          |----manager其中 WEB-INF\classes 中有几个重要的xml文件•  osworkflow.xml:这个文档设定流程是存在于数据库还是存在于内存中。 设定流程在于内存中: <osworkflow>    <persistence class="com.opensymphony.workflow.spi.memory.MemoryWorkflowStore"/>     <factory class="com.opensymphony.workflow.loader.XMLWorkflowFactory">        <property key="resource" value="workflows.xml" />    </factory></osworkflow> 设定流程在于数据库(MySQL): <osworkflow> <persistence class="com.opensymphony.workflow.spi.jdbc.MySQLWorkflowStore">   <property key="datasource" value="jdbc/OSworkflow"/> </persistence>        <factory class="com.opensymphony.workflow.loader.XMLWorkflowFactory">        <property key="resource" value="workflows.xml" />    </factory> </osworkflow> •  workflows.xml:指定系统启动时要加载那些流程。•  example.xml:这是一个案例流程,实际流程就是定义在此。 (3)概念:以OSworkflow 提供的Tutorial 举例分析一下。<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE workflow PUBLIC                  "-//OpenSymphony Group//DTD OSWorkflow 2.7//EN"                 "http://www.opensymphony.com/osworkflow/workflow_2_7.dtd"><workflow>  <initial-actions>    <action id="1" name="Start Workflow">      <results>        <unconditional-result old-status="Finished" status="Queued" step="1"/>      </results>    </action>  </initial-actions>  <steps>    <step id="1" name="First Draft">      <actions>        <action id="1" name="Start First Draft">          <restrict-to>            <conditions>              <condition type="class">                <arg name="class.name">                   com.opensymphony.workflow.util.StatusCondition                </arg>                <arg name="status">Queued</arg>              </condition>            </conditions>          </restrict-to>          <pre-functions>            <function type="class">              <arg name="class.name">                 com.opensymphony.workflow.util.Caller              </arg>            </function>          </pre-functions>          <results>            <unconditional-result old-status="Finished" status="Underway"                                            step="1"  owner="${caller}"/>          </results>        </action>        <action id="2" name="Finish First Draft">          <restrict-to>            <conditions type="AND">              <condition type="class">                <arg name="class.name">                    com.opensymphony.workflow.util.StatusCondition                </arg>                <arg name="status">Underway</arg>              </condition>              <condition type="class">                <arg name="class.name">                  com.opensymphony.workflow.util.AllowOwnerOnlyCondition                </arg>              </condition>            </conditions>          </restrict-to>          <results>            <unconditional-result old-status="Finished" status="Queued" step="2"/>          </results>        </action>      </actions>    </step>    <step id="2" name="finished" />  </steps></workflow> 从上面的可以看出有以下几个元素:不知道自己理解的有没有错误。• initial-actions:每个流程都至少需定义一个initial-actions,这是流程的起点。• step:即流程所在的位置,osworkflow真正的动作在action发生。• status:流程在某个action时的状态。• old-status:流程执行某个action后的状态。• action:导致流程状态变动的动作,所谓流程状态变动我理解为流程从一个step转移到另一step,或是在同一个step的不同状态之间转移,即一个状态是由当前的 (step + status) 所构成。• result:执行动作后的结果。


阅读全文(14447) | 回复(4) | 编辑 | 精华
 


回复:初试OSworkflow
心得体会,  软件技术

hiya(游客)发表评论于2007/2/12 18:23:13

chf@tsinghua.org.cn 以下错误是为什么呢? com.opensymphony.user.ImmutableException: No provider successfully created entity com.opensymphony.user.UserManager.createEntity(UserManager.java:379) com.opensymphony.user.UserManager.createUser(UserManager.java:245) org.apache.jsp.manager.users_jsp._jspService(users_jsp.java:59) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:初试OSworkflow
心得体会,  软件技术

xymyeah(游客)发表评论于2005/10/27 10:59:54

以下引用sixsun在2005-7-19 22:02:49的评论: Pre functions是在流程的步骤(或状态)发生切换之前执行的。 Post functions是在流程的步骤(或状态)发生切换之后执行的。 函数可以定义在两个位置:步骤(step)和动作(action)。 (1)Post functions与Pre functions被定义在action中。在action中定义的Pre-functions是指在该动作发生之前要执行的函数。当工作流发生切换的时候,函数用来做某些事情。 (2)当Post functions与Pre functions被定义在step中的时候。在step中定义的Pre-functions是指在切换到这个step之前要执行的函数。同理,在step中的Post functions将在流程离开这个步骤之前执行。     这些函数将被应用到这个步骤的所有的切换,即使是这个步骤内部状态之间发生了切换,也不会执行。

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:初试OSworkflow
心得体会,  软件技术

SixSun发表评论于2005/7/19 22:02:49

Pre functions是在流程的步骤(或状态)发生切换之前执行的。 Post functions是在流程的步骤(或状态)发生切换之后执行的。 函数可以定义在两个位置:步骤(step)和动作(action)。 (1)Post functions与Pre functions被定义在action中。在action中定义的Pre-functions是指在该动作发生之前要执行的函数。当工作流发生切换的时候,函数用来做某些事情。 (2)当Post functions与Pre functions被定义在step中的时候。在step中定义的Pre-functions是指在切换到这个step之前要执行的函数。同理,在step中的Post functions将在流程离开这个步骤之前执行。     这些函数将被应用到这个步骤的所有的切换,即使是这个步骤内部状态之间发生了切换,也不会执行。

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:初试OSworkflow
心得体会,  软件技术

流水 (游客|220.184.69.232)发表评论于2005/7/19 12:20:52

action的实现你是怎么理解的?是靠pre-functions和post-functions还有results组成的么?

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.273 second(s), page refreshed 144781516 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号