在使用TransactionScopeActivity的时候,将所有的Code放入其中。有可能最后的运行将走到该Scope的结尾便结束。不知道原因,后来细细排查才发现:
要使用TransactionScopeActivity 那么WorkflowRuntime必须添加SqlPersistentService服务,没有该服务,TransactionScopeActivity在即将结束的时候无法持久化,也就代表该Scope范围认为里面的事务还未成功执行完毕,因此一方面执行会滚事务,另一方面,将跳转到FaultHandler中执行相应的CompensateActivity(如果添加了FaultHandler的话)
另外一个值得注意的细节是
在使用TransactionScopeActivity时,若你是调试的。那么会发现在完成完成TransactionScopeActivity时,在InstanceState表里面会添加上一条临时的数据,该数据就是你创建的WorkfowInstance,而当你完成该工作流实例时,这条临时数据又会被删除,也许还有其他的表有动作,但是我没有继续试探