public static void StartExpandMQProcess() { List <TblMetaquery> lstMQ = MetaqueryDS.GetMQForExpand(); while (lstMQ.Count > 0) { foreach (TblMetaquery tblMetaquery in lstMQ) { TblDatabaseManagement curDB = tblMetaquery.TblDatabaseManagement; Metaquery metaqueryToExpand = new Metaquery(tblMetaquery.Metaquery); //create first level //int MaxVariablesInRelation = ProcessMQDetails.MaxVariablesInRelation; int maxVariables = curDB.MaxVariablesInRelation; ExpandType expandType = ExpandType.All; if (tblMetaquery.FkResult == (int)ResultMQ.SupportFailure) { expandType = ExpandType.NewRelationOnly; } if (tblMetaquery.FkResult == (int)ResultMQ.ConfidenceFailure) { expandType = ExpandType.InBodyOnly; } List <Metaquery> list = metaqueryToExpand.Expand(maxVariables, expandType); foreach (Metaquery mq in list) { TblMetaquery newTblMetaquery = new TblMetaquery() { Arity = mq.Arity, FkDatabaseId = curDB.Id, FkStatusId = (int)StatusDB.Received, Metaquery = mq.ToString() }; MetaqueryDS.Create(newTblMetaquery); } if (curDB.ForExperiment || tblMetaquery.FkResult != (int)ResultMQ.HasAnswers) { MetaqueryDS.UpdateStatus(tblMetaquery, StatusMQ.ExpandedAndDone); } else { MetaqueryDS.UpdateStatus(tblMetaquery, StatusMQ.Expanded); } } lstMQ = MetaqueryDS.GetMQForExpand(); } if (IsAutoRunJobs) { StartIncreaseDBArity(); } }
/// <summary> /// Unit test to check the Expand Head - Expand All /// </summary> public void TestMethod_Expand_RootTo3Level() { Metaquery rootMQ = Metaquery.GetRootMQ(); //mtodo List <Metaquery> listResultLevel2 = rootMQ.Expand(5, ExpandType.All); List <Metaquery> listResultLevel3 = new List <Metaquery>(); int[] cnt = new int[3]; for (int i = 0; i < listResultLevel2.Count; i++) { Metaquery metaquery = listResultLevel2[i]; //mtodo var list = metaquery.Expand(5, ExpandType.All); listResultLevel3.AddRange(list); cnt[i] = list.Count; } Assert.AreEqual(cnt[0], 4); Assert.AreEqual(cnt[1], 3); Assert.AreEqual(cnt[2], 4); }