ccBPM中的Exception handle

2023-12-14 05:33
文章标签 exception handle ccbpm

本文主要是介绍ccBPM中的Exception handle,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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错误的消息;

这篇关于ccBPM中的Exception handle的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/491297

相关文章

myEclipse失去焦点时报错Unhandled event loop exception的解决方案

一句话:百度杀毒惹的祸。。。。果断卸载后问题解决。

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArra

这个错误说的是一个不可变数组负值给了一个可变的数组。有可能你前面定义的数组是一个可变数组,但是在你其他方法里面用他的时候,他就是一个不可变数组,因为在可变数组拿到别的地方用的时候,他会默认为不可变的,可能这只是一个类里面你只是简单的声明了他吧,并没有进行对他初始化,或者分配什么内存,所以他只是一个不可变的数组,当你在其他地方用他的时候,他就默认为不可变的数组,他可能因为你的没分配内存,而变回不可变

Exception in plugin Android ButterKnife zelezny

所在页面的布局文件命名id有问题,不能有两个下划线,,如tv__name

深入拆解 Java 虚拟机 】Exception异常笔记

【深入拆解 Java 虚拟机 】Exception异常笔记 try-with-resource语法糖finally try-with-resource语法糖 try后对象的close方法都会被运行。 package com.exception.demo;public class Foo implements AutoCloseable {private final Strin

Exception in thread main java.lang.NoClassDefFoundError: org/apache/juli/l

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/juli/l MyEclipse整合免安装版的Tomcat7,------> 看图吧 最后这个就可以在myeclipse里,使用你的tomcat,而不是用.bat打开!!!!

Java中Exception知识点

Exception 不论代码块是否处于try或者catch块中,只要执行该代码块时出现异常,系统都会自动生成一个异常对象try块里声明的变量是局部变量try和catch块后的花括号不可省略捕获多种异常时,多种异常类型之间用竖线|隔开捕获多种异常时,异常变量有隐式的final修饰,因此不能对异常变量进行赋值如果在异常处理代码中使用System.exit(1)退出虚拟机,则finally块不会执行除

chapter12-异常(Exception)——(作业)——day15

目录 457-异常课后作业 458-异常课后作业2 457-异常课后作业 package chapter12.exception.homework;/*** @author LuHan* @version 1.0*/public class Homework01 {public static void main(String[] args) {try {if(args.l

异常(Exception)JAVA072-076

来源:http://www.bjsxt.com/ 1、S01E072_01异常(Exception)机制 (1)JAVA是采用面向对象的方式来处理异常的。处理过程: 抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE。 捕获异常:JRE得到该异常后,寻找相应的代码来处理该异常。JRE在方法的调用栈中查找,从生成异常的

安卓Handle的深入剖析和使用

在公司开发项目你不能说handle用的不多,反正这种更新主线程的机制是必须要懂的。面试的时候也总会叫你回答handle、looper、MessageQueen和Message的区别,所以你不仅仅只是会用而且必须要知道handle的运行机制。本文参考了很多的博主的文章见解,包括里面的原理和图解(http://blog.csdn.net/itachi85/article/details/8035333

java中error,Exception,Throwable的关系

1.java将所有的错误封装为一个对象,其根本父类为Throwable, Throwable有两个子类:Error和Exception。 2.Error是Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然   ThreadDeath 错误是一个“正规”的条件,但它也是 Error 的子类,因为大多数应用程序都不应该试图捕获它。在