ruleSetToolKitUsageSample

I Export ruleset as ".rules "using ExternalRuleset.

but now i wanted to use that ".rules file" in RulesetToolKitUsageSample.

I commented the database retrival thing in the following procedure of Ruleset Service class and written the File Operation code

public RuleSet GetRuleSet(RuleSetInfo ruleSetInfo)

{

if (ruleSetInfo != null)

{

//SqlConnection sqlConn = new SqlConnection(connectionString);

//sqlConn.Open();

//string commandString;

//// if both the major and minor are 0, it is assumed that a specific version is not being requested

//bool specificVersionRequested = !(ruleSetInfo.MajorVersion == 0 && ruleSetInfo.MinorVersion == 0);

//if (specificVersionRequested)

//{

// commandString = String.Format(CultureInfo.InvariantCulture, "SELECT TOP 1 * FROM RuleSet WHERE Name=@name AND MajorVersion={0} AND MinorVersion={1} ORDER BY MajorVersion DESC, MinorVersion DESC", ruleSetInfo.MajorVersion, ruleSetInfo.MinorVersion);

//}

//else

//{

// commandString = "SELECT TOP 1 * FROM RuleSet WHERE Name=@name ORDER BY MajorVersion DESC , MinorVersion DESC";

//}

//SqlCommand command = new SqlCommand(commandString, sqlConn);

//command.Parameters.Add("@name", System.Data.SqlDbType.NVarChar, 128);

//command.Parameters["@name"].Value = ruleSetInfo.Name;

//SqlDataReader reader = command.ExecuteReader();

//RuleSetData data = null;

//if (reader.HasRows)

//{

// reader.Read();

// try

// {

// data = new RuleSetData();

// data.Name = reader.GetString(0);

// data.OriginalName = data.Name; // will be used later to see if one of these key values changed

// data.MajorVersion = reader.GetInt32(1);

// data.OriginalMajorVersion = data.MajorVersion;

// data.MinorVersion = reader.GetInt32(2);

// data.OriginalMinorVersion = data.MinorVersion;

// data.RuleSetDefinition = reader.GetString(3);

// data.Status = reader.GetInt16(4);

// data.AssemblyPath = reader.GetString(5);

// data.ActivityName = reader.GetString(6);

// data.ModifiedDate = reader.GetDateTime(7);

// data.Dirty = false;

// }

// catch (InvalidCastException)

// {

// MessageBox.Show("Error parsing table row", "RuleSet Open Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

// }

//}

//sqlConn.Close();

StreamReader SR;

string S;

SR = File.OpenText("c:\\rule2.rules");

S = SR.ReadToEnd();

SR.Close();

RuleSetData data = new RuleSetData();

data.RuleSetDefinition = S;

if (data != null)

return data.RuleSet;

else

throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "No RuleSets exist with this name: '{0}'", ruleSetInfo.Name));

}

else

{

return null;

}

}

but i am getting ruleset object as null.

Help me.



Answer this question

ruleSetToolKitUsageSample

  • ZBizKiT

    How about something like:

    TextReader ruleReader = File.OpenText("c:\\rule2.rules");
    try
    {
    using (XmlReader xmlReader = XmlReader.Create(ruleReader))
    {
    WorkflowMarkupSerializer xomlSerializer = new WorkflowMarkupSerializer();
    RuleDefinitions ruleDef = xomlSerializer.Deserialize(xmlReader) as RuleDefinitions;
    if (ruleDef != null && ruleDef.RuleSets.Contains(ruleSetInfo.Name))
    {
    return ruleDef.RuleSets(ruleSetInfo.Name);
    }
    }
    }
    finally
    {
    ruleReader.Close();
    }


  • ruleSetToolKitUsageSample