private Constraint ProcessParentChainConstraints() { DelegateInArgument <System.Activities.Statements.TransactionScope> element = new DelegateInArgument <System.Activities.Statements.TransactionScope> { Name = "element" }; DelegateInArgument <ValidationContext> argument = new DelegateInArgument <ValidationContext> { Name = "validationContext" }; DelegateInArgument <Activity> argument2 = new DelegateInArgument <Activity> { Name = "parent" }; Constraint <System.Activities.Statements.TransactionScope> constraint = new Constraint <System.Activities.Statements.TransactionScope>(); ActivityAction <System.Activities.Statements.TransactionScope, ValidationContext> action = new ActivityAction <System.Activities.Statements.TransactionScope, ValidationContext> { Argument1 = element, Argument2 = argument }; Sequence sequence = new Sequence(); ForEach <Activity> item = new ForEach <Activity>(); GetParentChain chain = new GetParentChain { ValidationContext = argument }; item.Values = chain; ActivityAction <Activity> action2 = new ActivityAction <Activity> { Argument = argument2 }; Sequence sequence2 = new Sequence(); If @if = new If(); Equal <Type, Type, bool> equal = new Equal <Type, Type, bool>(); ObtainType type = new ObtainType { Input = argument2 }; equal.Left = type; equal.Right = new InArgument <Type>(context => typeof(System.Activities.Statements.TransactionScope)); @if.Condition = equal; Sequence sequence3 = new Sequence(); AssertValidation validation = new AssertValidation { IsWarning = 1 }; AbortInstanceFlagValidator validator = new AbortInstanceFlagValidator { ParentActivity = argument2, TransactionScope = new InArgument <System.Activities.Statements.TransactionScope>(context => element.Get(context)) }; validation.Assertion = validator; validation.Message = new InArgument <string>(System.Activities.SR.AbortInstanceOnTransactionFailureDoesNotMatch); validation.PropertyName = "AbortInstanceOnTransactionFailure"; sequence3.Activities.Add(validation); AssertValidation validation2 = new AssertValidation(); IsolationLevelValidator validator2 = new IsolationLevelValidator { ParentActivity = argument2, CurrentIsolationLevel = new InArgument <System.Transactions.IsolationLevel>(context => element.Get(context).IsolationLevel) }; validation2.Assertion = validator2; validation2.Message = new InArgument <string>(System.Activities.SR.IsolationLevelValidation); validation2.PropertyName = "IsolationLevel"; sequence3.Activities.Add(validation2); @if.Then = sequence3; sequence2.Activities.Add(@if); action2.Handler = sequence2; item.Body = action2; sequence.Activities.Add(item); action.Handler = sequence; constraint.Body = action; return(constraint); }
private Constraint ProcessChildSubtreeConstraints() { DelegateInArgument <System.Activities.Statements.TransactionScope> argument = new DelegateInArgument <System.Activities.Statements.TransactionScope> { Name = "element" }; DelegateInArgument <ValidationContext> argument2 = new DelegateInArgument <ValidationContext> { Name = "validationContext" }; DelegateInArgument <Activity> delegateArgument = new DelegateInArgument <Activity> { Name = "child" }; Variable <bool> variable = new Variable <bool>(); Constraint <System.Activities.Statements.TransactionScope> constraint = new Constraint <System.Activities.Statements.TransactionScope>(); ActivityAction <System.Activities.Statements.TransactionScope, ValidationContext> action = new ActivityAction <System.Activities.Statements.TransactionScope, ValidationContext> { Argument1 = argument, Argument2 = argument2 }; Sequence sequence = new Sequence { Variables = { variable } }; ForEach <Activity> item = new ForEach <Activity>(); GetChildSubtree subtree = new GetChildSubtree { ValidationContext = argument2 }; item.Values = subtree; ActivityAction <Activity> action2 = new ActivityAction <Activity> { Argument = delegateArgument }; Sequence sequence2 = new Sequence(); If @if = new If(); Equal <Type, Type, bool> equal = new Equal <Type, Type, bool>(); ObtainType type = new ObtainType { Input = new InArgument <Activity>(delegateArgument) }; equal.Left = type; equal.Right = new InArgument <Type>(context => typeof(CompensableActivity)); @if.Condition = equal; Assign <bool> assign = new Assign <bool> { To = new OutArgument <bool>(variable), Value = new InArgument <bool>(true) }; @if.Then = assign; sequence2.Activities.Add(@if); action2.Handler = sequence2; item.Body = action2; sequence.Activities.Add(item); AssertValidation validation = new AssertValidation(); Not <bool, bool> expression = new Not <bool, bool>(); VariableValue <bool> value2 = new VariableValue <bool> { Variable = variable }; expression.Operand = value2; validation.Assertion = new InArgument <bool>(expression); validation.Message = new InArgument <string>(System.Activities.SR.CompensableActivityInsideTransactionScopeActivity); validation.PropertyName = "Body"; sequence.Activities.Add(validation); action.Handler = sequence; constraint.Body = action; return(constraint); }