驰骋工作流引擎,表单引擎工作事务单元测试报告

各位浙商银行:

 

事务问题一直是浙商银行客户反复提出尚未解决的问题,经过与浙商银行的同事一起讨论,我们把流程引擎的底层进行了一些改造,让其支持事务,并且做出如下测试案例,请各位同事与客户进行评估与测试。

关于bp架构的事务综述

驰骋的bp框架所有执行update,delete,insert 的sql ,都是通过DBAccess.RunSQL()这个方法执行的,不管是直接执行的sql,还是实体类执行的增删改查的sql。

所以该问题的解决重点就是DBAccess.RunSQL()这个方法。

执行SQL 部分:

正常执行(验证通过):

代码如下

String bussID="zhoupeng";

//开始事务.

DBAccess.DoTransactionBegin(bussID);

 

String sql="UPDATE Port_Emp Set Name='admin1' where no='admin' ";

DBAccess.RunSQL(sql);

 

DBAccess.DoTransactionCommit(buessID); //提交事务.

执行后回滚(验证通过)

代码

 

<%

 

String bussID="zhoupeng"; //定义事务的ID.

//开始事务.

DBAccess.DoTransactionBegin(bussID);

 

String sql="UPDATE Port_Emp Set Name='admin1' where no='admin' ";

DBAccess.RunSQL(sql);

 

DBAccess.DoTransactionRollback(bussID); //回滚事务.

return;

 

//DBAccess.DoTransactionCommit(buessID); //提交事务.

//return;   

 

%>

 

实体类更新部分

 

正常执行更新(测试通过)

 

 

执行后回滚 (测试通过)

 

 

 

流程引擎的重要过程

在流程引擎的操作中,我们列出了如下方法对事务有一定的要求。

创建workid(测试通过)

正常创建

代码如下:

 

首先删除:

 

delete from ND301Rpt

delete from wf_generworkflow

 

执行后代码:

 

 

执行两次没有错误。

 

撤销创建

代码如下:

 

先执行删除后的效果:

 

 

多次刷新无数据,与上图一样,说明回滚成功:

 

 

执行发送(测试通过)

错误发送(没有指定接受人的情况):

源代码:

 

这时候,死锁产生,因为没有释放连接,kill 99; 改造代码实现如下步骤。

 

 

改造后的代码:

 

控制台已经输出了异常的消息,如控制台图。

流程状态,仍然是空白状态:

多次执行数据仍然与上图相同,说明已经执行了回滚。

 

改造后,增加了接收人代码,如下图:

 

正常发送:

代码如下:

 

提示信息正常:

撤销发送:

首先执行删除语句:

编码如下:

 

可以完整执行,执行后,查询应该没有数据,就符合预期。

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/zhmengjuan/article/details/85278778
今日推荐