コード例 #1
0
        public void SplitNamesReturnSuccessfully()
        {
            //Arrange
            var conditionsWithLogic = new List <ConditionDefinition>();
            var conditionWithLogic  = new ConditionDefinition()
            {
                partitions = new List <PartitionDefinition>()
                {
                    new PartitionDefinition()
                    {
                        size = 100, treatment = "on"
                    }
                }
            };

            conditionsWithLogic.Add(conditionWithLogic);
            var splitCache = new Mock <ISplitCache>();
            var splits     = new List <SplitBase>();

            splits.Add(new Split()
            {
                name = "test1", changeNumber = 10000, killed = false, trafficTypeName = "user", seed = -1, conditions = conditionsWithLogic
            });
            splits.Add(new Split()
            {
                name = "test2", conditions = conditionsWithLogic
            });
            splits.Add(new Split()
            {
                name = "test3", conditions = conditionsWithLogic
            });
            splits.Add(new Split()
            {
                name = "test4", conditions = conditionsWithLogic
            });
            splits.Add(new Split()
            {
                name = "test5", conditions = conditionsWithLogic
            });
            splits.Add(new Split()
            {
                name = "test6", conditions = conditionsWithLogic
            });
            splitCache.Setup(x => x.GetAllSplits()).Returns(splits);

            var manager = new RedisSplitManager(splitCache.Object);

            //Act
            var result = manager.SplitNames();

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(6, result.Count);
            var firstResult = result.Find(x => x == "test1");

            Assert.AreEqual(firstResult, "test1");
        }
コード例 #2
0
        private void AddConditionButton_Click(object sender, EventArgs e)
        {
            ConditionDefinition newDef = new ConditionDefinition();

            newDef.DBID = GetNewDBID();
            newDef.Type = "NewCondition";
            mTriggerDefinition.ConditionDefinitions.Add(newDef);
            RefreshUI();
            ConditionsListBox.SelectedItem = "NewCondition";
        }
コード例 #3
0
        public EffectFormBuilder SetConditionForm(ConditionDefinition condition, ConditionForm.ConditionOperation operation, bool applyToSelf, bool forceOnSelf, List <ConditionDefinition> detrimentalConditions)
        {
            effectForm.FormType = EffectForm.EffectFormType.Condition;
            ConditionForm conditionForm = new ConditionForm
            {
                Operation           = operation,
                ConditionDefinition = condition
            };

            conditionForm.SetConditionDefinitionName(condition.Name);
            conditionForm.SetApplyToSelf(applyToSelf);
            conditionForm.SetForceOnSelf(forceOnSelf);
            conditionForm.SetField("detrimentalConditions", detrimentalConditions);
            effectForm.ConditionForm = conditionForm;
            return(this);
        }
コード例 #4
0
        public void SplitReturnSuccessfully()
        {
            //Arrange
            var conditionsWithLogic = new List <ConditionDefinition>();
            var conditionWithLogic  = new ConditionDefinition()
            {
                conditionType = "rollout",
                partitions    = new List <PartitionDefinition>()
                {
                    new PartitionDefinition()
                    {
                        size = 100, treatment = "on"
                    }
                }
            };

            conditionsWithLogic.Add(conditionWithLogic);

            var split = new Split {
                name = "test1", changeNumber = 10000, killed = false, trafficTypeName = "user", seed = -1, conditions = conditionsWithLogic
            };

            _splitCache
            .Setup(x => x.GetSplit("test1"))
            .Returns(split);

            _blockUntilReadyService
            .Setup(mock => mock.IsSdkReady())
            .Returns(true);

            //Act
            var result = manager.Split("test1");

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.name, "test1");
            Assert.AreEqual(result.changeNumber, 10000);
            Assert.AreEqual(result.killed, false);
            Assert.AreEqual(result.trafficType, "user");
            Assert.AreEqual(result.treatments.Count, 1);
            var firstTreatment = result.treatments[0];

            Assert.AreEqual(firstTreatment, "on");
        }
コード例 #5
0
        public void SplitReturnEmptyTreatmentsWhenNoRolloutCondition()
        {
            //Arrange
            var conditionsWithLogic = new List <ConditionDefinition>();
            var conditionWithLogic  = new ConditionDefinition()
            {
                conditionType = "whitelist",
                partitions    = new List <PartitionDefinition>()
                {
                    new PartitionDefinition()
                    {
                        size = 100, treatment = "on"
                    },
                }
            };

            conditionsWithLogic.Add(conditionWithLogic);

            var splitCache = new Mock <ISplitCache>();
            var split      = new Split()
            {
                name = "test1", changeNumber = 10000, killed = false, trafficTypeName = "user", seed = -1, conditions = conditionsWithLogic
            };

            splitCache.Setup(x => x.GetSplit("test1")).Returns(split);

            var manager = new RedisSplitManager(splitCache.Object);

            //Act
            var result = manager.Split("test1");

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.name, "test1");
            Assert.AreEqual(result.treatments.Count, 0);
        }
コード例 #6
0
ファイル: XmlWorkflowParser.cs プロジェクト: lulzzz/WF
        public override IEnumerable <TransitionDefinition> ParseTransitions(XElement schemeMedium, IEnumerable <ActorDefinition> actorDefinitions, IEnumerable <CommandDefinition> commandDefinitions, IEnumerable <ActionDefinition> actionDefinitions, IEnumerable <ActivityDefinition> activityDefinitions, IEnumerable <TimerDefinition> timerDefinitions)
        {
            if (schemeMedium == null)
            {
                throw new ArgumentNullException("schemeMedium");
            }
            if (commandDefinitions == null)
            {
                throw new ArgumentNullException("commandDefinitions");
            }
            if (actionDefinitions == null)
            {
                throw new ArgumentNullException("actionDefinitions");
            }
            if (activityDefinitions == null)
            {
                throw new ArgumentNullException("activityDefinitions");
            }
            var transitionElements = schemeMedium.SingleOrDefault("Transitions");

            if (transitionElements == null)
            {
                throw new ArgumentNullException("");
            }

            var commandDefinitionsList  = commandDefinitions.ToList();
            var actionDefinitionsList   = actionDefinitions.ToList();
            var activityDefinitionsList = activityDefinitions.ToList();
            var actorDefinitionsList    = actorDefinitions.ToList();
            var timerDefinitionsList    = timerDefinitions.ToList();

            var transitions = new List <TransitionDefinition>();

            foreach (var transitionElement in transitionElements.Elements().ToList())
            {
                var fromActivity = activityDefinitionsList.Single(ad => ad.Name == GetFrom(transitionElement));
                var toActivity   = activityDefinitionsList.Single(ad => ad.Name == GetTo(transitionElement));

                TriggerDefinition trigger = null;
                var triggersElement       = transitionElement.Element("Triggers");
                if (triggersElement != null)
                {
                    var triggerElement = triggersElement.Element("Trigger");
                    if (triggerElement != null)
                    {
                        trigger = TriggerDefinition.Create(GetType(triggerElement));
                        if (trigger.Type == TriggerType.Command)
                        {
                            (trigger as CommandTriggerDefinition).Command =
                                commandDefinitionsList.Single(cd => cd.Name == GetNameRef(triggerElement));
                        }
                        else if (trigger.Type == TriggerType.Timer)
                        {
                            (trigger as TimerTriggerDefinition).Timer =
                                timerDefinitionsList.Single(cd => cd.Name == GetNameRef(triggerElement));
                        }
                    }
                }

                ConditionDefinition condition = null;
                var conditionsElement         = transitionElement.Element("Conditions");
                if (conditionsElement != null)
                {
                    var conditionElement = conditionsElement.Element("Condition");
                    if (conditionElement != null)
                    {
                        condition = !string.IsNullOrEmpty(GetNameRefNullable(conditionElement))
                                        ? ConditionDefinition.Create(GetType(conditionElement), actionDefinitionsList.Single(ad => ad.Name == GetNameRef(conditionElement)), GetResultOnPreExecution(conditionElement))
                                        : ConditionDefinition.Create(GetType(conditionElement), GetResultOnPreExecution(conditionElement));
                    }
                }

                var transition = TransitionDefinition.Create(GetName(transitionElement), GetClassifier(transitionElement), fromActivity,
                                                             toActivity, trigger, condition);

                var restrictionsElement = transitionElement.Element("Restrictions");
                if (restrictionsElement != null)
                {
                    foreach (var element in restrictionsElement.Elements("Restriction"))
                    {
                        transition.AddRestriction(RestrictionDefinition.Create(GetType(element), actorDefinitionsList.Single(ad => ad.Name == GetNameRef(element))));
                    }
                }

                var onErrorsElement = transitionElement.Element("OnErrors");
                if (onErrorsElement != null)
                {
                    foreach (var element in onErrorsElement.Elements("OnError"))
                    {
                        //TODO Only One Type Of OnErrorHandler
                        transition.AddOnError(OnErrorDefinition.CreateSetActivityOnError(GetName(element), GetNameRef(element), GetPriority(element), GetTypeName(element) /*, GetIsExecuteImplementation(element),GetIsRethrow(element)*/));
                    }
                }
                transitions.Add(transition);
            }


            return(transitions);
        }
コード例 #7
0
 public static T SetCondition <T>(this T entity, ConditionDefinition value)
     where T : BehaviorModeDescription
 {
     entity.SetField("condition", value);
     return(entity);
 }
コード例 #8
0
 public static T SetTargetConditionAsset <T>(this T entity, ConditionDefinition value)
     where T : EffectDescription
 {
     entity.SetField("targetConditionAsset", value);
     return(entity);
 }
コード例 #9
0
        void VersionListBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            SaveToNewVersionButton.Enabled = false;
            SaveToSelectedButton.Enabled   = false;

            mTempCondDef   = null;
            mTempEffectDef = null;


            ConditionDefinition condDef = VersionListBox.SelectedItem as ConditionDefinition;
            EffectDefinition    effDef  = VersionListBox.SelectedItem as EffectDefinition;

            mCurrentCondDef   = condDef;
            mCurrentEffectDef = effDef;

            TriggerComponentDefinition compDef = VersionListBox.SelectedItem as TriggerComponentDefinition;


            if (condDef != null)
            {
                mTempCondDef = new ConditionDefinition();
                condDef.CopyTo(mTempCondDef);

                ItemPropertyGrid.SelectedObject = mTempCondDef;
                InVariblesList.ObjectList       = mTempCondDef.InParameterDefinitions;
                OutVariablesList.ObjectList     = mTempCondDef.OutParameterDefinitions;
                ConversionList.ObjectList       = mTempCondDef.ParameterConversionOverrides;
            }
            if (effDef != null)
            {
                mTempEffectDef = new EffectDefinition();
                effDef.CopyTo(mTempEffectDef);

                ItemPropertyGrid.SelectedObject = mTempEffectDef;
                InVariblesList.ObjectList       = mTempEffectDef.InParameterDefinitions;
                OutVariablesList.ObjectList     = mTempEffectDef.OutParameterDefinitions;
                ConversionList.ObjectList       = mTempEffectDef.ParameterConversionOverrides;
            }
            if (compDef != null)
            {
                int version = compDef.Version;
                if (version > 1)
                {
                    TriggerComponentDefinition lastversion = null;
                    foreach (object o in mEntries[compDef.Type])
                    {
                        TriggerComponentDefinition oldCompDef = o as TriggerComponentDefinition;
                        if (oldCompDef != null)
                        {
                            if (oldCompDef.Version == version - 1)
                            {
                                lastversion = oldCompDef;
                                break;
                            }
                        }
                    }

                    ConversionList.AddMetaDataForProp("ParameterConversionOverride", "OldParameter", "StringIntEnumeration", GetParameterConversionInfo(lastversion));
                    ConversionList.AddMetaDataForProp("ParameterConversionOverride", "NewParameter", "StringIntEnumeration", GetParameterConversionInfo(compDef));
                    ConversionList.ObjectList = compDef.ParameterConversionOverrides;
                }
            }
        }
コード例 #10
0
 public EffectDescriptionBuilder SetRequiredCondition(ConditionDefinition targetConditionAsset)
 {
     effect.SetTargetConditionAsset(targetConditionAsset);
     effect.SetTargetConditionName(targetConditionAsset.Name);
     return(this);
 }
コード例 #11
0
        public EffectFormBuilder SetSummonForm(SummonForm.Type summonType, ItemDefinition item, int number, string monsterDefinitionName, ConditionDefinition conditionDefinition,
                                               bool persistOnConcentrationLoss, DecisionPackageDefinition decisionPackage, EffectProxyDefinition effectProxyDefinition)
        {
            effectForm.FormType = EffectForm.EffectFormType.Summon;
            SummonForm summonForm = new SummonForm();

            summonForm.SetSummonType(summonType);
            summonForm.SetItemDefinition(item);
            summonForm.SetNumber(number);
            summonForm.SetMonsterDefinitionName(monsterDefinitionName);
            summonForm.SetConditionDefinition(conditionDefinition);
            summonForm.SetPersistOnConcentrationLoss(persistOnConcentrationLoss);
            summonForm.SetDecisionPackage(decisionPackage);
            summonForm.SetEffectProxyDefinitionName(effectProxyDefinition.Name);
            effectForm.SetSummonForm(summonForm);
            return(this);
        }
コード例 #12
0
 public static T SetConditionDefinition <T>(this T entity, ConditionDefinition value)
     where T : ItemPropertyDescription
 {
     entity.SetField("conditionDefinition", value);
     return(entity);
 }
コード例 #13
0
ファイル: Blocks.cs プロジェクト: ljxu1/DWKit
        public override void RegisterFinal(ProcessDefinition pd, List <WorkflowBlock> blocks)
        {
            //transitions
            var commands = this["Commands"] as List <SimpleCommand>;

            if (commands != null)
            {
                var restrictions = new List <RestrictionDefinition>();
                if (this["_actorRestrictions"] is ActorDefinition)
                {
                    restrictions.Add(RestrictionDefinition.Create(RestrictionType.Allow, (ActorDefinition)this["_actorRestrictions"]));
                }

                foreach (var c in commands)
                {
                    var pdCommand = pd.Commands.Where(pdc => pdc.Name == c.Name).FirstOrDefault();
                    if (pdCommand == null)
                    {
                        pdCommand = CommandDefinition.Create(c.Name);
                        pd.Commands.Add(pdCommand);
                    }

                    if (c.Classifier == TransitionClassifier.Direct)
                    {
                        //CA
                        pd.Transitions.Add(new TransitionDefinition()
                        {
                            Name       = string.Format("{0}_{1}_{2}", Name, c.ToBlock.Name, c.Name),
                            Classifier = c.Classifier,
                            From       = (ActivityDefinition)this["_currentActivity"],
                            To         = (ActivityDefinition)this["_currentActivity"],
                            Trigger    = new TriggerDefinition(TriggerType.Command)
                            {
                                Command = pdCommand
                            },
                            Conditions = new List <ConditionDefinition>()
                            {
                                ConditionDefinition.Always
                            },
                            Restrictions = restrictions
                        });

                        //AC
                        pd.Transitions.Add(new TransitionDefinition()
                        {
                            Name       = string.Format("{0}_{1}_{2}", Name, c.ToBlock.Name, "Auto"),
                            Classifier = c.Classifier,
                            From       = (ActivityDefinition)this["_currentActivity"],
                            To         = (ActivityDefinition)c.ToBlock["_currentActivity"],
                            Trigger    = new TriggerDefinition(TriggerType.Auto),
                            Conditions = new List <ConditionDefinition>()
                            {
                                ConditionDefinition.Create("Action", ActionDefinitionReference.Create("BudgetItemIsLegalEntitySignsComplete", "0", Name), "false", "true")
                            }
                        });
                    }
                    else
                    {
                        pd.Transitions.Add(new TransitionDefinition()
                        {
                            Name       = string.Format("{0}_{1}_{2}", Name, c.ToBlock.Name, c.Name),
                            Classifier = c.Classifier,
                            From       = (ActivityDefinition)this["_currentActivity"],
                            To         = (ActivityDefinition)c.ToBlock["_currentActivity"],
                            Trigger    = new TriggerDefinition(TriggerType.Command)
                            {
                                Command = pdCommand
                            },
                            Conditions = new List <ConditionDefinition>()
                            {
                                ConditionDefinition.Always
                            },
                            Restrictions = restrictions
                        });
                    }
                }
            }
        }
コード例 #14
0
        public static ExecutionRequestParameters Create(Guid processId, IEnumerable <ParameterDefinitionWithValue> parameters, ActivityDefinition activityToExecute, ConditionDefinition condition, bool isPreExecution)
        {
            List <ActionDefinitionForActivity> implementation = isPreExecution
                                                                   ? activityToExecute.PreExecutionImplemementation
                                                                   : activityToExecute.Implemementation;

            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }
            var parametersList = parameters.ToList();

            var methods             = new List <MethodToExecuteInfo>(implementation.Count);
            var executionParameters = new ExecutionRequestParameters
            {
                ProcessId     = processId,
                ConditionType = condition.Type,
                ConditionResultOnPreExecution = condition.ResultOnPreExecution,
                ConditionMethod = condition.Type == ConditionType.Action ? GetMethodToExecuteInfo(parametersList, ActionDefinition.Create(condition.Action, 0)) : null,
            };

            methods.AddRange(implementation.Select(method => GetMethodToExecuteInfo(parametersList, method)));

            var parameters1 = new List <ParameterContainerInfo>();

            parameters1.AddRange(parameters.Where(p => p.Name != DefaultDefinitions.ParameterExecutedActivityState.Name).Select(p => new ParameterContainerInfo()
            {
                Name = p.Name, Type = p.Type, Value = p.Value
            }));
            parameters1.Add(new ParameterContainerInfo {
                Name = DefaultDefinitions.ParameterExecutedActivityState.Name, Type = DefaultDefinitions.ParameterExecutedActivityState.Type, Value = activityToExecute.State
            });
            executionParameters.ParameterContainer = parameters1.ToArray();
            executionParameters.Methods            = methods.ToArray();

            executionParameters.ActivityName = activityToExecute.Name;

            return(executionParameters);
        }
コード例 #15
0
 public void AddCancellingConditions(ConditionDefinition cancellingConditions)
 {
     condition.CancellingConditions.Add(cancellingConditions);
 }
コード例 #16
0
 public void SetAdditionalConditionWhenHitFields(bool additionalConditionWhenHit, ConditionDefinition additionalCondition, RuleDefinitions.DurationType additionalConditionDurationType,
                                                 int additionalConditionDurationParameter)
 {
     Traverse.Create(condition).Field("additionalConditionWhenHit").SetValue(additionalConditionWhenHit);
     Traverse.Create(condition).Field("additionalCondition").SetValue(additionalCondition);
     Traverse.Create(condition).Field("additionalConditionDurationType").SetValue(additionalConditionDurationType);
     Traverse.Create(condition).Field("additionalConditionDurationParameter").SetValue(additionalConditionDurationParameter);
 }
コード例 #17
0
 public void SetParentCondition(ConditionDefinition parentCondition)
 {
     Traverse.Create(condition).Field("parentCondition").SetValue(parentCondition);
 }
コード例 #18
0
 public void SetSubsequentOnRemoval(ConditionDefinition subsequentOnRemoval)
 {
     Traverse.Create(condition).Field("subsequentOnRemoval").SetValue(subsequentOnRemoval);
 }
コード例 #19
0
 public ConditionBuilder()
 {
     condition = ScriptableObject.CreateInstance <ConditionDefinition>();
 }
コード例 #20
0
 public static T SetParentCondition <T>(this T entity, ConditionDefinition value)
     where T : ConditionDefinition
 {
     entity.SetField("parentCondition", value);
     return(entity);
 }
コード例 #21
0
 public static T SetRequiredTargetCondition <T>(this T entity, ConditionDefinition value)
     where T : FeatureDefinitionAdditionalDamage
 {
     entity.SetField("requiredTargetCondition", value);
     return(entity);
 }
コード例 #22
0
 public static T SetSubsequentOnRemoval <T>(this T entity, ConditionDefinition value)
     where T : ConditionDefinition
 {
     entity.SetField("subsequentOnRemoval", value);
     return(entity);
 }
コード例 #23
0
        public void LoadUI()
        {
            mEntries.Clear();
            ConditionsListBox.Items.Clear();
            EffectsListBox.Items.Clear();
            mTopVersion.Clear();
            bool bHideObsolete = HideObsoleteCheckBox.Checked;

            foreach (ConditionDefinition item in mTriggerDefinition.ConditionDefinitions)
            {
                string key = item.Type;
                if (mEntries.ContainsKey(key) == false)
                {
                    mEntries[key] = new List <object>();

                    //ConditionsListBox.Items.Add(key);
                }
                mEntries[key].Add(item);

                if (mTopVersion.ContainsKey(key) == false)
                {
                    mTopVersion[key] = item.Version;
                }
                if (item.Version > mTopVersion[key])
                {
                    mTopVersion[key] = item.Version;
                }
            }
            foreach (EffectDefinition item in mTriggerDefinition.EffectDefinitions)
            {
                string key = item.Type;
                if (mEntries.ContainsKey(key) == false)
                {
                    mEntries[key] = new List <object>();

                    //EffectsListBox.Items.Add(key);
                }
                mEntries[key].Add(item);

                if (mTopVersion.ContainsKey(key) == false)
                {
                    mTopVersion[key] = item.Version;
                }
                if (item.Version > mTopVersion[key])
                {
                    mTopVersion[key] = item.Version;
                }
            }
            Dictionary <string, int> .Enumerator it = mTopVersion.GetEnumerator();
            while (it.MoveNext())
            {
                foreach (object entry in  mEntries[it.Current.Key])
                {
                    if (entry is ConditionDefinition)
                    {
                        ConditionDefinition def = entry as ConditionDefinition;
                        if (def.Version == it.Current.Value)
                        {
                            if (bHideObsolete && def.Obsolete == true)
                            {
                                continue;
                            }
                            else
                            {
                                ConditionsListBox.Items.Add(it.Current.Key);
                            }
                        }
                    }
                    else if (entry is EffectDefinition)
                    {
                        EffectDefinition def = entry as EffectDefinition;
                        if (def.Version == it.Current.Value)
                        {
                            if (bHideObsolete && def.Obsolete == true)
                            {
                                continue;
                            }
                            else
                            {
                                EffectsListBox.Items.Add(it.Current.Key);
                            }
                        }
                    }
                }
            }



            ConditionsListBox.Sorted = true;
            EffectsListBox.Sorted    = true;
        }
コード例 #24
0
 public static ExecutionRequestParameters Create(Guid processId, IEnumerable <ParameterDefinitionWithValue> parameters, ActivityDefinition activityToExecute, ConditionDefinition condition)
 {
     return(Create(processId, parameters, activityToExecute, condition, false));
 }
コード例 #25
0
 public static T SetConditionDefinition <T>(this T entity, ConditionDefinition value)
     where T : GuiActiveCondition
 {
     entity.SetField("conditionDefinition", value);
     return(entity);
 }