zoukankan
html css js c++ java
工作流中对于事务处理的思考
由于这个engine,需要考虑到COM+/ASP.NET/winform+Webservice,尤其是前者,业务系统的处理,和engine的处理,在事务上是否需要保持一个?咨询了一下ms,答案是不需要。不处理事务,而是按照错误来处理。所以,我写了一段伪码,业务单据的程序,这么修改应该就可以了吧!
public
void
bill.Save()
{
bool
enginesuccess
=
true
;
bool
billsuccess
=
true
;
try
{
db.BeginTransaction();
try
{
WorkflowEngine engine
=
WorkflowEngine.Create();
enginesuccess
=
engine.TransferSomeData(bill.SomeMethod());
//
把数据传递到engine的db中
}
catch
(Exception ex)
{
enginesuccess
=
false
;
//
false可能是异常造成的,也可能是TransferSomeData方法返回的
}
bill.Save();
db.Commint();
}
catch
(Exception ex)
{
billsuccess
=
false
;
//
单据保存失败了
}
if
(
false
==
billsuccess
&&
false
==
enginerror)
{
//
单据保存失败,工作流engine也失败
db.Rollback();
//
业务单据回滚
engine.CancelTransferSomeDataFromEngineDatabase();
//
引擎回滚
MessageBox.Show(“无法启动工作流实例!请系统管理员进行处理!”);
}
else
if
(
true
==
billsuccess
&&
false
==
enginesuccess)
{
//
单据保存成功,工作流engine失败
//
db.Rollback();这句是否需要加上?需要处理吗?
engine.CancelTransferSomeDataFromEngineDatabase();
//
引擎回滚
MessageBox.Show(“无法启动工作流实例!请系统管理员进行处理!”);
}
else
if
(
false
==
billsuccess
&&
true
==
enginesuccess)
{
//
单据保存失败,工作流engine成功
db.Rollback();
//
单据回滚
engine.CancelTransferSomeDataFromEnginDatabase();
//
引擎回滚
}
}
btw,edit new post的时候,page打开的速度好慢。。。
查看全文
相关阅读:
angularjs中设置select的选中项
axios 下载文件
解决Springboot集成ActivitiModel提示输入用户名密码的问题
VMWare14 安装Mac OS系统(图解)
hexo 搜索功能
Nginx禁止IP直接访问网站
不确定理论与多传感器数据融合
Bayes理论与多传感器数据融合
从“中英文思维回译法”看中英思维差异
不确定理论与多传感器数据融合
原文地址:https://www.cnblogs.com/juqiang/p/25607.html
最新文章
python seleium 鼠标操作
Centos7+Mysql8双机热备(主-主复制HA) 操作说明
react新手demo——TodoList
Elasticsearch-基础介绍及索引原理分析
k8s入门教程
【.net】未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序解决办法 目录
node-gyp 在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。
vuex中mapGetters的使用及简单实现原理
vuex里mapState,mapGetters使用详解
iOS开发xib控件删不掉,修改xib运行不发生改变,修改xib不管用
热门文章
Java 获取对象全部属性 包括 父类属性
Activiti6 查询由某人发起的流程请求 设置流程发起人
activiti 工作流动态设置指定节点任务人、责任人、组的实现方式
centos7下安装docker 以及简单使用
Xcode添加库文件framework (转)
iOS-快速开发直播APP所需第三方SDK
The run destination "设备名称" is not valid for Running the scheme '项目名称'.
xcode运行demo报错:Failed to create provisioning profile.cannot be registered to your development team
VMware Xcode真机调试
Xcode 10 无开发者账号通过无线网络真机调试
Copyright © 2011-2022 走看看