`

OSWorkflow深层讲解系列(一)初始化的原理

 
阅读更多

 

周日,莫映我们javaparty的伙伴讲了讲osworkflow,估计很多人还是一头雾水。目前国内似乎关注osworkflow的人越来越多,但是却没有多少人去关注其真正值得参考和学习的地方,这是不应该的。OSWorkflow的确非常灵活,但是我们不光需要知道“用的灵活”,还要知道“深层次的东东”。

于是才有了这个系列介绍的打算:

 

在阅读此系列之前,请队FSM又算了解,也请先阅读一下这篇文档:http://blog.csdn.net/james999/archive/2004/10/29/158653.aspx

 

我们现在就先从osworkflow的一个实例如何初始化入手:

 

 


 

首先OSWorkflow,和我们通常所理解的Engine并不是很一样。在OSWorkflow中没有“Service”的概念,所以每次访问的时候,都可以重新创建一个Workflow对象。我们可以把这个Workflow理解成一个Execute Engine或者Execute Runner。在一个访问请求中,一个Workfow对象负责维护一个流程实例的管理和操作。

 

Workflow workflow = new BasicWorkflow("testuser");
DefaultConfiguration config = new DefaultConfiguration();
workflow.setConfiguration(config);
long workflowId = workflow.initialize("mytest", 1, null);
workflow.doAction(workflowId, 1, null);

 

我们先来说说initialize方法,可以边看文档,边阅读osworkflowAbstractWorkflow类:

       在你的一个工作流定义文件中,至少是需要定义一个initial action。这些initial action其实就是流程实例的可能运行起点。就如同我们通常说说的start node或者start activity等等。

 

<?xml version="1.0" encoding="UTF-8"?>

<workflow>

  <initial-actions>

    ...

  </initial-actions>

  <steps>

    ...

  </steps>

</workflow>

 

initialize方法中,主要是存在四个功能:

(1)       创建流程实例对象,在osworkflow中,流程实例对象用WorkflowEntry接口的子类实现

(2)       构造临时变量的集合,即transientVars;用于在一个转移过程中临时保持数据状态

(3)       获取指定的Action对象

(4)       执行这个Action,并造成转移,即transitionWorkflow方法

 

这几个功能中,重中之重,也是OSWorkflow的最为核心的算法,就是最后的转移。在这转移过程中,会执行下面的一系列操作:

 

(这张列表最初是由 莫映 整理,我补充和修改了一些)

(01) Get current step(获取当前的Step

(02) Validate transientVars(验证临时变量)

(03) Validate inputs(验证输入的数据)

    如果step不为null(执行初始化action的时候,current step还不存在)

(04) Execute post-functions(step-level)(执行steppost function

(05) Execute pre-functions(action-level)(执行actionpre function

(06) Check each conditional results(检查每一个条件的执行结果)

(07) Execute pre-functions(result-level)(运行resultpre function

(08) Move current step into history

(09) Create new current step

(10) Execute pre-functions(step-level)

(11) Execute post-functions(result-level)

(12) Execute post-functions(action-level)

    如果是初始化动作

(13) Mark the entry state as Activated

如果是结束动作

(14) Set the entry state Completed

获取globalActions中可以自动执行的,并执行

(15) perform available and auto global actions

分享到:
评论

相关推荐

    工作流 osworkflow 例子和原理

    总的来说,OSWorkflow为开发者提供了一个强大且灵活的工作流解决方案,帮助他们轻松管理和自动化复杂的业务过程。无论是在企业级应用还是小型项目中,OSWorkflow都能发挥重要作用,提高效率,降低维护成本。通过深入...

    osworkflow在tomcat6下的持久化例子,用mysql

    运行这个脚本将为OSWorkflow初始化所需的数据库环境。 2. **配置文件**:`context.xml`是Tomcat的上下文配置文件,这里将包含数据库连接池(例如,使用Apache DBCP或C3P0)以及OSWorkflow的JDBC配置。你需要在`...

    OSWorkFlow

    1. 配置:在项目中引入OSWorkFlow的依赖库,配置数据库连接,初始化工作流引擎。 2. 流程定义:使用提供的工具或编写XML定义工作流程。 3. 启动流程:通过引擎创建工作流实例,并启动流程。 4. 任务处理:根据流程...

    OSWorkflow

    OSWorkflow

    osworkflow中文入门指南,osworkflow+hibernate+spring集成配置,osworkflow-2.8.0.jar

    **osworkflow** 是一个开源的工作流管理系统,专为Java应用程序设计,用于管理复杂的工作流程。在本入门指南中,我们将深入探讨如何使用osworkflow,并将其与流行的数据持久化框架Hibernate和依赖注入容器Spring进行...

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

    ### OSWorkFlow 工作流系统设计知识的详细讲解 #### 概述 本文档将对OSWorkFlow工作流系统的设计知识进行详细讲解。OSWorkFlow是一个开源的工作流引擎,适用于构建灵活、高效的企业级应用。它提供了一套完整的解决...

    OsWorkflow

    XML文件通常包含工作流实例的初始化信息、状态转移条件、参与者分配等。这样的设计使得非程序员也能理解并修改流程,提高了系统的可维护性。 2. **Servlet交互**:Servlet是Java Web应用中的一个关键组件,用于处理...

    osworkflow2.8

    开发者需要根据项目需求进行配置,将OSWorkflow集成到应用中,这可能涉及到添加依赖、配置数据库连接以及初始化工作流表。 4. **API 使用** OSWorkflow 提供了一系列 Java API 和 XML 配置接口,用于创建、启动、...

    OsWorkflow工作流实例

    在OsWorkflow中,我们首先需要初始化工作流引擎,加载流程定义,然后创建一个新的实例并开始执行。执行过程中,我们可以检查当前状态,进行步骤转换,或者查询历史记录。 OsWorkflow的一大优势在于它的灵活性。它...

    OSWorkFlow入门指南.pdf

    初始化动作在部分定义,比如一个名为“StartWorkflow”的初始化动作,它可能将流程引导到特定步骤并设置相应的状态。 工作流描述符(workflow descriptor)是与工作流相关联的XML文件,它定义了工作流的所有状态和...

    osworkflow

    osWorkflow 提供了一种灵活的方式来定义、修改和控制应用程序中的工作流程,使得开发者可以轻松地实现业务流程自动化。 **工作流管理系统** 工作流管理系统(WfMS)是用于自动化业务过程的软件工具,它允许用户...

    OSWorkflow中文手册 OSWorkflow中文手册

    OSWorkflow是一款开源的工作流引擎,主要...通过阅读这本50页的OSWorkflow中文手册,用户可以深入了解OSWorkflow的工作原理,掌握如何设计和实现符合业务需求的流程,以及如何在实际项目中有效地集成和使用这一工具。

    osworkflow_bundle2

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

    Osworkflow 入门级例子

    1. **配置**:在项目中引入 Osworkflow 的依赖库,然后配置相关的bean或者服务,如WorkflowService,以初始化工作流引擎。 2. **流程定义加载**:将XML流程定义文件加载到引擎中,这样引擎就能理解和执行定义的流程...

    工作流引擎 Osworkflow 及其持久化机制的研究

    为了实现持久化,OSWorkflow提供了一个核心接口`com.opensymphony.workflow.spi.WorkflowStore`,该接口定义了一系列方法来管理持久化操作,如存储、检索、更新工作流实例的状态等。 #### 4. 通过 ibatis 实现 ...

    OSWorkFlow 请假实例

    OSWorkFlow是一个强大的工作流引擎,它在IT领域中被广泛应用来实现业务流程自动化。工作流,简单来说,就是一系列相互关联的任务,按照特定的顺序执行,以完成一个业务过程。OSWorkFlow作为开源的工作流解决方案,为...

Global site tag (gtag.js) - Google Analytics