Share via


WF-全扫描(4)-事务

Transaction: 事务处理这个概念在计算机领域经常提到,不论是Java世界还是.NET平台都涉及到一致性的问题。这就好比你想汇款,不论你是通过网上银行还是通过邮政汇款转账,你帐面上的资金总额的进出总是一个额定的数据。在计算机的世界里类似,不论用户怎样存取数据,数据库和客户端之间总要保持一致,一边出了多少,另一边就要进去多少,这也就是事务处理特性之一的一致性,那么如果在数据读入读出的过程中出现错误,那么整个过程就要回滚,这也就是事务处理的特性----原子性。那么当一个客户在通过客户端向银行账户存取款时,其他访问该账户的请求是被拒绝的,这就是事务处理的绝缘性。此外数据必须能够长久的保存在数据库中,支持长时间的运行。事务处理具有ACID的特性,就是说原子性,一致性,持久性和绝缘性 在WF4.0事务处理中,有两个和事务处理有关的类,一个是Transactionscope,一个是TransactionReceivescope,这两个类是不一样的,第一个是用于工作流中的局部的事务处理,其中定义的变量在该事务对象的范围内有效,第二个是用于两个相互通讯的工作流,每个工作流都有自己的事务处理机制,但是需要通过TransactionReceivescope来完成同步。举个简单的例子,财务系统和报销系统,这个两个系统都有自己的事务处理,即分别各有一个Transactionscope,在实际的工作中,报销系统与财务系统相互通讯,当员工从报销系统向财务系统发送消息的时候,需要保证一致性,绝缘性,持久性和原子性,在这种情况下就需要用到TransactionReceivescope. 事务处理采用Sqlserver数据库是最理想的,效率最高,采用其他数据库也可以,目前WF4.0还不支持BPEL(早期的版本支持)。