public static bool IEExecute(ref vMRClsDef.IEvMRInput oIEvMRInput, ref vMRClsDef.IEvMROutput oIEvMROutput) { if (ObtainDataModel(ref oIEvMRInput)) { if (DataMapper.MapDataToFact(ref oIEvMRInput)) { if (vMRFunDef.vMRDataValueFromUItoIE(oIEvMRInput, ref oIEvMROutput)) { //获取推理解释结果成功 //结果转换为UI可用形式 StructedIEResult.AddIEStructedInfo(oIEvMROutput); DataMapper.MapIEOutputToUI(oIEvMRInput, oIEvMROutput); return(true); } else { //获取推理解释结果失败 return(false); } } else { //获取Fact失败 return(false); } } else { //获取DataModel失败 return(false); } }
/// <summary> /// 获取推理所需的DataModels /// </summary> /// <returns></returns> private static bool ObtainDataModel(ref vMRClsDef.IEvMRInput oIEvMRInput) { if (!ObtainDataModelFromBuffer(ref oIEvMRInput)) { return(vMRFunDef.vMRDataModelFromIEtoUI(ref oIEvMRInput)); } else { return(false); } }
/// <summary> /// 推理引擎端决策代理服务具体实现,UI端调用 /// </summary> /// <param name="oIEvMRInputDataValue"></param> /// <param name="oIEvMROutput"></param> /// <returns></returns> public static bool vMRDataValueFromUItoIE(vMRClsDef.IEvMRInput oIEvMRInputDataValue, ref vMRClsDef.IEvMROutput oIEvMROutput) { oIEvMROutput.oRoles = oIEvMRInputDataValue.oRoles; foreach (vMRClsDef.InputDataModel oInputDataModel in oIEvMRInputDataValue.lstInputDataModel) { List <vMRClsDef.DataModel> lstDataModelForIE = new List <vMRClsDef.DataModel>(); vMRClsDef.OutputInfo oIEOutputInfo = new vMRClsDef.OutputInfo(); FactConstruct.FormFactInDataModel(oInputDataModel, ref lstDataModelForIE); oIEOutputInfo.oTriggeringEvent = oInputDataModel.oTriggeringEvent; InferenceService.BeginInference(oIEvMROutput.oRoles, lstDataModelForIE, ref oIEOutputInfo); ExplanationService.BeginExplanation(); oIEvMROutput.lstOutputInfo.Add(oIEOutputInfo); } return(true); }
public static void MapIEOutputToUI(vMRClsDef.IEvMRInput oIEvMRInput, vMRClsDef.IEvMROutput oIEvMROutput) { //TODO IE输出结果映射,供界面显示 foreach (vMRClsDef.OutputInfo oOutputInfo in oIEvMROutput.lstOutputInfo) { int i; for (i = 0; i < oIEvMRInput.lstInputDataModel.Count; i++) { if (oOutputInfo.oTriggeringEvent.oEvent.strEventCNName == oIEvMRInput.lstInputDataModel[i].oTriggeringEvent.oEvent.strEventCNName) { break; } } FormatResult(oIEvMRInput.lstInputDataModel[i], oOutputInfo); } }
/// <summary> /// 从知识库获取数据模型 /// </summary> /// <param name="oIEvMRInputDataModel"></param> /// <returns></returns> public static bool vMRDataModelFromIEtoUI(ref vMRClsDef.IEvMRInput oIEvMRInputDataModel) { for (int i = 0; i < oIEvMRInputDataModel.lstInputDataModel.Count; i++) { vMRClsDef.InputDataModel oInputDataModel = new vMRClsDef.InputDataModel(); oInputDataModel.oTriggeringEvent = oIEvMRInputDataModel.lstInputDataModel[i].oTriggeringEvent; //首先根据事件获取DataModel FactObtain.ObtainFactWithDisease(ref oInputDataModel); oIEvMRInputDataModel.lstInputDataModel[i].lstDataModel.AddRange(oInputDataModel.lstDataModel); //将来需求,根据Symptom获取DataModel; oInputDataModel.lstDataModel.Clear(); FactObtain.ObtainFactWithSymptoms(ref oInputDataModel); oIEvMRInputDataModel.lstInputDataModel[i].lstDataModel.AddRange(oInputDataModel.lstDataModel); } return(true); }
/// <summary> /// DataModel code与SystemData映射,并对oIEvMRInput进行赋值 /// </summary> /// <param name="oIEvMRInput"></param> /// <returns></returns> public static bool MapDataToFact(ref vMRClsDef.IEvMRInput oIEvMRInput) { //TODO 数据映射具体实现 for (int i = 0; i < oIEvMRInput.lstInputDataModel.Count; i++) { for (int j = 0; j < oIEvMRInput.lstInputDataModel[i].lstDataModel.Count; j++) { string strStandDataCode = oIEvMRInput.lstInputDataModel[i].lstDataModel[j].strDataCode; //string strClassName // = MappingToClassFromXml.ObtainClassNameWithDataCode(strStandDataCode); //if (strClassName != string.Empty) //{ // object objClassDataValue = DynamicMapperToSystemData.GetMapperValue(strClassName); // if (objClassDataValue != null) // { // oIEvMRInput.lstInputDataModel[i].lstDataModel[j].strDataValue // = objClassDataValue.ToString(); // } // else // { // oIEvMRInput.lstInputDataModel[i].lstDataModel[j].strDataValue // = "NULL"; // } //} //else //{ // oIEvMRInput.lstInputDataModel[i].lstDataModel[j].strDataValue = "NULL"; //} oIEvMRInput.lstInputDataModel[i].lstDataModel[j].strDataValue = TempDataMap.ObtainDataValueWithDataCode(strStandDataCode); } } return(true); }
public static void ClearIEInAndOut() { oDiagnoseIEvMRInput = new vMRClsDef.IEvMRInput(); oDiagnoseIEvMROutput = new vMRClsDef.IEvMROutput(); oTherpayIEvMRInput = new vMRClsDef.IEvMRInput(); oTherpayIEvMROutput = new vMRClsDef.IEvMROutput(); oSelfMonitorIEvMRInput = new vMRClsDef.IEvMRInput(); oSelfMonitorIEvMROutput = new vMRClsDef.IEvMROutput(); oMSEvaluationIEvMRInput = new vMRClsDef.IEvMRInput(); oMSEvaluationIEvMROutput = new vMRClsDef.IEvMROutput(); oRiskEvaluationIEvMRInput = new vMRClsDef.IEvMRInput(); oRiskEvaluationIEvMROutput = new vMRClsDef.IEvMROutput(); oDietaryIEvMRInput = new vMRClsDef.IEvMRInput(); oDietaryIEvMROutput = new vMRClsDef.IEvMROutput(); oPhysicalActivityIEvMRInput = new vMRClsDef.IEvMRInput(); oPhysicalActivityIEvMROutput = new vMRClsDef.IEvMROutput(); }
/// <summary> /// 从缓冲区获取DataModels /// </summary> /// <returns></returns> private static bool ObtainDataModelFromBuffer(ref vMRClsDef.IEvMRInput oIEvMRInput) { //TODO:从缓冲区获取datamodel return(false); }