Rule
Conditon
ThenAction
ElseAction
RuleC
this.D < 100
this.B = this.B - 12
System.Console.WriteLine("RuleC:Then" + this.B)
RuleB
this.B > 50
this.C = "Preferred"
System.Console.WriteLine("RuleB:Then" + this.C)
this.C = "Normal"
System.Console.WriteLine("RuleB:Else" + this.C)
RuleA
this.A > 10
this.B = 60
System.Console.WriteLine("RuleA:Then" + this.B)
this.B = 40
System.Console.WriteLine("RuleA:Else" + this.B)
工作流代碼中添加相關變量如下:
private intA = 12;
private intD = 99;
private intB = 0;
private stringC = "";
<a href="http://11011.net/software/vspaste"></a>
宿主程式中我們加載SqlTrackingService服務,代碼如下:
TrackingConsoleWriter類來将跟蹤資訊顯示出來,代碼如下:
TrackingConsoleWriter trackingWriter= new TrackingConsoleWriter(strConn);
trackingWriter.DisplayTrackingData(instance.InstanceId);
我們使用SqlTrackingQuery查詢的時候。SqlTrackingWorkflowInstance有一個UserEvents屬性,該屬性包括UserTrackingRecord集合,每一個UserTrackingRecord都有一個UserData屬性。如果這個UserTrackingRecord包含Rule資料的話,該UserData屬性是一個RuleActionTrackingEvent對象的執行個體,該對象裡包含RuleName和ConditionResult屬性。當規則執行時,将發送 RuleActionTrackingEvent 對象作為使用者跟蹤點。在我們自己開發的TrackingConsoleWriter類中,下面的代碼是處理這個的:
UserTrackingRecorduserRecord = record asUserTrackingRecord;
if(userRecord.UserData isRuleActionTrackingEvent)
{
WriteRuleData(userRecord);
}
執行工作流結果如下:
<a href="http://www.cnblogs.com/images/cnblogs_com/carysun/WindowsLiveWriter/WF2_60A7/clip_image002_2.jpg"></a>
上面的結果中包含RuleSet中各個規則的計算情況,下一篇文章中我們使用自定義跟蹤配置檔案來跟蹤Rule中具體的變量的變化情況。
本文轉自生魚片部落格園部落格,原文連結:http://www.cnblogs.com/carysun/archive/2008/11/22/RuleSqlTracking.html,如需轉載請自行聯系原作者