BizTalk開發小技巧-.Net 調用BizTalk Business Rule Engine

來源:互聯網
上載者:User

BizTalk開發小技巧-.Net 調用BizTalk Business Rule Engine

 

BizTalk Business Rule Engine:BizTalk商務規則引擎,它的主要功能和特點是在不改變流程,不重新部署工程的情況下,動態配置策略資訊,修改策略邏輯.達到動態業務配置目的。類似WF的工作原理類似。

這次就是講在.net windows form的應用程式中調用BizTalk Business Rule Engine配置好商務規則。

實驗的情境:

 

     類比報銷審批的簡單樣本,報銷金額<多少,審批通過。

原始碼

private
void button1_Click(object sender, RoutedEventArgs e)

{

BizTalkRules.Expenses.ExpenseClaim claim = new BizTalkRules.Expenses.ExpenseClaim()

{

Amount = Convert.ToInt32( this.textAmount.Text),

Category = this.cobCategory.Text,

Department = this.cboDepartment.Text,

Description = this.textDescription.Text,

Name = this.textName.Text,

Project = this.textProject.Text

};


if (claim.Category == "Software" && claim.Amount <= 500)

{

claim.Status = "Approved";

}


else
if (claim.Category == "Book" && claim.Amount <= 300)

{

claim.Status = "Approved";

}


else

{

claim.Status = "Require Approval";

}


//Microsoft.RuleEngine.Policy policy = new Microsoft.RuleEngine.Policy("ExpensesApproval");


//policy.Execute(claim);


this.textStatus.Text = claim.Status;

}

 

使用.net無非就是寫幾行IF Else IF Else 搞定的事情,但如果修改修改審批金額那就必須重新編譯發布。

為了達到這個目的,簡化代碼,作為一個BizTalk開發人員。就想到了類似的簡單判斷可以通過BizTalk商務規則引擎來實現。

如何整合和調用BizTalk商務規則引擎

 

1建立一個業務實體物件BizTalkRules.Expenses.ExpenseClaim在BizTalk商務規則引擎中稱Facts(事實類型)判斷的依據。因為這個Dll需要配置到GAC中才會被BizTalk 商務規則引擎擷取因此需要簽名

    

2編譯BizTalkRules.Expenses 將Dll部署到GAC中 運行 gacutil –i BizTalkRules.Expenses.dll

3配置BizTalk Business Rule Engine 開啟Business Rule Composer開始配置

配置(Conditions)條件和(Actions)步驟

說明一下Priority這個屬性如果這值越大就優先執行。

4.net中調用此規則。引用Microsoft.RuleEngine.dll,這個檔案在C:\Program Files (x86)\Common Files\Microsoft BizTalk或C:\Program Files (x86)\Microsoft BizTalk Server 2010

代碼如下

private
void button1_Click(object sender, RoutedEventArgs e)

{

BizTalkRules.Expenses.ExpenseClaim claim = new BizTalkRules.Expenses.ExpenseClaim()

{

Amount = Convert.ToInt32( this.textAmount.Text),

Category = this.cobCategory.Text,

Department = this.cboDepartment.Text,

Description = this.textDescription.Text,

Name = this.textName.Text,

Project = this.textProject.Text

};

 


Microsoft.RuleEngine.Policy policy = new Microsoft.RuleEngine.Policy("ExpensesApproval");

policy.Execute(claim);


this.textStatus.Text = claim.Status;

}

 

    

 

功能就是這樣,如果需要修改規則直接發布和部署新的Policies和Rules,而前端應用程式不需要重新便宜

 

擴充

 

可以對Microsoft.RuleEngine進行封裝後發布webService或WCF這樣就可以給更多的應用使用。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.