什么';这就是FactRetreiver和FactCreator之间的区别
本文关键字:FactCreator 之间 区别 FactRetreiver 什么 | 更新日期: 2023-09-27 18:00:27
这是FactCreator
:的一个实例
public class MyFactCreator : IFactCreator
{
private object[] myFacts;
public MyFactCreator()
{
}
public object[] CreateFacts ( RuleSetInfo rulesetInfo )
{
myFacts = new object[1];
myFacts.SetValue(new MySampleBusinessObject(),0);
return myFacts;
}
public Type[] GetFactTypes (RuleSetInfo rulesetInfo)
{
return null;
}
}
这是FactRetriever
:的代码
public class MyFactRetriever:IFactRetriever
{
public object UpdateFacts(RuleSetInfo rulesetInfo, Microsoft.RuleEngine.RuleEngine engine, object factsHandleIn)
{
object factsHandleOut;
if (factsHandleIn == null)
{
SqlDataAdapter dAdapt = new SqlDataAdapter();
dAdapt.TableMappings.Add("Table", "CustInfo");
SqlConnection conn = new SqlConnection("Initial Catalog=Northwind;Data Source=(local);Integrated Security=SSPI;");
conn.Open();
SqlCommand myCommand = new SqlCommand("SELECT * FROM CustInfo", conn);
myCommand.CommandType = CommandType.Text;
dAdapt.SelectCommand = myCommand;
DataSet ds = new DataSet("Northwind");
dAdapt.Fill(ds);
TypedDataTable tdt = new TypedDataTable(ds.Tables["CustInfo"]);
engine.Assert(tdt);
factsHandleOut = tdt;
}
else
factsHandleOut = factsHandleIn;
return factsHandleOut;
}
既然他们都为政策提供了一份事实清单,为什么他们不一样?它们之间有什么区别?
FactCreater是专门为业务规则生成器提供的帮助类,当您在生成器中执行测试策略时,它使您能够断言短期非类型XmlDocument事实,例如.Net类的实例。它不在Composer之外使用。
事实检索器用于断言事实,称为长期,在幕后购买引擎。它在执行策略时使用,包括由Composer执行。
FactCreator实际上相当于编排中的调用规则形状的Composer,您可以在其中指定短期事实。