Transcript Welcome to the Twin Cities BizTalk User Group
Welcome to the Twin Cities BizTalk User Group
July 2006
Implementing a BizTalk Rule Engine Solution. Tips, Tricks & Best Practices
Balaji Thiagarajan ITRGroup, Inc www.itrgroupinc.com
This event is sponsored by ITR Group, Inc
Introduce you to the group
About me
• Working on BizTalk since the BizTalk 2000 days • MCP in BizTalk since August 2002 • Worked for Microsoft Consulting Services, India.
• Currently working as a BizTalk Consultant for ITRGroup, Inc.
Agenda
• Overview of BizTalk Rules Engine(BRE) • Features • Building Rules • Architecture • Rules & Orchestration • Q & A
BRE Overview What are Rules?
• Rules are – Declarative statements for capturing changing business policies – Represented as: IF
BRE Overview BizTalk Rules in a Nutshell • Lightweight .Net engine – Host-agnostic for in-process scenarios – Integrated with BizTalk Server • Powerful Framework & Tools – Supports Developers, IT Admin and IW – Complete API for design & execution • Rich Modeling Capabilities – Data Sources: .Net Objects, XML, DB – Logical expressions • Enterprise-Ready – Security, Performance, Versioning
BRE Overview Rules Tools - Development • Business Rule Composer – Bind Vocabularies – Build & test policies – Deploy Policies • Visual Studio.NET
– OD – Integrate policies & processes – Build supporting code • Fact Retrievers – long term facts • Custom operations
BRE Overview Rules Tools – Admin/Management • Rule Engine Deployment Wizard – Deploy policies – Export/Import policies & vocabularies • HAT – Tracking configuration – Policy execution monitoring
Demo #1
Automated Loan Processing
Agenda
• Overview of BizTalk Rules Engine(BRE) • Features • Building Rules • Architecture • Rules & Orchestration • Q & A
Features Design Time • Rich built-in library that includes: – Temporal, relational predicates – Support for ranges and regular expressions – Arithmetic operations – Engine execution control functions • Support for complex logical expressions( AND / OR NOT ) / • User-defined predicates/functions/actions • Policy testing
Features Run Time • Application integration via Policy object • Support for long-term (semi-static) & short-term (dynamic) facts • Performance optimizations • Forward Chaining Inference Mechanism – Finds all true statements given knowledge base and a new set of facts • Execution tracking
Agenda
• Overview of BizTalk Rules Engine(BRE) • Features • Building Rules • Architecture • Rules & Orchestration • Q & A
Building Rules
.Net Objects • Drag and drop public members – Actions – Predicates – Arguments • Assert .Net Instances IF MyClass.A = 5 THEN MyClass.B() MyClass Assert Engine
Building Rules Data Connection • Perform dynamic queries on a DB DataConnection(“DataSetName”,”TableName”, SqlConnection,SqlTransaction)
Building Rules Data Connection - Retrieve IF Table.CustType = “Residential” AND Table.Balance > 1000 THEN ….
SELECT * FROM Table WHERE CustType = “Residential” and Balance > 1000 TDR TDR Engine
Building Rules Data Connection - Update IF Table.CustType = “Residential” AND Table.Balance > 1000 THEN Table.Status = “Over Limit” SELECT * FROM Table WHERE CustType = “Residential” and Balance > 1000 TDR TDR Modify Engine Call DC.Update() and commit the SQL Transaction Modify
Building Rules TypedDataTable • Wrapper class on ADO.NET DataTable • Rules built against DB tables, using “Database binding type” field • Asserts individual TypedDataRows Note: If you assert a DataTable – without the TypedDataTable wrapper – it is treated as a standard .NET object
Demo #2
Automated Loan Processing with DB
Building Rules TypedXmlDocument
Building Rules TypedXmlDocument
Building Rules TypedXmlDocument IF orderline.quantity > 5 THEN orderline.discount = 10
Building Rules TypedXmlDocument • Objects are created based on XPath selectors; Xpath Field represents object “property” • Other points – Adding nodes – XPath editing
Building Rules Forward Chaining Policy • Rule 1 • If A.amount > $0 • Then B.total + A.amount
• Rule 2 • If B.total > $50 & < $100 • Then B.discount = 10% • Rule 3 • If B.total >= $100 • Then B.discount = 15% Rule Engine Agenda B.Total = B.total + A.amount
B.Discount = 10% A.Amount = $25 B.Total = $80
Building Rules Forward Chaining Policy • Rule 1 • If A.amount > $0 • Then B.total + A.amount
• Rule 2 • If B.total > $50 & < $100 • Then B.discount = 10% • Rule 3 • If B.total >= $100 • Then B.discount = 15% Rule Engine Agenda B.Total = B.total + A.amount
B.Discount = 10% B.Discount = 15% B.Discount = 15% A.Amount = $25 B.Total = $80 $105
Building Rules Engine Control Functions • Assert – Add facts to working memory • Retracts – Remove facts from working memory • RetractByType – Remove all instances of the specified type • Update – Instruct engine to reevaluate relevant facts/conditions
Building Rules Engine Control Functions • CreateObject – Exposed as constructors in Composer • Halt – Stop engine processing • Clear – Clear facts from memory – Clear actions from agenda • Executor – Handle to the rule engine instance
Agenda
• Overview of BizTalk Rules Engine(BRE) • Features • Building Rules • Architecture • Rules & Orchestration • Q & A
Schematic Architecture
Architecture Policy Instantiation – Get RE Instance
Architecture Policy Instantiation – Execute Engine
Architecture Policy Instantiation – Get RE Instance
Demo #3
Policy Testing
Agenda
• Overview of BizTalk Rules Engine(BRE) • Features • Building Rules • Architecture • Rules & Orchestration • Q & A
Rules and Orchestration Patterns Illustrated
Rules and Orchestration Patterns Illustrated