zoukankan      html  css  js  c++  java
  • web工作流管理系统开发之十九 工作流系统的事务处理

     

          工作流系统的每个流程实例,从创建到结束,都有一个较长的过程。流程实例的执行过程可能立即执行,也可能较长时间的等候处理。当处理过程中出现异常或者故障时候,流程需要回滚,并保持流程和业务的同步回滚,不至于业务和流程不同步,或流程本身的轨迹发生紊乱。因此需要在工作流系统中引入事务处理机制。

    事务的属性有四种Atomicity, Consistency, Isolation, Durability,简称ACID。


    • Atomicity 原子 要么是所有的事务操作都成功完成,要么是所有的事务操作都没完成。
      Consistency 一致 当事务开始和结束的时候,涉及事务的资源都必须处于合法的状态。事务不能违返完整性约束或业务规则。
      Isolation 独立 事务内的操作独立于其他所有操作。事务外的操作都看不到处于中间状态的数据。
      Durability 持久 事务一旦成功完成,影响就是持久的,且无法撤消。


    工作流引擎在执行每个流程实例时,通常是将流程分成一个环节一个环节的执行,各环节通过提交动作来完成本环节,并使流程流转到下一环节,每个环节的一次执行动作的过程就是一个流程的短事务处理过程。一个工作流实例运行的生命周期由多个这样的短事务组成。多个流程的短事务保证了流程的长事务一致性。

    无论是流程的短事务还是流程的长事务,都应该具有事务的那4种属性。

    在eworkflow工作流系统中,一个流程实例的生命周期中会包含多个短事务,由多个短事务保证流程的长事务。

    短事务采用了数据库的事务处理,在每个动作的提交之初,启动流程的事务,执行流程的动作提交,同时提交涉及的业务数据,待都提交完成后,提交数据库的事务,将数据持久化入数据库。在动作执行的过程中,一旦有异常抛出,即回滚数据库事务,流程数据和业务数据均回滚到动作提交之初,达到事务的原子性一致性。

    当流程的短事务人为的回滚时,即执行自由流,回退流的时候,流程的长事务通常需要辅助“业务补偿类”来达到数据的一致性。

  • 相关阅读:
    PostgreSQL表空间、数据库、模式、表、用户/角色之间的关系(转)
    PostgreSQL学习手册-模式Schema(转)
    Python中的编码与解码(转)
    HttpRequest中常见的四种Content-Type(转)
    Django中对静态文件的支持(转)
    IPython的基本功能(转)
    GET请求Referer限制绕过总结
    Linux pwn入门教程(6)——格式化字符串漏洞
    CVE-2015-1641 Office类型混淆漏洞及shellcode分析
    我用着差不多的套路收拾差不多的骗子过着差不多的又一天!
  • 原文地址:https://www.cnblogs.com/webreport/p/1746500.html
Copyright © 2011-2022 走看看