`
smallsnake
  • 浏览: 7534 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

第一篇:一步一步开发工作流引擎

阅读更多

 

工作流在企业开发中经常被使用,最近半年做了一个工作流程引擎,没商用,纯粹个人爱好。 最近半个月,就将半年的学习总结一下,和大家共享一下开发的乐趣。

 

希望不要太监, ~~

 

【工作流的概念】

 

【基本的工作流模式】

 

【常用的开源流程引擎介绍】

 

【基本架构】

 

 【自己来实现】

 

 

好,先抛砖引玉,贴一下流程模板

 

    AND 

 

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:workflow name="Example_WorkFlow_XOR" type="MAIN"
	xmlns:ns2="http://www.donkey.com/workflow">
	<ns2:desc>这是一个测试流程生成的</ns2:desc>
	<ns2:end name="END" />
	<ns2:tache name="TACHE_A">
		<transition to="TACHE_AND_JOIN" desc="到合并节点" />
	</ns2:tache>
	<ns2:tache name="TACHE_B">
		<transition to="TACHE_AND_JOIN" desc="到合并节点" />
	</ns2:tache>
	<ns2:and_split name="TACHE_AND_SPLIT">
		<transition to="TACHE_A" desc="到普通环节TACHE_A" />
		<transition to="TACHE_B" desc="到普通环节TACHE_B" />
	</ns2:and_split>
	<ns2:and_join name="TACHE_AND_JOIN">
		<transition to="END" desc="节点-&gt;结束节点" />
	</ns2:and_join>
	<ns2:start name="START">
		<transition to="TACHE_AND_SPLIT" desc="开始-&gt;节点A" />
	</ns2:start>
	<ns2:version version="1.0" status="publish" desc="这个版本已经启用" />
	<ns2:template name="example">
		<ns2:category name="example">
			<ns2:parent name="root" />
		</ns2:category>
	</ns2:template>
</ns2:workflow>
 

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

<ns2:workflow name="Example_WorkFlow_XOR" type="MAIN"
	xmlns:ns2="http://www.donkey.com/workflow">
	<ns2:desc>这是一个测试流程生成的</ns2:desc>
	<ns2:end name="END" />
	<ns2:tache name="TACHE_A">
		<transition to="TACHE_XOR_JOIN" desc="到合并节点" />
	</ns2:tache>
	<ns2:tache name="TACHE_B">
		<transition to="TACHE_XOR_JOIN" desc="到合并节点" />
	</ns2:tache>
	<ns2:xor_split name="TACHE_XOR_SPLIT">
		<transition to="TACHE_A" desc="到普通环节TACHE_A">
			<ns2:condition type="SQL">
				<ns2:action>select count(1) from dual where 1 = :value</ns2:action>
				<ns2:param>
					<ns2:exp scope="INSTANCE" name="value" expression="value" />
				</ns2:param>
			</ns2:condition>
		</transition>
		<transition to="TACHE_B" desc="到普通环节TACHE_B" />
	</ns2:xor_split>
	<ns2:xor_join name="TACHE_XOR_JOIN">
		<transition to="TACHE_XOR_JOIN" desc="到合并节点" />
	</ns2:xor_join>
	<ns2:start name="START">
		<transition to="TACHE_XOR_SPLIT" desc="开始-&gt;节点A" />
	</ns2:start>
	<ns2:version version="1.0" status="publish" desc="这个版本已经启用" />
	<ns2:template name="example">
		<ns2:category name="example">
			<ns2:parent name="root" />
		</ns2:category>
	</ns2:template>
</ns2:workflow>
 

 

   LOOP 

 

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

<ns2:workflow name="Example_WorkFlow_XOR" type="MAIN"
	xmlns:ns2="http://www.donkey.com/workflow">
	<ns2:desc>这是一个测试流程生成的</ns2:desc>
	<ns2:end name="END" />
	<ns2:tache name="TACHE_A">
		<transition to="TACHE_XOR_JOIN" desc="到合并节点" default="false" />
	</ns2:tache>
	<ns2:tache name="TACHE_B">
		<transition to="TACHE_LOOP" desc="到合并节点" default="false" />
	</ns2:tache>
	<ns2:xor_split name="TACHE_XOR_SPLIT">
		<transition to="TACHE_A" desc="到普通环节TACHE_A" default="false">
			<ns2:condition type="SQL">
				<ns2:action>select count(1) from dual where 1 = :value</ns2:action>
				<ns2:param>
					<ns2:exp scope="INSTANCE" name="value" expression="value" />
				</ns2:param>
			</ns2:condition>
		</transition>
		<transition to="TACHE_B" desc="到普通环节TACHE_B" default="false" />
	</ns2:xor_split>
	<ns2:loop max="0" name="TACHE_LOOP">
		<transition to="TACHE_B" desc="循环节点-B" default="false">
			<ns2:condition type="SQL">
				<ns2:action>select count(1) from dual where 1 = :value</ns2:action>
				<ns2:param>
					<ns2:exp scope="INSTANCE" name="value" expression="value" />
				</ns2:param>
			</ns2:condition>
		</transition>
		<transition to="TACHE_XOR_JOIN" desc="循环节点-Xor_join"
			default="true" />
	</ns2:loop>
	<ns2:xor_join name="TACHE_XOR_JOIN">
		<transition to="END" desc="节点-&gt;结束节点" default="false" />
	</ns2:xor_join>
	<ns2:start name="START">
		<transition to="TACHE_XOR_SPLIT" desc="开始-&gt;节点A" default="false" />
	</ns2:start>
	<ns2:version version="1.0" status="publish" desc="这个版本已经启用" />
	<ns2:template name="example">
		<ns2:category name="example">
			<ns2:parent name="root" />
		</ns2:category>
	</ns2:template>
</ns2:workflow>
 

 

分享到:
评论

相关推荐

    工作流第一部分1

    - **透明度增加**:工作流状态实时可见,便于监控和审计。 6. **工作流代码**: 压缩包中的"工作流代码"可能包含实现工作流功能的程序代码,可能涉及到编程语言如Java、Python、C#等,以及工作流引擎相关的API...

    轻量级工作流引擎的设计与实现.doc

    工作流引擎是一种软件系统,用于自动化组织内的业务流程,使得工作流程能够按照预定义的规则和步骤进行。轻量级工作流引擎则是针对小型企业和简单业务场景设计的,它具有低耦合、高性能、易部署和维护的特点,适合不...

    用VS2005开发审批工作流(2).pdf

    1. **工作流定义**:工作流是指在组织内部为了完成某项业务而进行的一系列相互关联的任务集合。 2. **工作流管理系统**:是一种软件系统,用于定义、实现以及管理工作流执行的过程。 3. **审批工作流**:特指涉及...

    EMSFLOW工作流开发指南.pdf

    #### 六、EMSFLOW工作流引擎扩展开发 **6.1 工作流常用接口与方法简介** 这部分介绍了EMSFLOW中一些常用的工作流接口和方法,为开发者提供了深入探索的入口。 - **6.1.1 ...

    windchill工作流的学习

    当一个对象被关联到生命周期时,与该生命周期第一个阶段相关联的工作流会被启动。 在Windchill工作流中,内容模块包括了使用工作流工具、定义手动任务、使用任务表单、控制流程流、创建简单和复杂模板以及自动化...

    erp工作流.rar

    3. **工作流框架**:虽然Delphi自身没有内置的工作流引擎,但可以集成第三方工作流框架,如jBPM、NServiceBus等,或自定义实现一个工作流引擎。 4. **事件驱动编程**:通过事件监听和处理,可以实现对工作流状态...

    JBPM 工作流 PPT

    1. **工作流引擎**:核心组件,负责流程实例的生成、管理以及流程运行的监控。 2. **流程定义**:预定义的业务逻辑,定义了流程的行为。 3. **流程实例**:业务流程的具体执行过程,每个实例对应一次流程的执行。 4....

    基于 J2EE架构的工作流引擎的分析与设计 (2005年)

    工作流引擎起着两种关键作用:第一是作为流程的状态转换机,控制流程实例的状态转换;第二是作为流程的路由控制器,通过解释定义的规则来决定流程的下一步流向。 工作流引擎内部主要包含三种模型:机构模型、信息...

    基于camunda源代码编译运行流程引擎

    发布流程模型是使用Camunda的第一个步骤,涉及到以下操作: 1. 设计并创建BPMN流程模型文件。 2. 通过REST API或Camunda管理界面上传流程模型文件。 3. 验证流程模型的有效性。 ##### 4.2 查询流程定义 查询流程...

    cocos2d-x一步两步跳一跳小游戏源代码

    3. `main.cpp`:这是项目的入口文件,负责初始化Cocos2d-x引擎并加载第一个游戏场景。 在“一步两步跳一跳”游戏中,关键的类可能包括以下几种: 1. `GameScene`:游戏主场景,负责整个游戏的逻辑控制,比如游戏...

    SpringBoot第一篇:利用idea快速搭建一个项目

    1. **集成Thymeleaf**:Thymeleaf是一个模板引擎,可以方便地处理静态数据。在`pom.xml`中添加`spring-boot-starter-thymeleaf`依赖。 2. **创建Controller**:在`com.ask.controller`包下创建`IndexController`类,...

    深入浅出Oracle EBS之Workflow实例详解

    这通常涉及到数据库表的设计以及与工作流引擎的集成。 **1.5 先睹为快:一个简单例子(运行)** 这一节介绍了一个简单的例子的实际运行情况,包括启动工作流、执行各个步骤以及最终完成的过程。通过实际操作演示,...

    Activiti6 中文 用户指南 操作手册 开发API

    Activiti6是一款强大的工作流引擎,专为Java开发人员设计,尤其适合初学者。它提供了丰富的功能,包括流程定义、部署、执行以及监控等。本指南将深入介绍Activiti6的各项核心概念和操作。 1. **简介** - **执照**...

    jbpm5/droolflow

    - **规则与过程的集成**:Drools Flow将规则引擎和工作流引擎紧密结合在一起,使得在工作流过程中可以直接调用规则进行决策。 - **集成的方法**:Drools Flow通过在过程中嵌入规则执行节点来实现规则与过程的集成。 ...

    JBPM4介绍开发步骤简介

    1. **定义流程**:这是开发流程的第一步,涉及到在JBPM中创建和设计具体的业务流程模型。通常,这一步会利用图形化的工具如JBPM Designer或直接编辑JPDL/XML文件来完成,以确保流程逻辑的清晰和准确。 2. **部署...

    cms自定义模版引擎

    设计模板引擎的第一步是定义模板语法。这涉及到选择如何表示变量、控制流和函数调用。你需要决定是使用类似于Smarty的花括号语法,还是采用其他如ERB(Embedded Ruby)中的尖括号 `&lt;% %&gt;`。同时,要考虑语法的可读性...

    普元eos7.5开发手册

    - 了解EOS 7.5 的工作流引擎。 - 设计并实现复杂的业务流程。 **2.2 HelloWorld案例描述** - **知识点概述:** - HelloWorld案例是初学者接触EOS 7.5 的第一个项目。 - 通过这个简单的案例,可以快速入门并...

    如何设计一个流程引擎共17页.pdf.zip

    3. **工作流**:流程引擎需支持工作流概念,即任务分配、审批、协作和流转。理解如何处理并发任务、分支条件和循环是重要的。 4. **事件驱动**:流程引擎应能响应内外部事件,例如用户交互、系统通知或定时触发器,...

Global site tag (gtag.js) - Google Analytics