前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BizTalk开发小技巧-.Net 调用BizTalk Business Rule Engine

BizTalk开发小技巧-.Net 调用BizTalk Business Rule Engine

作者头像
阿新
发布2018-04-12 16:15:01
6310
发布2018-04-12 16:15:01
举报
文章被收录于专栏:c#开发者c#开发者

BizTalk开发小技巧-.Net 调用BizTalk Business Rule Engine

BizTalk Business Rule Engine:BizTalk业务规则引擎,它的主要功能和特点是在不改变流程,不重新部署工程的情况下,动态的配置策略信息,修改策略逻辑.达到动态的业务配置目的。类似WF的工作原理类似。

这次就是讲在.net windows form的应用程序中调用BizTalk Business Rule Engine配置好业务规则。

实验的场景:

     模拟报销审批的简单示例,报销金额<多少,审批通过。

源代码

代码语言:javascript
复制
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这样就可以给更多的应用使用。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-12-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • BizTalk开发小技巧-.Net 调用BizTalk Business Rule Engine
    • 实验的场景:
      • 如何集成和调用BizTalk业务规则引擎
        • 扩展
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档