zoukankan      html  css  js  c++  java
  • wf的事务控制

        1.关于事务
        wf中的transaction Scope是使用transaction Scope这个Activity实现的,在lab08描述了一个银行转帐的场景。
     帐务表A减少100元,帐务表B增加100元,做为一个完整的事务,要么完全实现要么完全回退。不过如果我碰到这种应用场景,估计不会这样做。我的理解是transaction Scope Activity是建立再MTS上的分布式事务,如果是同一个数据库内部实现用数据库的事务控制会有性能优势,而且这样的场景如果有复用的需求,我会放到一个Activity中实现。不过这里只是演示,没有必要较真。许多事务控制还是需要transaction Scope Activity的,比如常见的接口程序里面,流程一般都是数据入库,进行逻辑处理或者逻辑校验如果成功可能还需要删除接口文件。这是一个需要事务控制的地方,而且也无法用数据库事务来控制,以前都考虑MTS在工作流中就要用到transaction Scope Activity。
    2.如何使用transaction Scope Activity
     2.1 从工具箱中脱动transaction Scope Activity到设计界面
     2.2 这时候我们看到设计界面上会出现一个transactionScopeActivity的区域,需要放入事务中的Activity都应该脱入其中。
     2.3 最后,要脱一个throw Activity进入这个区域,当异常发生时候会运行这个Activity。在这个Activity的属性中要指定Fault
      fautl属性定义了抛出的异常,可以是自定义的的Exception.
     2.4 view faults在那里不用我说了吧,在这里加入FaultHandle Activity,并指定属性捕获特定异常,看起来很象是ConditionAcitivityGroup。
      在这里面放个code Activity写入异常的处理逻辑。
     整个的处理过程看起来非常象try catch的逻辑
    3.上面的例子没有考虑事务补偿问题,如果事务失败需要补偿的话怎么办
     3.1 用CompensatableTransactionScopeActivity代替transaction Scope Activity
     3.2 throwActivity这个时候要放到CompensatableTransactionScopeActivity区域外面
     3.3 补偿逻辑用Compensate activity实现,在view Fault中加入Compensate activity。

  • 相关阅读:
    clearfix 清除浮动的问题
    python第四十五课——继承性之多继承
    Linux基础第六课——grep|awk|sort|uniq
    Linux基础第五课——用户管理
    Linux基础第四课——文件操作
    Linux第三课——目录操作
    Linux基础第二课——系统架构
    Linux基础第一课——基础知识了解
    01 http协议概念及工作流程
    18- php Redis扩展编译
  • 原文地址:https://www.cnblogs.com/lodestar/p/656146.html
Copyright © 2011-2022 走看看