public static void StartDBProcess() { List <TblDatabaseManagement> lstDB = DatabaseManagementsDS.GetDBToWork(StatusDB.Received); Metaquery rootMQ = Metaquery.GetRootMQ(); foreach (TblDatabaseManagement db in lstDB) { //create first level Console.WriteLine("start : {0}:{1}:{2}:{3}", DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Millisecond); Console.WriteLine(rootMQ.ToString()); TblMetaquery tblMetaquery = new TblMetaquery() { Arity = rootMQ.Arity, FkDatabaseId = db.Id, FkStatusId = (int)StatusDB.Received, Metaquery = rootMQ.ToString() }; MetaqueryDS.Create(tblMetaquery); DatabaseManagementsDS.UpdateStatus(db, StatusDB.InProcess); } //if at least 1 metaquery created - we can start send it to solver if (lstDB.Count > 0 && IsAutoRunJobs) { ThreadPool.QueueUserWorkItem(delegate { StartSendMQToSolver(); }); } }
//public static void SendMQAssignmentResultMessage(RabbitProducer<string> producer, MQAssignmentResultMessage resultMessage) //{ // string strMessage = resultMessage.ToJson(); // producer.SendMessage(strMessage); //} public virtual void OnGetMessageFromGenerator(string strMessage) { string queueToMQGeneratorName = ConfigurationManager.AppSettings["QueueToMQGeneratorName"]; RabbitProducer <string> producer = new RabbitProducer <string>(queueToMQGeneratorName); SendMQMessage message = JsonConvert.DeserializeObject <SendMQMessage>(strMessage); Metaquery metaquery = new Metaquery(message); List <ResultDemoMq> resultMQList = MetaquerySolverDemoDS.GetResultDemoMq(metaquery.ToString()); bool hasResult = resultMQList.Count > 0; ResultMQ resultMQ = ResultMQ.HasAnswers; if (!hasResult) { Random rnd = new Random(); int rndNum = rnd.Next(2); if (rndNum == 0) { resultMQ = ResultMQ.ConfidenceFailure; } else { resultMQ = ResultMQ.SupportFailure; } } MQResultMessage resultMessage = new MQResultMessage() { ID = message.ID, Result = resultMQ }; if (hasResult) { foreach (ResultDemoMq resultDemoMQ in resultMQList) { MQAssignmentResultMessage assignmentResultMessage = new MQAssignmentResultMessage() { ID = message.ID, Assignment = resultDemoMQ.Assignment, ConfidenceValue = resultDemoMQ.ConfidenceValue.Value, SupportValue = resultDemoMQ.SupportValue.Value }; SendMQMessageToSolver(producer, assignmentResultMessage); //System.Threading.Thread.Sleep(3000); } } SendMQMessageToSolver(producer, resultMessage); //System.Threading.Thread.Sleep(3000); /* * MQResultMessage resultMessage = new MQResultMessage() { ID = 1, Result = true}; * * string strMessage = JsonConvert.SerializeObject(resultMessage); * string strResultMessageJson = "{\"ID\":1,\"Result\":true}"; * Assert.AreEqual(strMessage, strResultMessageJson); * * MQAssignmentResultMessage assignmentResultMessage = new MQAssignmentResultMessage() { ID = 1,Assignment="Any assignment",ConfidenceValue=0.3f,SupportValue=0.1f }; * strMessage = JsonConvert.SerializeObject(assignmentResultMessage); * strResultMessageJson = "{\"ID\":1,\"SupportValue\":0.1,\"ConfidenceValue\":0.3,\"Assignment\":\"Any assignment\"}"; */ //MessageBox.Show("TestEvent, string: " + result.Metaquery); }
public void TestMethodStringConstructor() { Metaquery metaquery = new Metaquery("R0(X1,X2)←R1(X1,X2)&R2(X1,X2)"); Assert.AreEqual(metaquery.ToString(), "R0(X1,X2)←R1(X1,X2)&R2(X1,X2)"); }
public void TestMethodRootMQ() { Metaquery rootMQ = Metaquery.GetRootMQ(); Assert.AreEqual(rootMQ.ToString(), "R0(X1)←R1(X1)"); }