public static TradeRule LoadRule(string ruleFileName) { TradeRule rule = null; try { XmlSaveRule xsr = (XmlSaveRule)EZAPI.Toolbox.Serialization.Xml.Deserialize(typeof(XmlSaveRule), ruleFileName); rule = new TradeRule(xsr.Name, xsr.RuleCombination, xsr.RuleType); rule.Active = xsr.Active; foreach (var xsrc in xsr.RuleConditions) { IDataProvider dataProvider1 = MonkeyFactory.CreateDataProviderInstance(xsrc.Value1.Name); IDataProvider dataProvider2 = MonkeyFactory.CreateDataProviderInstance(xsrc.Value2.Name); dataProvider1.SaveData = xsrc.Value1; dataProvider2.SaveData = xsrc.Value2; RuleValue value1 = new RuleValue(dataProvider1); RuleValue value2 = new RuleValue(dataProvider2); IRuleComparison compare = MonkeyFactory.CreateRuleComparisonInstance(xsrc.Compare.Name); RuleCondition condition = new RuleCondition(value1, compare, value2); rule.AddRuleCondition(condition); } } catch (Exception ex) { // If there is a problem loading the rule, then we return null (not some partial rule). rule = null; ExceptionHandler.TraceException(ex); } return(rule); }
private static Workspace ArchitectureModel(IInfrastructureEnvironment environment) { var workspace = CreateWorkspace(); var monkeyFactory = new MonkeyFactory(workspace, environment); var contextView = workspace.Views.CreateSystemContextView(monkeyFactory.System, "Monkey factory context view", "Overview over the monkey factory system"); contextView.AddAllSoftwareSystems(); contextView.AddAllPeople(); var containerView = workspace.Views.CreateContainerView(monkeyFactory.System, "Monkey factory Container View", "Overview over the monkey factory system architecture"); containerView.AddAllContainers(); containerView.AddAllPeople(); foreach (var systemContainer in monkeyFactory.System.Containers) { containerView.AddNearestNeighbours(systemContainer); } return(workspace); }
static void Main(string[] args) { //test Console.WriteLine("Start Program"); iTreeFactory treeFactory = new TreeFactory(); iWoodFactory woodFactory = new WoodFactory(treeFactory); iMonkeyFactory monkeyFactory = new MonkeyFactory(); iDatabaseFiller dbWriter = new BulkDatabaseUploader(); ReportWriter reportWriter = new ReportWriter(); BitmapDrawer mapDrawer = new BitmapDrawer(); List <iMonkey> monkeys1 = monkeyFactory.GetMonkeys(4, MonkeyTypes.Standard); List <iMonkey> monkeys2 = monkeyFactory.GetMonkeys(8, MonkeyTypes.Standard); var wood1 = woodFactory.CreateWood(100, 100, 500, monkeys1); var wood2 = woodFactory.CreateWood(200, 200, 1500, monkeys2); Thread letLooseW1 = new Thread(wood1.LetTheMonkeysLoose); letLooseW1.Start(); Thread letLooseW2 = new Thread(wood2.LetTheMonkeysLoose); letLooseW2.Start(); //upload the layout of the woods(no monkey movement needed) Thread treeUploader1 = new Thread(() => dbWriter.UploadWoodRecords(wood1)); treeUploader1.Start(); Thread treeUploader2 = new Thread(() => dbWriter.UploadWoodRecords(wood2)); treeUploader2.Start(); //report on the first one letLooseW1.Join(); Thread draw1 = new Thread(() => mapDrawer.DrawMap(wood1)); draw1.Start(); Thread logUploader1 = new Thread(() => dbWriter.UploadLogs(wood1)); logUploader1.Start(); Thread monkeyUploader1 = new Thread(() => dbWriter.UploadMonkeyRecords(wood1)); monkeyUploader1.Start(); Thread reporter1 = new Thread(() => reportWriter.WriteReport(wood1)); reporter1.Start(); //report on the second one letLooseW2.Join(); Thread draw2 = new Thread(() => mapDrawer.DrawMap(wood2)); draw2.Start(); Thread logUploader2 = new Thread(() => dbWriter.UploadLogs(wood2)); logUploader2.Start(); Thread monkeyUploader2 = new Thread(() => dbWriter.UploadMonkeyRecords(wood2)); monkeyUploader2.Start(); Thread reporter2 = new Thread(() => reportWriter.WriteReport(wood2)); reporter2.Start(); }