exception-handler 异常处理
jbpm异常可以定义相应的处理类exception-handler
exception-handler有可见域,流程(process-instance内定义的exception-handler在整个流程内的每个节点可见)
在节点内定义的exception-handler的作用于在节点内部,会覆盖全局的exception-handler的作用域
jbpm异常主要是执行绑定到节点上的action或其他操作(委托类)时抛出的,流程流转控制本身一般不会出问题
可以为每种类型的异常定义异常处理列表
注意,Jbpm的异常处理机制与java异常处理不完全相似。在java中,一个捕获的异常可以影响控制流,而在Jbpm中,流程不会被Jbpm异常处理机制所改变。异常要么被捕获,要么不捕获,没有被捕获的异常被抛向客户端(例如客户端调用token.signal()),而被捕获的异常则是通过Jbpm的exception-handler,对于被捕获的异常,图执行仍会继续,就像没有异常发生一样。 在处理异常的动作中,可以使用Token.setNode(Node node)把令牌放入图中的任何节点。
<?xml version="1.0" encoding="UTF-8"?>
<process-definition
xmlns="urn:jbpm.org:jpdl-3.1" name="test">
<!—这里的exception-handler对整个processInstance起作用-->
<exception-handler>
<action class="gj.action.ProcessException"/>
</exception-handler>
<start-state name="start">
<transition name="to state" to="state1"></transition>
</start-state>
<state name="state1">
<event type="node-leave">
<action name="enter node action" class="gj.action.EnterStateNodeAction"></action>
</event>
<transition name="to end" to="end1">
<action name="action1" class="gj.action.ProcessStateAction"></action>
</transition>
</state>
<end-state name="end1"></end-state>
</process-definition>
ProcessException类的代码如下:
package gj.action;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
public class ProcessException implements ActionHandler{
public void execute(ExecutionContext executionContext) throws Exception {
String errorMsg=executionContext.getException().getMessage();
System.out.println("异常类型"+executionContext.getException().toString()+" 异常消息:"+errorMsg);
}
}
这个类就可以用来处理整个ProcessInstance中发生的异常。其它在各种类型node里和在transition里定义的exception-handler的处理方式类似,只不过其作用范围仅限制为当前的node或transition。
小结
看到这里,我们已经对JPDL的流程定义语言有了较深的理解,接下来我们可以自己动手写一些流程定义的文件,以此加深对JPDL的理解。我们来看一下下面的流程定义文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="" name="test">
<!—定义一个开始结点,名为start,指向fork1-->
<start-state name="start">
<transition name="" to="fork1"></transition>
</start-state>
<!—在fork1分支结点上,我们定义了两个走向(transition)tr1和tr2,其中tr1指向top-state节点,tr2指向一个process-state,当token到达for1时会自动形成两个child token,沿着tr1和tr2的指向继续向执行-->
<fork name="fork1">
<transition name="tr1" to="top-state"></transition>
<transition name="tr2" to="test-sub-process"></transition>
</fork>
<!—top-state是一个state类型的节点,也就是前面提到的手工节点-->
<state name="top-state">
<transition name="to test-task" to="test-task"></transition>
</state>
<!—test-task是一个task-node类型的节点,它可以有多个task节点,生成我们的taskInstance,这里我们定义了三个节点-->
<task-node name="test-task" signal="first">
<task name="task-a"></task>
<task name="task-b"></task>
分享到:
相关推荐
Laravel开发-laravel-jsonaware-exception-handler .zip
Laravel开发-enhanced-exception-handler Laravel的增强异常处理程序
Laravel开发-laravel-jsonaware-exception-handler Laravel JSON感知异常处理程序
spring-rest-exception-handler, 一个方便的RESTful api Spring MVC 异常 spring REST异常处理程序 这个项目的目的是为for提供一个方便的异常处理程序( 解析器),它满足了错误响应的最佳实践。 处理自定义异常。...
git clone https://github.com/master-atul/react-native-exception-handler-example yarn install react-native run-ios --configuration Release或react-native run-android --variant=release 即使在开发模式...
React本机异常处理程序 ... 该模块有助于防止RN Apps突然崩溃,而不会向用户显示优美的消息。 在当前情况下: In DEV mode , you get a RED Screen error pointing your errors. In Bundled mode , the app just ...
composer require nordsoftware/lumen-chained-exception-handler 用法 将$app->singleton()调用替换为以下内容,该调用将在bootstrap/app.php注册具体异常处理程序: $ app -> instance ( Illuminate \ ...
sitecore-exception-handler Sitecore异常处理程序模块
异常处理程序介质 本文示例的Spring Boot应用程序: 要求 为了构建和运行应用程序,您需要: 为您的IDE下载Lombok插件。... 确保您有一个名为“ exception”MySQL数据库。 从项目根目录运行: mvn spring-boot:run
springBoot-errorException处理程序
哨兵例外处理程序Reekoh IoT平台的Sentry异常处理程序插件
Laravel开发-exception_handler Laravel 5网站的异常处理程序。
在 operator new 因回应一个无法满足的内存请求而抛出一个 exception 之前,它先调用一个可以由客户指定的被称为 new-handler 的 error-handling function(错误处理函数)。(这并不完全确切,operator new 真正...
script src =" node_modules/all-error-handler/index.min.js " > </ script > 在Node.js中: let AllErrorHandler = require ( "all-error-handler" ) ;用法// Initialize object and pass a callback ...
本文实例讲述了set_exception_handler函数在ThinkPHP中的用法。分享给大家供大家参考。具体方法如下: 函数: 复制代码 代码如下:string set_exception_handler ( callback $exception_handler ) 定义和用法: set_...
3.3.27 exception-handler 异常处理 31 小结 33 四、流程中任务的分配 37 4.1 assignment-handler方式的任务分配 38 4.2 swimlane方式的任务分配 39 五、JBPM持久化 42 5.1 特殊数据库支持 42 5.2 JBPM数据库的安装 ...
spring-restful-exception-handler.zip,用于统一错误处理的Spring自定义异常处理程序批注。用于处理Spring项目中的自定义异常的自定义批注。
安装$ npm install express-graceful-shutdown-handler原料药 var gracefulShutdown = require ( 'express-graceful-shutdown-handler' ) 注意要求模块添加一个uncaughtException侦听器。gracefulShutdown(选项) ...
Laravel 异常通知程序 | Laravel 5、6、7 和 8 ... 要求Laravel 5.2 +,6、7或8+ 安装说明从终端运行的项目根文件夹中: Laravel 7+ 使用: composer require jeremykenedy/laravel-exception-notifier Laravel 6 及以
NULL 博文链接:https://vb2005xu.iteye.com/blog/618326