Exemple #1
0
        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;
 }
Exemple #3
0
        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);
        }
Exemple #5
0
        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);
        }