private Constraint ProcessChildSubtreeConstraints() { DelegateInArgument <TransactedReceiveScope> argument = new DelegateInArgument <TransactedReceiveScope> { Name = "element" }; DelegateInArgument <ValidationContext> argument2 = new DelegateInArgument <ValidationContext> { Name = "validationContext" }; DelegateInArgument <Activity> child = new DelegateInArgument <Activity> { Name = "child" }; Variable <bool> nestedCompensableActivity = new Variable <bool> { Name = "nestedCompensableActivity" }; Constraint <TransactedReceiveScope> constraint = new Constraint <TransactedReceiveScope>(); ActivityAction <TransactedReceiveScope, ValidationContext> action = new ActivityAction <TransactedReceiveScope, ValidationContext> { Argument1 = argument, Argument2 = argument2 }; Sequence sequence = new Sequence { Variables = { nestedCompensableActivity } }; ForEach <Activity> item = new ForEach <Activity>(); GetChildSubtree subtree = new GetChildSubtree { ValidationContext = argument2 }; item.Values = subtree; ActivityAction <Activity> action2 = new ActivityAction <Activity> { Argument = child }; 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>(child) }; equal.Left = type; equal.Right = new InArgument <Type>(context => typeof(System.Activities.Statements.TransactionScope)); @if.Condition = equal; AssertValidation validation = new AssertValidation { IsWarning = 1 }; NestedChildTransactionScopeActivityAbortInstanceFlagValidator validator = new NestedChildTransactionScopeActivityAbortInstanceFlagValidator { Child = child }; validation.Assertion = validator; validation.Message = new InArgument <string>(env => System.ServiceModel.Activities.SR.AbortInstanceOnTransactionFailureDoesNotMatch(child.Get(env).DisplayName, this.DisplayName)); validation.PropertyName = "AbortInstanceOnTransactionFailure"; @if.Then = validation; sequence2.Activities.Add(@if); If if2 = new If(); Equal <Type, Type, bool> equal2 = new Equal <Type, Type, bool>(); ObtainType type2 = new ObtainType { Input = new InArgument <Activity>(child) }; equal2.Left = type2; equal2.Right = new InArgument <Type>(context => typeof(CompensableActivity)); if2.Condition = equal2; Assign <bool> assign = new Assign <bool> { To = new OutArgument <bool>(nestedCompensableActivity), Value = new InArgument <bool>(true) }; if2.Then = assign; sequence2.Activities.Add(if2); action2.Handler = sequence2; item.Body = action2; sequence.Activities.Add(item); AssertValidation validation2 = new AssertValidation { Assertion = new InArgument <bool>(env => !nestedCompensableActivity.Get(env)), Message = new InArgument <string>(System.ServiceModel.Activities.SR.CompensableActivityInsideTransactedReceiveScope), PropertyName = "Body" }; sequence.Activities.Add(validation2); 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); }