ccBPM中的Exception handle

本文详细解析ccBPM中如何通过block的exceptionhandlebranch捕获异常,以及不同步骤如Sendstep(同步与异步)、Transformationstep和Controlstep如何触发异常。通过实例演示了设置异常处理策略并在消息发送时遇到接收通道错误的情况,解释了异常处理的过程与BPM状态变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ccBPM中只有通过block的exception handle branch才能对exception进行捕获。

ccBPM中可以触发exception的step type有:
1)Send step
Asynchronous Send step:只有当发生了permanent system error的时候才会触发exception
Synchronous Send step:除了permanent system error之外,当接收到相应的fault message的时候也会触发exception.
2)Transformation step
当发生了permanent system error的时候会触发exception(通常是message mapping中发生了错误)
3)Control step
Control step有三种功能:结束当前process,触发exception和生成Alert信息。

这种触发exception的steps很容易理解,但在使用Send step特别是Asynchronous Send step触发exception的时候通常会引起我们的异议,我们会感觉BPM中Send step发生了系统错误,但是却没有触发exception。下面通过一个例子来说明这一异议。
在integaration process中放置一个Block,并创建一个exception handle branch,再在Block中拖入一个Send step,并将mode设置为Asynchronous,Acknowledge选择为transport,Exception设置为Block中handle的exception,其他一切配置完成后,测试消息发送,并且消息可以成功发送。这时故意将receive channel设置错误,使得消息无法被成功接受,再测试消息发送后,SXI_MONITOR中显示如下:
BPM停止在Send step上,虽然有错误,但是没有触发exception;



双击打开该消息,发现Ack为system transient acknowledgement;


通过SXMB_MONI_BPE查看BPM的状态,发现BPM当前仍然在等待Ack;


这时,通过message monitor去cancel掉这条处于waiting状态正在retry sending或处于system error状态的消息;


再去查看SXI_MONITOR,发现Send step触发了Exception;


双击打开带有错误Ack的message,此时的Ack为System Permanent Acknowledgement。



针对BPM exception归纳如下几点:
1)只有当workflow中发生错误的时候才可能触发exception,pipeline和adapter上发生的错误不会触发workflow的exception;

2)可以把Ack分为
Positive acknowledgment
Permanent negative acknowledgment
Temporary (transient) negative acknowledgment
Positive acknowledgment会使得workflow继续往下执行,Permanent negative acknowledgment会触发exception,而Temporary (transient) negative acknowledgment并不会触发exception,通常这样的ack发生时,可以在message monitor中resend错误的消息;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值