OSWorkFlow深入浅出(4)---犹抱琵琶半遮面

经过前面几节的描述,我们基本上让第一个工作流运行起来了,但是很多人肯定都云里雾里的,配置文件为什么要这么些,doAction之流到底有什么用,有这些疑问在正常不过了,初次接触肯定会遇到诸如此类的问题,或许更有甚者,没关系,只要你有耐心阅读,那么我也会耐心的去写(谁怕谁啊!)

1、工作流程

我们为什么要定义helloworld.xml那样的文件,先来说说他所代表的意思吧,看看下面的这张活动图,然后我们在对照着进行解释。

2、详细解释

2.1、初始化节点

回顾一下helloworld.xml文件吧,再对照上面的状态图,其中initial-actions节点中的action代表需要初始化的动作,当一个工作流调用init方法的时候,其中inital-actions中的action将会被执行解析。

<initial-actions>
		<action id="100" name="Start Workflow">
			<results>
				<unconditional-result old-status="Finished"	status="Underway" step="1"/>
			</results>
		</action>
	</initial-actions>
上面定义了一个action,并且是在initial时被执行的,在osworkflow中有一个规定,必须至少有一个action子节点在initial-actions中,因为每一个流程都必须进行初始化操作。初始化的时候或许会发生很多凄美的故事,再来说说action,我们定义了他的id是100,它代表action的序列号,而name属性则可以随便起,但是建议起一个能知其意的名字。

osworkflow工作流的流转是需要靠结果进行流转的,因此在action中我们定义了一个results节点,为什么是复数呢?意味着可以有多个result结果,但是必须有一个无条件的结果unconditional-result节点,当有条件的结果都不满足的时候或者没有有条件的结果的时候,无条件结果就会默认被执行(有条件结果集,我们会在后文中讲解),再来看看step属性(old-status和status属性,在后文中介绍),他表示执行完初始化之后,工作流流转到那个步骤,好了再来对照一下刚才的测试代码,其中是不是有一个init方法。

long id = wf.initialize("first", 100, Collections.EMPTY_MAP);
他就代表在workflow初始化的时候执行action中规定的动作。
2.2、步骤节点

步骤节点是osworkflow中最重要的概念之一,他是工作流的灵魂所在,对照着上面的状态图以及我们的配置文件,我们来看一下,在osworkflow中,步骤代表一下个流程的流转节点,在osworkflow中至少需要有一个step节点。

	<steps>
		<step id="1" name="HELLOWORLD1">
			<actions>
				<action id="1" name="helloWorld action1">
					<results>
						<unconditional-result old-status="Finished"
							status="UnderWay" step="2" />
					</results>
				</action>
			</actions>
		</step>
		<step id="2" name="HELLOWORLD2">
			<actions>
				<action id="2" name="helloWorld action2" finish="true">
					<results>
						<unconditional-result old-status="Finished"
							status="UnderWay" step="-1" />
					</results>
				</action>
			</actions>
		</step>
	</steps>

当初始化完成之后,step指到了step=1这个位置,也就是说目前可执行的step只有1,因此我们运行了下面的代码

wf.doAction(id, 1, Collections.EMPTY_MAP);
当执行完step1的action1之后,result节点有指向了step2节点,我们显示的调用了

wf.doAction(id, 2, Collections.EMPTY_MAP);

这个时候step2的action2顺理成章的被执行了,但是在action2中多了一个属性那就是finish=true,表示执行到该步骤之后,整个工作流完全执行结束。
读者阅读到这里之后,想必osworkflow有了一个大体的认识,但是肯定存在很多疑问,没有关系,带着你的疑问,继续阅读接下来的文章,这也是为什么标题取名为“犹抱琵琶半遮面”的原因。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值