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打开的速度好慢。。。
  • 相关阅读:
    php ReflectionObject类
    is_callable
    Zend Framework: Accessing Request, Response & Router Object from anywhere
    (转)zend异常处理
    call_user_func
    zend framework基础教程6—视图
    php func_get_arg
    zend framework基础教程3—创建index.php
    【算法02】3种方法求解斐波那契数列
    【算法01】寻找丑数
  • 原文地址:https://www.cnblogs.com/juqiang/p/25607.html
Copyright © 2011-2022 走看看