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

 

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

 

希望不要太监, ~~

 

【工作流的概念】

 

【基本的工作流模式】

 

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

 

【基本架构】

 

 【自己来实现】

 

 

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

 

    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>
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值