示例#1
0
        public bool Startup()
        {
            if (_env == null ||
                CBRContextManager.GetCBRContext(_name) == null)
            {
                System.Console.WriteLine("environment is not set or context is null");
                return(false);
            }

            _ctx = CBRContextManager.GetCBRContext(_name);
            if (_problem == null)
            {
                System.Console.WriteLine("problem is not set");
                return(false);
            }
            _ctx.SetCurrentCase(_problem);
            #region only for test
            if (Version.DEBUG)
            {
                System.Console.WriteLine("=====context detail=====");
                System.Console.WriteLine("Reasoning Engine startup successfully!");
                System.Console.WriteLine("problem case is:");
                for (int i = 0; i < _problem.GetFeatures().Count; i++)
                {
                    Feature f = (Feature)_problem.GetFeatures()[i];
                    System.Console.WriteLine("\t" + f.GetFeatureName() + ":" + f.GetFeatureValue());
                }
                System.Console.WriteLine("context is:");
                System.Console.WriteLine("case base\t" + _ctx.GetCaseBase().ToString());
                System.Console.WriteLine("case base input\t" + _ctx.GetCaseBaseInput().ToString());
                System.Console.WriteLine("case base input type\t" + _ctx.GetCaseBaseInputType().ToString());
                System.Console.WriteLine("case base url\t" + _ctx.GetCaseBaseURL().ToString());
                System.Console.WriteLine("case restore method\t" + _ctx.GetCaseRestoreMethod().ToString());
                System.Console.WriteLine("case retrieval method\t" + _ctx.GetCaseRetrievalMethod().ToString());
                System.Console.WriteLine("case reuse method\t" + _ctx.GetCaseReuseMethod().ToString());
                System.Console.WriteLine("case reuse strategy\t" + _ctx.GetCaseReuseStrategy().ToString());
                System.Console.WriteLine("case revise method\t" + _ctx.GetCaseReviseMethod().ToString());
                System.Console.WriteLine("current case\t" + _ctx.GetCurrentCase().ToString());
                System.Console.WriteLine("similarity\t" + _ctx.GetSimilarity().ToString());
                System.Console.WriteLine("similarity threhold\t" + _ctx.GetSimilarityThrehold().ToString());
                System.Console.WriteLine("=====end of context detail=====");
            }
            #endregion
            return(true);
        }
    /// <summary>
    /// find case from case base
    /// return null if not suitable case
    /// otherwise retrurn case list
    /// note that only *.ocbr and db type are supported
    /// </summary>
    /// <param name="c"></param>
    /// <returns></returns>
    public ArrayList GetCases(Case c)
    {
        if (_env == null)
        {
            System.Console.WriteLine("environment is not set");
            return(null);
        }

        ICBRContext ctx = CBRContextManager.GetCBRContext(_env);

        if (ctx == null)
        {
            throw new ContextException("context is null");
        }

        int    type = ctx.GetCaseBaseInputType();
        string url  = ctx.GetCaseBaseURL();

        if (type == CaseBaseInputType.TYPE_FILE)
        {
            IOCBRFile file = OCBRFileFactory.newInstance(url);
            return(file.GetCases());
        }
        else if (type == CaseBaseInputType.TYPE_DB)
        {
            IDb db = DbFactory.newInstance(url);
            db.SetEnv(_env);                    //set the conditions rules

            return(db.GetCases());
        }
        else
        {
            System.Console.WriteLine("input case base type unsupported");
        }
        return(null);
    }