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打开的速度好慢。。。
  • 相关阅读:
    【java】一维数组循环位移方阵
    【java】for循环输出数字金字塔
    C++编程tips
    C++中cin.get 和cin.peek 及其相关的用法
    ubuntu增加字符设备驱动程序/ 操作系统课程设计
    C++ Primer 学习笔记/ 处理类型
    C++学习,顶层const
    C++学习笔记/const和指针
    ubuntu16.04增加系统调用(拷贝)
    Java学习笔记#数组 循环遍历
  • 原文地址:https://www.cnblogs.com/juqiang/p/25607.html
Copyright © 2011-2022 走看看