BPMN2.0学习——(3)BPMN2.0流程事件(错误事件+信号事件+消息事件)

这篇讲解关于BPMN2.0中的错误事件与信号事件。

一、错误事件

我们可以先看看一个比较简单的错误事件流程图:

BPMN2.0学习——(3)BPMN2.0流程事件(错误事件+信号事件+消息事件)_第1张图片

可以看到 User Task 后面有一个网关,他会根据 User Task 提交的内容来判断是正常结束还是异常结束,错误事件会被定义的错误信息给触发。当满足一定的条件扭转到错误结点就会触发错误信息。

bpmn的错误事件主要用于处理流程中出现的业务异常,这个异常跟java的异常不同。下面给出基本错误结点定义内容:

		
			
		

我们在普通的endEvent标签中添加一个标签就可以定义一个错误事件。

 

二、信号事件

1、信号开始事件

首先我们先来看信号开始事件,流程图如下:

BPMN2.0学习——(3)BPMN2.0流程事件(错误事件+信号事件+消息事件)_第2张图片

信号开始事件与常规的开始事件有一定的区别,我们首先要定义一个signal信号,并且需要在startEvent标签中嵌入一个 signalEventDefinition ,里面有signalRef信号引用属性要对应之前定义的信号id。信号开始事件的触发也有一些不太一样,常规的开始事件通过RuntimeService启动(通过Key或者ID来启动),而这个信号开始事件需要发出信号来启动。

其流程定义文件内容如下:

	
	
	
		
			
		
		
		
		
		
	

2、信号中间事件

信号中间时间定义内容如下:

	
	
	
	
		
			
			
		
		...
		
			
			
		
		...
	

信号中间事件与开始事件有些相似,都先申明信号标志,中间要确定抛出事件还是捕获事件。如果是抛出事件则需要申明 intermediateThrowEvent ,给出id与name,中间定义了 signalEventDefinition 声明,同时对应声明标记 signalRef 是之前信号的id。如果是中间捕获事件则需要申明 intermediateCatchEvent ,name为On Alert 说明我们获取了一个事件。

 

三、消息事件

其实消息事件与信号事件非常类似,信号需要定义signal标签,而消息事件需要定义message标签,具体定义如下:

	
	
	

	
		
			
		
		...
		
			
		
		...
	

可以看到上述我们定义了两个消息事件,分别为 newInvoice 与 payment ,其中 newInvoice 消息定义在开始事件中,而 payment 放在了中间捕获事件。这里注意,信号事件与消息事件可以在整个流程任意一个时间点位置出现。

你可能感兴趣的:(BPMN2.0规范)