Introduction
This is part 3 of a 4 part blog explaining how the BPM engine functions under the covers when “faults” occur, be they unhandled technical faults or failures at the engine level.
Part 1 can be found here.
Part 3: Understanding BPM Messages Rollback
Now that we’ve seen how the important SOAINFRA tables are used by the engine we can look at how unhandled exceptions are rolled back by the engine to the last dehydration point. Remember, using appropriate fault policies and catch activities with BPM should avoid the vast majority of rollbacks but as mentioned previously, these can still occur.
Pattern 1 – Async – Async
We can assume here that no fault policy framework exists and that no process level fault handling exists either. Given that this scenario is completely asynchronous we are not going to be able to generate any timeouts, we’ll have to simulate a failure at the engine level by introducing a failing script activity (map string to number) into the process….
…now running the test we have a failure….
Remember we haven’t caught this anywhere, how can we recover this instance ? Let’s take a look at the relevant tables….
DLV_MESSAGE
…i.e. an INVOKE message for the “start” activities in the client process of “STATE_HANDLED” and an INVOKE message for the “start” activity of the called process in state “STATE_UNRESOLVED”
WORK_ITEM
…i.e. a WORK_ITEM for the “Receive” activity in the client process of state “open_pending_complete
DLV_SUBSCRIPTION
…i.e. a subscription of state UNRESOLVED for the called service.
So we can infer from the DLV_MESSAGE table that the instance has been rolled back to the last dehydration point, i.e. the “start” activity in the called service so we should be able to “recover” from here….
Pattern 2 – Async – Sync
For this scenario we will force an EJB timeout by setting the value of the DBAdapter timeout to 400 seconds (greater than the EJB timeout of 300 seconds)….
…and we’ll set the stored procedure to run for 500 seconds.
When we run the test we see the following in the flow trace….
… here we see that there has been a “TransactionRolledBackLocalException”, that the BPM process “TestDBTimeout” faulted after around 300 seconds (EJB timeout) and the DBAdapter itself timed out over a minute later.
So where does this leave the underlying tables ?
DLV_MESSAGE
…i.e. an INVOKE message for the “start” activity in the client process of “STATE_UNRESOLVED”.
We can infer from the DLV_MESSAGE table that the instance has been rolled back to the last dehydration point, i.e. the “start” activity in the client process so we should be able to “recover” from here….
Pattern 3 – Async with Acknowledgement – Sync
Again we will force an EJB timeout by setting the value of the DBAdapter timeout to 400 seconds (greater than the EJB timeout of 300 seconds)….
…the results are pretty similar to the previous pattern except this time the calling process remains in a “Running” state.
So where does this leave the underlying tables ?
DLV_MESSAGE
…i.e. an INVOKE message for the “start” activity in the client process of “STATE_HANDLED”.
WORK_ITEM
…i.e. a WORK_ITEM for the “CatchEvent” timer activity in the client process of state “open_pending_complete
We can infer from the above tables that the instance has been rolled back to the timer activity in the client process…
Summary
In the third part in the series we have looked at what happens when a process instances rolls back & what we see in the appropriate SOAINFRA tables. In the next part we will look at how we can recover these rolled back process instances.
All site content is the property of Oracle Corp. Redistribution not allowed without written permission
相关推荐
–Abstactcomponents –compile-time “instances” with per-instance state and a way to access the state of other instances –Atomic sections & data race analysis »AverageTinyOSapplication: 35 modules,...
包含instances_minival2014.json和instances_valminusminival2014.json文件
详细讲述了weka中instances类的使用,清晰,值得学习
detectron中maskrcnn需要的instances_valminusminival2014.json和instances_minival2014.json,实操可用,欢迎下载!!
Making Multiple Instances of an Application run in the Same Process Space as different Threads (56KB)
linux+programming+instances网络编程教程代码.
Semantic Scene Completion via Integrating Instances and Scene In-the-Loop
– Automatic detection of added and removed instances without any additional code. – Rigidbody and physics support. – Custom animation event system. – Easy to use interface. Crowd Animations ...
linux programming instances网络编程教程..
MSCOCO2014, instances_trainval35k.json.zip, 都在一个json文件中,比如ssd源代码使用的就是整体json
In this paper, we first introduce a simple and flexible framework to segment instances and semantics in point clouds simultaneously. Then, we propose two approaches which make the two tasks take ...
此为coco数据集的,关于Instance任务的验证集json标注文件
Independent Component Analysis 很不错的ica讲解。Designations used by companies ... In all instances where John Wiley & Sons, Inc., is aware of a claim, the product names appear in initial capital or ALL
instances_train2014.json && instances_val2014.json && person_keypoints_train2014.json && person_keypoints_val2014.json
从整个数据集随机采样获得的11000个图片以及其标注的数据, 适用于方法的初级快速验证. 可以有效节约时间.
instances_minival2014.json.zip Keras实现mask R-CNN需要的数据集
How Netflix Tunes EC2 Instances for Performance by Brendan Gregg
oenstack获取云主机信息,包括主机名,ip地址,云硬盘列表等
C#高级编程 .net framework 4.5.1 的例子