public Rethrow() { DelegateInArgument <Rethrow> argument = new DelegateInArgument <Rethrow> { Name = "constraintArg" }; DelegateInArgument <ValidationContext> argument2 = new DelegateInArgument <ValidationContext> { Name = "validationContext" }; Constraint <Rethrow> item = new Constraint <Rethrow>(); ActivityAction <Rethrow, ValidationContext> action = new ActivityAction <Rethrow, ValidationContext> { Argument1 = argument, Argument2 = argument2 }; RethrowBuildConstraint constraint2 = new RethrowBuildConstraint(); GetParentChain chain = new GetParentChain { ValidationContext = argument2 }; constraint2.ParentChain = chain; constraint2.RethrowActivity = argument; action.Handler = constraint2; item.Body = action; base.Constraints.Add(item); }
private static Constraint ConfirmWithNoTarget() { DelegateInArgument<Confirm> element = new DelegateInArgument<Confirm> { Name = "element" }; DelegateInArgument<ValidationContext> argument = new DelegateInArgument<ValidationContext> { Name = "validationContext" }; Variable<bool> assertFlag = new Variable<bool> { Name = "assertFlag" }; Variable<IEnumerable<Activity>> elements = new Variable<IEnumerable<Activity>> { Name = "elements" }; Variable<int> index = new Variable<int> { Name = "index" }; Constraint<Confirm> constraint = new Constraint<Confirm>(); ActivityAction<Confirm, ValidationContext> action = new ActivityAction<Confirm, ValidationContext> { Argument1 = element, Argument2 = argument }; Sequence sequence = new Sequence { Variables = { assertFlag, elements, index } }; If item = new If { Condition = new InArgument<bool>(env => element.Get(env).Target != null) }; Assign<bool> assign = new Assign<bool> { To = assertFlag, Value = 1 }; item.Then = assign; Sequence sequence2 = new Sequence(); Assign<IEnumerable<Activity>> assign2 = new Assign<IEnumerable<Activity>> { To = elements }; GetParentChain chain = new GetParentChain { ValidationContext = argument }; assign2.Value = chain; sequence2.Activities.Add(assign2); While @while = new While(env => !assertFlag.Get(env) && (index.Get(env) < elements.Get(env).Count<Activity>())); Sequence sequence3 = new Sequence(); If if2 = new If(env => elements.Get(env).ElementAt<Activity>(index.Get(env)).GetType() == typeof(CompensationParticipant)); Assign<bool> assign3 = new Assign<bool> { To = assertFlag, Value = 1 }; if2.Then = assign3; sequence3.Activities.Add(if2); Assign<int> assign4 = new Assign<int> { To = index, Value = new InArgument<int>(env => index.Get(env) + 1) }; sequence3.Activities.Add(assign4); @while.Body = sequence3; sequence2.Activities.Add(@while); item.Else = sequence2; sequence.Activities.Add(item); AssertValidation validation = new AssertValidation { Assertion = new InArgument<bool>(assertFlag), Message = new InArgument<string>(System.Activities.SR.ConfirmWithNoTargetConstraint) }; sequence.Activities.Add(validation); action.Handler = sequence; constraint.Body = action; return constraint; }
private static Constraint ConfirmWithNoTarget() { DelegateInArgument <Confirm> element = new DelegateInArgument <Confirm> { Name = "element" }; DelegateInArgument <ValidationContext> argument = new DelegateInArgument <ValidationContext> { Name = "validationContext" }; Variable <bool> assertFlag = new Variable <bool> { Name = "assertFlag" }; Variable <IEnumerable <Activity> > elements = new Variable <IEnumerable <Activity> > { Name = "elements" }; Variable <int> index = new Variable <int> { Name = "index" }; Constraint <Confirm> constraint = new Constraint <Confirm>(); ActivityAction <Confirm, ValidationContext> action = new ActivityAction <Confirm, ValidationContext> { Argument1 = element, Argument2 = argument }; Sequence sequence = new Sequence { Variables = { assertFlag, elements, index } }; If item = new If { Condition = new InArgument <bool>(env => element.Get(env).Target != null) }; Assign <bool> assign = new Assign <bool> { To = assertFlag, Value = 1 }; item.Then = assign; Sequence sequence2 = new Sequence(); Assign <IEnumerable <Activity> > assign2 = new Assign <IEnumerable <Activity> > { To = elements }; GetParentChain chain = new GetParentChain { ValidationContext = argument }; assign2.Value = chain; sequence2.Activities.Add(assign2); While @while = new While(env => !assertFlag.Get(env) && (index.Get(env) < elements.Get(env).Count <Activity>())); Sequence sequence3 = new Sequence(); If if2 = new If(env => elements.Get(env).ElementAt <Activity>(index.Get(env)).GetType() == typeof(CompensationParticipant)); Assign <bool> assign3 = new Assign <bool> { To = assertFlag, Value = 1 }; if2.Then = assign3; sequence3.Activities.Add(if2); Assign <int> assign4 = new Assign <int> { To = index, Value = new InArgument <int>(env => index.Get(env) + 1) }; sequence3.Activities.Add(assign4); @while.Body = sequence3; sequence2.Activities.Add(@while); item.Else = sequence2; sequence.Activities.Add(item); AssertValidation validation = new AssertValidation { Assertion = new InArgument <bool>(assertFlag), Message = new InArgument <string>(System.Activities.SR.ConfirmWithNoTargetConstraint) }; sequence.Activities.Add(validation); action.Handler = sequence; constraint.Body = action; return(constraint); }
private static Constraint NoCompensableActivityInSecondaryRoot() { DelegateInArgument <ValidationContext> argument = new DelegateInArgument <ValidationContext> { Name = "validationContext" }; DelegateInArgument <CompensableActivity> argument2 = new DelegateInArgument <CompensableActivity> { Name = "element" }; Variable <bool> assertFlag = new Variable <bool> { Name = "assertFlag", Default = 1 }; Variable <IEnumerable <Activity> > elements = new Variable <IEnumerable <Activity> > { Name = "elements" }; Variable <int> index = new Variable <int> { Name = "index" }; Constraint <CompensableActivity> constraint = new Constraint <CompensableActivity>(); ActivityAction <CompensableActivity, ValidationContext> action = new ActivityAction <CompensableActivity, ValidationContext> { Argument1 = argument2, Argument2 = argument }; Sequence sequence = new Sequence { Variables = { assertFlag, elements, index } }; Assign <IEnumerable <Activity> > item = new Assign <IEnumerable <Activity> > { To = elements }; GetParentChain chain = new GetParentChain { ValidationContext = argument }; item.Value = chain; sequence.Activities.Add(item); While @while = new While(env => assertFlag.Get(env) && (index.Get(env) < elements.Get(env).Count <Activity>())); Sequence sequence2 = new Sequence(); If @if = new If(env => elements.Get(env).ElementAt <Activity>(index.Get(env)).GetType() == typeof(System.Activities.Statements.CompensationParticipant)); Assign <bool> assign2 = new Assign <bool> { To = assertFlag, Value = 0 }; @if.Then = assign2; sequence2.Activities.Add(@if); Assign <int> assign3 = new Assign <int> { To = index, Value = new InArgument <int>(env => index.Get(env) + 1) }; sequence2.Activities.Add(assign3); @while.Body = sequence2; sequence.Activities.Add(@while); AssertValidation validation = new AssertValidation { Assertion = new InArgument <bool>(assertFlag), Message = new InArgument <string>(System.Activities.SR.NoCAInSecondaryRoot) }; sequence.Activities.Add(validation); action.Handler = sequence; constraint.Body = action; return(constraint); }
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); }