周日,莫映我们javaparty的伙伴讲了讲osworkflow,估计很多人还是一头雾水。目前国内似乎关注osworkflow的人越来越多,但是却没有多少人去关注其真正值得参考和学习的地方,这是不应该的。OSWorkflow的确非常灵活,但是我们不光需要知道“用的灵活”,还要知道“深层次的东东”。
于是才有了这个系列介绍的打算:
在阅读此系列之前,请队FSM又算了解,也请先阅读一下这篇文档:http://blog.csdn.net/james999/archive/2004/10/29/158653.aspx
我们现在就先从osworkflow的一个实例如何初始化入手:
首先OS的Workflow,和我们通常所理解的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方法,可以边看文档,边阅读osworkflow的AbstractWorkflow类:
在你的一个工作流定义文件中,至少是需要定义一个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)(执行step的post function)
(05) Execute pre-functions(action-level)(执行action的pre function)
(06) Check each conditional results(检查每一个条件的执行结果)
(07) Execute pre-functions(result-level)(运行result的pre 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初始化所需的数据库环境。 2. **配置文件**:`context.xml`是Tomcat的上下文配置文件,这里将包含数据库连接池(例如,使用Apache DBCP或C3P0)以及OSWorkflow的JDBC配置。你需要在`...
1. 配置:在项目中引入OSWorkFlow的依赖库,配置数据库连接,初始化工作流引擎。 2. 流程定义:使用提供的工具或编写XML定义工作流程。 3. 启动流程:通过引擎创建工作流实例,并启动流程。 4. 任务处理:根据流程...
OSWorkflow
**osworkflow** 是一个开源的工作流管理系统,专为Java应用程序设计,用于管理复杂的工作流程。在本入门指南中,我们将深入探讨如何使用osworkflow,并将其与流行的数据持久化框架Hibernate和依赖注入容器Spring进行...
### OSWorkFlow 工作流系统设计知识的详细讲解 #### 概述 本文档将对OSWorkFlow工作流系统的设计知识进行详细讲解。OSWorkFlow是一个开源的工作流引擎,适用于构建灵活、高效的企业级应用。它提供了一套完整的解决...
XML文件通常包含工作流实例的初始化信息、状态转移条件、参与者分配等。这样的设计使得非程序员也能理解并修改流程,提高了系统的可维护性。 2. **Servlet交互**:Servlet是Java Web应用中的一个关键组件,用于处理...
开发者需要根据项目需求进行配置,将OSWorkflow集成到应用中,这可能涉及到添加依赖、配置数据库连接以及初始化工作流表。 4. **API 使用** OSWorkflow 提供了一系列 Java API 和 XML 配置接口,用于创建、启动、...
在OsWorkflow中,我们首先需要初始化工作流引擎,加载流程定义,然后创建一个新的实例并开始执行。执行过程中,我们可以检查当前状态,进行步骤转换,或者查询历史记录。 OsWorkflow的一大优势在于它的灵活性。它...
初始化动作在部分定义,比如一个名为“StartWorkflow”的初始化动作,它可能将流程引导到特定步骤并设置相应的状态。 工作流描述符(workflow descriptor)是与工作流相关联的XML文件,它定义了工作流的所有状态和...
osWorkflow 提供了一种灵活的方式来定义、修改和控制应用程序中的工作流程,使得开发者可以轻松地实现业务流程自动化。 **工作流管理系统** 工作流管理系统(WfMS)是用于自动化业务过程的软件工具,它允许用户...
OSWorkflow是一款开源的工作流引擎,主要...通过阅读这本50页的OSWorkflow中文手册,用户可以深入了解OSWorkflow的工作原理,掌握如何设计和实现符合业务需求的流程,以及如何在实际项目中有效地集成和使用这一工具。
"osworkflow_bundle2" 是一个专门用于学习 OSWorkflow 的示例集合,它包含了一系列的资源和实例,帮助用户理解并掌握如何使用这个强大的工作流框架。在这个压缩包中,你将找到 "osworkflow_bundle" 文件,这是该学习...
1. **配置**:在项目中引入 Osworkflow 的依赖库,然后配置相关的bean或者服务,如WorkflowService,以初始化工作流引擎。 2. **流程定义加载**:将XML流程定义文件加载到引擎中,这样引擎就能理解和执行定义的流程...
为了实现持久化,OSWorkflow提供了一个核心接口`com.opensymphony.workflow.spi.WorkflowStore`,该接口定义了一系列方法来管理持久化操作,如存储、检索、更新工作流实例的状态等。 #### 4. 通过 ibatis 实现 ...
OSWorkFlow是一个强大的工作流引擎,它在IT领域中被广泛应用来实现业务流程自动化。工作流,简单来说,就是一系列相互关联的任务,按照特定的顺序执行,以完成一个业务过程。OSWorkFlow作为开源的工作流解决方案,为...