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打开的速度好慢。。。
查看全文
相关阅读:
C# MJPEG 客户端简单实现
CefSharp 实现多标签页 调用ChromiumWebBrowser的SetAsPopup()后浏览页卡死,的另一种解决方案
opencv findContours 报错解决记录
什么叫网关
分别实现网页播放mp3、flv、wmv、Flash,代码兼容FireFox
ToString()和Convert.ToString()的用法区别
asp,asp.net中关于双引号和单引号的用法
.NET中继承和多态深入剖析(上)
ASP.NET中不常用的另类绑定方法<%$ %>
C#日期函数所有样式大全
原文地址:https://www.cnblogs.com/juqiang/p/25607.html
最新文章
hdu 4003 Find Metal Mineral(树形DP)
hdu 4165 Pills (卡特兰数)
树状数组 (模板)
apache中虚拟目录总是403 Forbidden的问题
VMware虚拟机 ubuntu设置固定IP上网慢的问题
今天重新编译了一下 wxWidgets
RA8875设置新坐标后需要延时的问题及解决。
解决ssh输入用户名后半天没响应的问题:关闭DNS反查。
codeblocks插件说明
wxWidgets中如何使用输入输出重定向调用外部程序
热门文章
重置一下MYSQL的ROOT密码
uIP中UDP协议实现的改进 转载及实现
wxPanel wxDialog wxFrame 的区别
小米mix2s 刷android 10 lineageos 17.1
Debian 手动安装NodeJs后,执行bin\npm报:/usr/bin/env: node: No such file or directory
CefSharp 手动执行CDP(Chrome DevTools Protocol)和监听执行CDP 方法消息(messageId)返回结果
C# OPCAutomation 添加数据项值改变事件DataChange
CefSharp EvaluateScriptAsync执行js 返回对象、页面元素Node、对象数组
miflash刷机出现cannot receive hello packet,和一开始认识9008端口之后不认问题。
CefSharp 修改请求头Referer
Copyright © 2011-2022 走看看