Module 11: Integrating Business Rules

advertisement
Module 11: Integrating Business Rules
Time estimated: 120 minutes
Module objective:
In this module, you will learn how to compose and deploy business rules.
Overview
The Microsoft® BizTalk® Server Business Rule Engine allows business users to work with
developers to create and maintain policies containing business rule sets. These policies can be
quickly updated and immediately applied without the need to recompile and redeploy a BizTalk
assembly. Policies can be called from within a BizTalk orchestration and from other Microsoft
.NET applications. This module provides an overview of the Business Rule Engine and describes
the use of policies, rules, and vocabularies. This module also covers execution of business
policies from BizTalk Server 2010.
Lesson 1: Introduction to Business Rules
Lesson objective:
Describe the concepts and terminology used when working with business rules in BizTalk Server
2010.
Lesson Overview
Because an organization’s business rules can change frequently, BizTalk Server enables you to
create business rules that can be modified quickly and easily to meet changing business needs
and the needs of your customers. In this lesson, you will learn what a business rule is and how
business rules are integrated into a BizTalk application environment. You will also see how
developers, business analysts, and administrators work together in order to create, deploy, and
maintain business rules.
What Are Business Rules?
Describe business rules and explain how they can be used to make business decisions.
Business Rules
Business rules are statements that govern the conduct of business processes. A policy is a
collection of related rules that are evaluated together, for example, a bank’s loan approval
policy might be composed of several different rules that need to be evaluated. The policy is
executed, and each rule is evaluated and possibly applied.
Each rule consists of a condition (an if clause) and a resulting action (a then clause). The
conditions and actions can be quite simple or very complex. The condition is evaluated, and if it
evaluates to True, the specified actions are performed by the rule engine. Unlike in most
programming models, there is no else action. For example, if you want to perform an action on
all purchase orders, but the action varies based on the total order amount, you would need to
create two rules, one for purchase orders with a total of less then $1,000 and one rule for
purchase orders with totals greater than or equal to $1,000. These two rules would make up the
discount policy.
Within a policy, the various rules can have different priorities assigned. These priorities do not
modify the order of evaluation but rather the order that the rules are fired in. That is, if multiple
rules are to be fired (on the agenda), the priority will determine the order that the rules are
applied. In this case, the rule that has the highest assigned priority will be fired.
Example
Consider the following example business rule from the preceding illustration.
A manufacturer has received a purchase order from a customer and needs to fulfill the purchase
order request. In order to process the purchase order, the manufacturer must answer a series of
questions:

Is this purchase order from an existing customer or a new customer? If the customer is
new, the customer must be added to the database. If the customer already exists, the
next step in the business rule can be called.

Is the product being ordered a product that we manufacture? If so, we can continue
processing the purchase order. If not, the purchase order must be declined.

Can we supply the product being requested? If the quantity on hand is less than the
order quantity, we can supply the product. If not, we will either have to decline the
purchase order or send a backorder notice.
Notice in the example that each question can be answered either True or False. These rules
apply basic business logic to find out whether or not a purchase order can be fulfilled.
Business rules can be used to:



Trigger notifications. For example, if a product is low on inventory, a business rule could
trigger a reorder notice for the product.
Automate approvals. You could use a business rule, for example, to route documents
with a total order amount over $10,000 to a manager for approval.
Reroute documents. If a purchase order is from a new customer, you could route the
purchase order to another business process that handles new customers.
Business Rule Engine
Since business rules embedded in applications can change over time, BizTalk Server 2010
provides the Business Rule Engine (BRE) to enable you to create and modify sets of business
rules. These rules can be created graphically using a tool called the Business Rule Composer or
can be written using the Business Rule APIs. Once published, the policy can be called from a
BizTalk orchestration and executed by the Business Rule Engine.
The BRE enables business rule policies to be changed in real time. Any orchestrations that use
(call) the business rules need not be recoded or rebuilt when the business policy changes.
Business rules are versioned together as part of a business policy, and all a business analyst
needs to do when a rule changes is create a new version of a policy and then deploy the policy.
Note: Although typically used in conjunction with BizTalk orchestrations, business rule policies
can be called from any .NET assembly by using the supplied APIs. The focus of this module will
be on using business rules in conjunction with orchestrations. The BizTalk Server 2010
documentation contains more information about calling business rules programmatically,
including an example in the BizTalk SDK.
What Are Rules, Policies, and Vocabularies?
Define common business rule terminology.
Overview
The following sections describe common business rule terminology.
Rule
Business rules are statements that govern the conduct of business processes. Business rules
consist of a condition and one or more consequent actions. Conditions are true/false, otherwise
known as Boolean expressions, that consist of one or more predicates applied to facts. Multiple
conditions can be combined to provide for complex computations. Complex conditions can be
constructed by joining multiple simple conditions using AND, OR, and NOT modifiers. For
example, when evaluating a customer order, you could have a rule such as: If customer exists
AND total order amount > 1000 OR if customer exists AND customer rating = excellent THEN set
discount amount = 10%.
Policy
Policies are logical rule sets. You compose a version of a policy, save it, test it by applying it to
facts, and when you are satisfied with the results, publish it and deploy it to a production
environment. Policies are versioned and deployed, so if a rule changes, you simply create a new
version of the policy, test the policy, and then deploy it. You do not have to recompile or modify
orchestrations or other business processes that are using a particular business policy.
When called from an orchestration, the Business Rule Engine will always execute the latest
version of a policy. Changes made to a business rule policy will be immediate. The next time the
policy is called from an orchestration, the most recently deployed version will be used. After it is
published, a business rule policy is immutable and can be changed only by creating a new
version.
Vocabulary
Vocabularies are user-defined names for the facts used in rule conditions and actions.
Vocabulary definitions render rules easier to read, understand, and share for the various
workers within a particular business domain. For example, the source location for a particular
fact might be a field in a particular record within a database, represented as an SQL query.
Instead of employing the SQL query (an abstract procedural statement, difficult for most people
to memorize or recognize) in the rule, a name meaningful to all the relevant parties in the
development and deployment process can be associated with the query by creating a
vocabulary definition. When you create a new vocabulary definition, you can choose from one
of the following:




A constant value, a range of values, or a set of values
A .NET class or class member
An XML document element or attribute
A database table or column
Creating the necessary vocabulary for business rules makes reading, comprehending, and
updating the business rules much easier than without using vocabularies. In addition to the
vocabularies you can create, the Business Rule Composer uses predefined vocabularies for the
predicates and functions used in the rule evaluations and actions.
Rule Store
The rule store is a repository for business policies and vocabularies. Policies and vocabularies are
deployed to the rule store. The rule store is by default the Business Rule Database
(BizTalkRuleEngineDb). This database is created when configuring business rules for the BizTalk
group. Additionally, policies and vocabularies can be exported to an XML file to simplify
modification and deployment between test and production environments.
How Rules and Facts Work
Define business rules, actions, and facts.
Business Rules
A business rule consists of a condition and one or more resulting actions. As mentioned before,
business rules are If/Then conditions, and there is no Else clause. Each business rule either
returns True or False.
Conditions
A condition is a True/False (Boolean) expression that consists of one or more predicates applied
to facts. Predicates can be combined with the logical connectives AND, OR, and NOT to form a
logical expression that is potentially quite large but that will always evaluate to either True or
False.
Actions
An action is the functional consequence of condition evaluation. If a rule condition is met, a
corresponding action or actions are initiated. Actions are represented in the Business Rule
Framework as Microsoft .NET–based objects or as set operations on XML documents or
database tables. For example, if a business rule that checks whether or not a customer is
preferred returns true, you could then call a method of a .NET class to execute code in the class.
You could also update elements or attributes in an XML schema document, or you could update
data in a Microsoft SQL Server™ database. You can execute more than one action within the
THEN clause.
Facts
Facts are the data that rules use to make decisions. Facts can be derived from multiple data
sources and must be fed into the rule engine through pre-defined vocabularies, XML schemas,
.NET classes, or database row sets. Many facts are instance facts that will be different for each
firing of the rules. For example, the customer name and account number fields in a PO message
are instance facts. Other facts may be long term. For example, interest rates usually change
infrequently and do not need to be looked up each time a rule is fired. Long-term facts are
determined once and then held in the cache until refreshed, whereas instance facts are
determined for each rule execution. A fact can be configured as a long-term fact by setting the
Fact Retriever property for each version of the policy in the properties window for the version
of the policy. A fact retriever object must be created to be able to fetch the facts from a
persistent storage and present them to the policy object.
For More InformationFor more information on creating a long-term fact, refer to the BizTalk
Server 2010 documentation “Creating a Fact Retriever” and “Short-Term Facts vs. Long-Term
Facts.”
Business Rule Execution
Define business rules, actions, and facts.
Business Rule Execution
The Business Rule Engine uses a three-stage algorithm for policy execution. The stages are as
follows:
Match. In the match stage, facts are matched against the predicates that use the fact type
(object references maintained in the rule engine's working memory) using the predicates
defined in the rule conditions. For the sake of efficiency, pattern matching occurs over all the
rules in the policy, and conditions that are shared across rules are matched only once. Partial
condition matches may be stored in working memory to expedite subsequent pattern-matching
operations. The output of the pattern-matching phase consists of updates to the rule engine
agenda.
Conflict resolution. In the conflict resolution stage, the rules that are candidates for execution
are examined to determine the next set of rule actions to execute based on a predetermined
resolution scheme. All candidate rules found during the matching stage are added to the rule
engine's agenda.
The default conflict resolution scheme is based on rule priorities within a policy. The priority is a
configurable property of a rule in the Business Rule Composer. The larger the number, the
higher the priority; therefore if multiple rules are triggered, the higher-priority actions are
executed first.
Action. In the action stage, the actions in the resolved rule are executed. Note that rule actions
can assert new facts into the rule engine, which causes the cycle to continue. This is also known
as forward chaining. It is important to note that the algorithm never preempts the currently
executing rule. All actions for the rule that is currently firing will be executed before the match
phase is repeated. However, other rules on the agenda will not be fired before the match phase
begins again. The match phase may cause those rules on the agenda to be removed from the
agenda before they ever fire.
Business Rules Orchestration Scenarios
Describe scenarios for integrating business rules within an orchestration.
Common Orchestration Scenarios
Instead of having to code and recode constantly changing business policies and logic within your
complex business processes, you can incorporate a call to the Business Rule Engine and thus
allow information workers to update the rules as needed.
Overview
You can integrate business rules into your orchestrations to support a variety of scenarios:



You can use rules to determine whether another business process needs to be
executed. For example, after successfully placing a customer order, you might want to
call a second orchestration that handles the shipping of orders.
You can use rules to evaluate business logic and to determine when a business process
requires a variable delay. For example, you might set up a loop to check on the status of
an item to see if the item is in stock. After initially checking the stock of an item that is
not available, the rule delay would be one minute. The next time, the rule would wait
five minutes before executing, the following time, the rule would wait 30 minutes
before executing, and so on.
You can use rules to determine the execution path for a business process, basing the
determination on the results of the rule execution. For example, if the customer
submitting the purchase order does not exist in the database, you could route the
document to another business process to add the customer to the database before
continuing to process the purchase order.
Identifying Business Rule Personas
Identify job roles and responsibilities for managing business rules.
Overview
The Business Rules Framework incorporates a graphical user interface—the Business Rule
Composer—that developers, information workers, and administrators can all use in various
ways to develop and apply both rules and policies.
Developers can:

Create the orchestrations from which the business rules will be called, and they define
the action to be taken when a decision is returned to the orchestration. As long as the
decision path within the orchestration does not change, the orchestration will not need
to be redeployed.

Create the initial business rule policies and create vocabularies to make it easier for
information workers to edit and understand business rule policies.
Information workers can:

Design, test, and manage business policies. Changes made to a BRE policy will be
executed from an orchestration without having to recompile and redeploy the BizTalk
assembly. The BRE always calls the latest deployed version of the policy.
Administrators can:



Secure business rule policies. By default, when a new policy or vocabulary is created in
the rule store, only the user who created it and the rule engine administrator have both
read/execute and modify/delete access. The rule engine administrator can configure
which users have the access level, or rights, to perform different operations (processes
operate under user credentials).
Deploy business rule policies from one physical environment to another. Deploying
business rules to other physical environments is accomplished by using the Rules Engine
Deployment Wizard and is covered later in this module. Rules can also be exported and
imported using Microsoft Windows® Installer (MSI) packages.
Monitor the results of executed business rules by using the BizTalk Administration
Console. This tool allows auditing of the rules-based decision made within each
orchestration instance.
Lesson 2: Integrating Business Rules
Lesson objective:
Compose, publish, and deploy business rules.
Overview
BizTalk provides several tools for developing and deploying business rules and for applying them
to business processes. In this lesson, you will learn how to integrate a business rule policy into
an orchestration and how to use the Business Rule Composer to create easy-to-understand
vocabularies and policies. These policies can then be versioned and deployed before being
called from an orchestration. You can also track business rules to find out the true or false
outcome of a rule.
Steps for Integrating Business Rules
Describe the steps required to integrate business rules within an orchestration.
Integrating Business Rules
When developing rule-based applications, you must complete the following steps:
1. Identify the business logic that you would like to represent with rules in your
application. The term business logic can refer to a wide variety of decision processes, for
example, “Purchase orders for more than five hundred dollars must be approved by a
manager.”
2. Identify the data sources for your rule elements. Optionally, you can also define and
publish vocabularies—domain-specific nomenclatures that represent underlying
bindings.
3. Create rules either from your vocabulary definitions or directly from data bindings; using
these rules, compose a policy that will represent your business logic.
Optionally, you may choose to create a fact retriever and associate it with a policy to
employ long-term facts. This step is used only if you want to employ a long-term
fact, as discussed earlier in this module.
4. Test and debug the policy by using sample facts. (You can create a PolicyTester object in
your application. Testing a policy before integrating it in an orchestration allows you to
ensure that the policy is working correctly before testing it from an orchestration.
Troubleshooting a policy is much easier if you will test the policy before integrating it
with an orchestration. For more information on creating a PolicyTester object to test a
business policy, refer to the BizTalk Server 2010 documentation “Testing Policies” and
“Creating a Fact Creator.”)
5. Publish and deploy the policy version to the rule store. After a policy version is
published, it is immutable but still not available for other applications to use the policy.
Deploying the policy version makes the policy available to other applications.
6. Call the policy from a BizTalk orchestration.
a. Instantiate and build the short-term fact list in the hosting application.
b. Instantiate a policy version in your hosting application, and then execute it by
using your short-term fact list. If you are using a PolicyTester object, replace it
with a Policy object in your application. Policy objects are used when executing
long-term facts instead of short-term facts.
c. Add the call rules shape to the orchestration and provide the parameters used
by the BRE.
d. Monitor and track rule execution as needed. Business rule policy tracking is
configured by using the BizTalk Server 2010 Administration Console and is
covered later in this module.
Composing Business Rules
Use the Business Rule Composer to define business rules.
Business Rule Composer
The Business Rule Composer is a graphical user interface that allows you to create business rule
policies, which contain one or more business rules. These rules can evaluate facts to determine
if specific actions should be performed. To assist in humanizing these rules, vocabularies can be
created that provide a user-friendly alias to the terms and conditions. Multiple versions of the
policies and vocabularies can be created, tested, published, and deployed using the Business
Rule Composer to make management of these artifacts easier.
Create Business Rule Policy
A policy is a collection of rules. Each rule is a conditional comparison of facts, which if the
comparison evaluates to True causes the actions defined in the rule to be executed. Rules are
constructed in the Rule Composer pane by adding predicates and facts (which may be direct
facts or may be based upon vocabularies) and defining actions. AND, OR, and NOT operators can
be added to conditions to provide for complex comparisons.
Facts and actions are added by dragging them onto the Rule Composer design surface. Actions
will modify nodes in the document specified. This is one notable exception to the immutability
of messages in BizTalk orchestrations because the actions can update or even add new nodes
and/or nodelists to the provided message(s). The Business Rule Engine (BRE) makes changes to
the messages that it passes in the call to the engine. For this reason, you may want to create a
specific message that is sent to the engine rather than having the BRE change the original
document.
In the earlier example, the “give the customer a 10 % discount” action will update the Discount
Amount node in the AdventureWorks.Orders.CustomerOrder message.
Additional actions (such as asserting and retracting facts) can be added by right-clicking the
Actions node and then clicking the appropriate action.
Testing, Publishing, and Deploying a Policy
When a version of a policy is defined to the satisfaction of the business analyst, the policy
should be tested prior to publishing it. The act of publishing the policy to the Rule Store makes
the policy available to the BRE. By default, the BRE uses a SQL Server database as the Rule Store.
However, rules can be exported to an XML-based Rule Store as well. Once published, policy
versions are immutable and cannot be changed without creating a new version. Remember that
rules must also be deployed before they can be used by other applications.
In order for the policy to be called from a BizTalk application, the policy must be deployed.
BizTalk will always use the most recently deployed policy version when the policy is called by an
application, whereas when called from a .NET assembly, a specific policy version is specified.
Create a Business Rule Vocabulary
Previously we introduced a rule that said:
If the Shopping Cart contains more than $1000 worth of items, then give the customer a 10
percent discount.
As written, this rule is easy to understand. The rule is a Boolean comparison (greater than)
between two variables: the shopping cart and a value of 1000. The action to be performed is to
apply a 10 percent discount to the total order. The problem is that computers do not think in
these terms. In computer terms, this looks like:
If
Company.Namespace.ShoppingCart.PurchaseAmount > Qualifying Amount
as System.Decimal
Then
Company.Namespace.Customer.DiscountAmount =
Company.Namespace.ShoppingCart.PurchaseAmount * .1
We create vocabularies to make an obscure concept more human.
Although rules can be created and used without the use of vocabularies, creating vocabularies
makes the creation and maintenance of rules much easier. Vocabularies abstract difficult
concepts by defining an alias to be associated with schema nodes, database fields, or .NET
classes. With correctly defined vocabularies, policies can be maintained by (if not initially
created) by information workers.
Two vocabularies, Predicates and Functions (which are used in the creation of all rules), are built
into the Business Rule Composer. It is possible to extend these vocabularies as needed. For
example, the phrase “The Shopping Cart contains more than $ 1000 worth of items” is actually a
greater than comparison: (ShoppingCart > 1000). The built-in Greater Than function in the
functions vocabulary could have an additional vocabulary term defined that represents this
relationship. This may make it easier for information workers to understand the relationship.
Publishing Business Rule Vocabularies
Similar to policies, vocabularies must be published before they can be incorporated into a policy;
however, there is no option to deploy. If the vocabulary used in a policy changes, it will be
necessary to update the policy to use the newly published vocabulary.
Foreign Language Support
Although the examples here are using the English language, vocabularies can be written in
various languages, making data defined in databases and schemas more accessible to nonEnglish speakers.
Demonstration: Using the Business Rule Composer
Learn to examine and test a deployed business rule policy.
Note: In order to be able to fully explain the vocabularies and rules used in this demonstration,
you will need to complete the lab at the end of this module.
To Examine Existing Business Rules
1. On the Start menu, point to All Programs, point to Microsoft BizTalk Server 2010, and
then click Business Rule Composer.
2. In the Open Rule Store dialog box, click OK.
3. In Microsoft Business Rule Composer, in the Policy Explorer pane, expand
LoanAppApproval, Version 1.0 – Deployed, and Version 1.1 – Deployed.
The two policy versions have identical rules, except that Version 1.0 is in readable
English because it uses vocabularies. Version 1.1 does not use vocabularies, and it is
more difficult to understand the contextual sense of what each rule is doing.
4. In the Facts Explorer pane, under LoanProcess, expand Version 1.0 – Published.
A vocabulary is a collection of definitions that provide simple-to-read aliases for
complex message values or fields in a database.
5. Click Base Income.
The Current Order Total definition refers to the BasicSalary field of the message
when it is received into the Business Rule Engine (BRE). This value is from the
LoanApplication schema, which you can see by examining the Schema and XPath
properties in the Properties dialog box.
6. Click Month Range.
The Month Range definition contains a set of predetermined values; these values are
3, 6, 9, 12, 18, and 24. When used as part of a rule, these values are displayed as a
drop-down list.
7. Click Update Loan Status.
The Update Loan Status definition is used to update the Status field of the message.
8. In Policy Explorer, under Version 1.1 – Deployed, click Approved.
The Conditions pane shows that this rule is applied when BasicSalary + OtherIncome
is greater than the LoanAmount, and Employment/TimeInMonths is greater than or
equal to 6, or the Residency/TimeInMonths is greater than or equal to 6. The Actions
pane shows that the LoanStatus field will be assigned a value of Approved.
9. In Policy Explorer, under Version 1.0 – Deployed, click Approved.
Although this rule performs the same action as the Approved rule is version 1.1, it’s
much more readable. The rule is applied when Monthly Base Income + Monthly
Secondary Income is greater than Requested Loan Amount, and Months Employed is
greater than or equal to 6, or Months in Current Home is greater than or equal to 6.
Examine both versions of the other three rules and determine what each rule does.
To Test the Business Rule Policy
1. In Windows Explorer, navigate to C:\AllFiles\DemoCode\Module11, and open
LoanApplication - Approved.xml.
Notice that LoanStatus is blank and that the sum of BasicSalary and OtherIncome is
greater than LoanAmount, and both TimeInMonths fields are greater than 6. This
message will be Approved.
2. In Windows Explorer, navigate to C:\AllFiles\DemoCode\Module11, and open
LoanApplication - Denied.xml.
Notice that LoanStatus is blank, that the sum of BasicSalary and OtherIncome is less
than LoanAmount, and both TimeInMonths fields are less than 6. This message will
be Denied.
3. Close Microsoft Internet Explorer®.
4. In Policy Explorer, right-click Version 1.0 – Deployed, and then click Test Policy.
5. In the Select Facts dialog box, click AdvWorks.LoanApproval.LoanApplication, and then
click Add instance.
6. In the Open dialog box, navigate to C:\AllFiles\DemoCode\Module11, click
LoanApplication – Approved - Copy.xml, and then click Open.
Be sure to keep a copy of the original message because the Business Rule Engine will
alter the test message.
7. In the Select Facts dialog box, click Test.
8. In the Output pane, notice that are two RULE FIRED events, one for the Loan to Salary
Ratio rule, and one for the Approved rule.
9. In Windows Explorer, navigate to and open
C:\AllFiles\DemoCode\Module11\LoanApplication – Approved - Copy.xml, and notice
that the LoanStatus field now reads Approved, and the LoanToIncome field now reads
0.555.
10. In Policy Explorer, right-click Version 1.0 – Deployed, and then click Test Policy.
11. In the Select Facts dialog box, click C:\AllFiles\DemoCode\Module11\Copy of
LoanApplication – Approved.xml, and then click the Remove instance button.
12. In the Select Facts dialog box, click AdvWorks.LoanApproval.LoanApplication, and then
click the Add instance button.
13. In the Open dialog box, navigate to C:\AllFiles\DemoCode\Module11, select Copy of
LoanApplication – Denied.xml, and then click Open.
You are using the copy of the original message because the Business Rule Engine will
alter the test message.
14. In the Select Facts dialog box, click Test.
15. In the Output pane, notice that are three RULE FIRED events, one for the Loan to Salary
Ratio rule, one for the Denied Income rule, and one for the Denied Residency or
Employment rule.
16. In Windows Explorer, navigate to and open C:\AllFiles\DemoCode\Module11\Copy of
LoanApplication – Denied.xml, and notice that the LoanStatus field now reads Denied,
and the LoanToIncome field now reads 1.2.
17. Pause the bt10d-demos virtual machine.
Deploying Business Rules
Deploy policies.
Overview
After a policy is published, it must be deployed before it can be used by external processes. The
shortcut menu in the Business Rules Composer has an option to deploy the policy. The Rule
Engine Deployment Wizard, found on the BizTalk program menu, can be used to export and
import business rule policies to and from a Business Rule Language (BRL) file and to publish
policies to the SQL rule store. You can use this wizard in development, staging, and production
environments.
BizTalk Server provides the ability to import, export, deploy and undeploy policies and
vocabularies in the Business Rules database by using the BizTalk Server Administration Console.
This assumes, however, that the policies and vocabularies are exported and imported as part of
a BizTalk application’s MSI package.
You may also export and import policies and vocabularies as XML files by using the Rule Engine
Deployment Wizard.
The Rule Engine Deployment Wizard allows you to:

Export a version of a policy or a vocabulary from an SQL rule store into a file rule store.
This creates an XML file that contains the configuration information for the policy or



vocabulary being exported. This XML file can then be copied to another computer to be
imported at a later date.
Import a version of a policy or vocabulary from a file rule store into an SQL rule store.
Deploy a version of a policy and publish a vocabulary from an SQL rule store to a
production SQL rule store so that the policy can be run within a rule-based application.
Deploying a rule makes the rule available to other business processes.
Undeploy a version of a policy and remove a vocabulary from an SQL rule store to make
the policy unavailable for use by a rule-based application. Undeploying a version of a
policy does not remove the policy from the database. The policy is still saved in the
Rules Engine database, but it cannot be used by other applications. Use this if you want
to revert to a previous version of the policy.
Integrating Business Rules into an Orchestration
Integrate business rules into an orchestration.
Integrating Business Rules
You can incorporate business rules within your BizTalk orchestrations by performing the
following tasks:

Adding a call rules shape inside the orchestration and setting the Configure Policy
property to specify the business rule you are calling. You specify only the name of the
business policy you will be calling and not the version number of the policy. The most
current version of the policy will always be used when calling from an orchestration.

In many cases, you will want to define a separate Message variable and add a message
construct shape to the orchestration. This will allow you to construct a message that
contains only the values that will be needed by the BRE. Also, since the BRE call can
modify the submitted message, you may want to submit a copy rather then the original
message. Use the Orchestration View window to create a message variable that maps to
the message type of the message you will be sending to the BRE.

Using a decision shape (or other shape) to process the response from the Business Rule
Engine. Other shapes at this step that could be used instead include the Delay shape and
the Call Orchestration shape, depending on what you want to do after receiving the
results of the business policy.
Demonstration: Integrating Business Rules into an Orchestration
Learn to configure the call rules orchestration shape.
Add a Call Rules Shape
1. Resume the bt10d-demos virtual machine.
2. In Windows Explorer, navigate to C:\AllFiles\DemoCode\Module11\AdvWorks, and
then double-click AdvWorks.sln to open the solution.
3. In Solution Explorer, double-click ProcessLoans.odx to open the orchestration.
4. From the Toolbox, drag a Call Rules shape to the orchestration directly below the
Receive Credit SO shape.
5. In the CallRules_1 Properties window, in the Name box, type Call Loan Approval Policy,
and then click the ellipsis (…) button next to the Configure Policy box.
6. Choose LoanAppApproval from the Select the business policy you wish to call list, set
the Parameter Name to msgLoanApp, and then click OK.
This orchestration will now pass the msgLoanApp message to the Business Rule
Engine, relying on it to executethe LoanAppApproval policy, and update the
message’s LoanStatus field.
The Call Rules orchestration shape always instructs the Business Rule Engine to
process the message with the latest version of the LoanAppApproval policy that has
been deployed.
7. Close all open windows, and shut down the bt10d-demos virtual machine.
Tracking Business Rules Policy Execution
Track business rule execution.
Tracking Policy Execution
You can monitor business rule activities and track the overall progress of an orchestration that
uses the Business Rules Framework by using the BizTalk Server 2010 Administration Console.
You can view a list of the deployed business rule policies, and you can view and change the
current tracking configuration for any currently deployed policies.
To set tracking options for a policy, select the application associated with the rule, and then click
Policies. All polices that are associated with this application (and all versions of these policies)
are displayed. If the policy that you want to manage is not displayed, right-click Policies to add
the policy to the application.
Tracking Options
To configure tracking properties for a policy, right-click the policy to access its properties and to
configure tracking. There are four options for tracking business rules from the BizTalk Server
Administration Console:
1. Fact Activity. Select this check box when tracking the instance data on which the policy
operates.
2. Condition Evaluation. This check box allows you to track the True/False result of the
conditions in the selected policy.
3. Rule Firings. This check box allows you to track the actions triggered as a result of the
policy.
4. Agenda Updates. Select this check box when you want to track updates to the agenda,
which contains a list of actions that evaluated to True and a list of rules that fired.
Once you have turned on tracking for your business policies, execute your queries as normal in
the BizTalk Server Administration Console. You should see a link to access the business rule
execution for each message that was processed by the Business Rule Engine. You can then see
the True/False values of policies that were executed in the BRE along with the If/Else condition
that was evaluated.
Polices that have been added to an application can be managed with the rest of the application.
This includes the ability to undeploy policies and to include the policies when the MSI is
exported. Undeployed policies will still be visible within the application. In this way, policies can
be managed by undeploying and redeploying the application as necessary.
Lab: Integrating Business Rules
Time estimated: 60 minutes
Scenario
The Microsoft Business Rule Engine (BRE) enables you to apply declarative rules based on
messages from BizTalk orchestrations. Using the BRE enables you to separate the
implementation of the business process (orchestration) from business decisions that are likely to
change over time. Vocabularies are a collection of easy-to-read definitions for the facts used by
the BRE. When vocabularies are used to create rules, the rules can easily be updated and
maintained by business analysts who have little or no understanding of the BizTalk
implementation. In this lab, you will create a vocabulary with several definitions. You will then
create a rule policy by using the vocabulary you created. Finally, you will integrate the Business
Rule Engine policy into an orchestration.
Start the Virtual Machine
Procedure List
1. If the Server Manager window is not already open, click on the Server Manager icon
located in the task bar next to the Start button.
2. Expand Roles, Hyper-V, Hyper-V Manager. The last node to appear displays the
machine name. Click on it to see the list of virtual machines available.
3. Double-click the virtual machine bt10d-11 to open a Virtual Machine Connection
window.
4. Click on the Action menu in the Virtual Machine Connection window and choose Start.
5. Once the virtual machine starts, press CTRL+ALT+END.
6. Log on using the user name Administrator and the password pass@word1.
7. At the Windows Activation prompt, click Ask Me Later, then click OK.
Ensure that the BizTalk Services are started
Procedure List
1. In Windows Explorer, navigate to C:\AllFiles.
2. Double click startBtServices.cmd.
3. When prompted, press any key to close the command-line window.
Exercise 1: Creating a Business Rule Engine Vocabulary
Overview
The Business Rule Engine (BRE) makes decisions based on facts derived from .NET classes, XML
schemas, and SQL databases. The sources of these facts can be difficult for humans to read and
understand. Vocabulary definitions are human-friendly aliases for the facts used by the BRE. In
this exercise, in order to simplify the creation of business rules, you will create a vocabulary that
contains several definitions.
Create a New Business Rule Vocabulary
Procedure List
1. On the Start menu, click All Programs, click Microsoft BizTalk Server 2010, and then
click Business Rule Composer.
2. In the Open Rule Store dialog box, click OK.
3. In the Facts Explorer pane, on the Vocabularies tab, right-click Vocabularies, and then
click Add New Vocabulary.
4. Rename the new vocabulary to LoanProcessing.
Vocabularies contain reusable mappings between user-friendly text and the
underlying data sources used in a rule definition.
Create New “Get” Operation Definitions
Procedure List
1. Under LoanProcessing, right-click Version 1.0 (not saved), and then click Add New
Definition.
2. On the Welcome to the Vocabulary Definition Wizard page, click XML Document
Element or Attribute, and then click Next.
3. In the Definition name box, type Primary Income.
4. In the Definition description box, type Amount of principal income.
5. Click the Browse button, navigate to
C:\AllFiles\LabFiles\Lab11\AdvWorks\LoanApproval\LoanApplication.xsd, and then
click Open.
6. In the Select Binding dialog box, expand LoanApp and Income, click BasicSalary, and
then click OK.
7. Click Perform “Get” operation.
8. In the Display name box, type Monthly Primary Income, and then click Finish.
9. Under LoanProcessing, right-click Version 1.0 (not saved), and then click Add New
Definition.
10. On the Welcome to the Vocabulary Definition Wizard page, click XML Document
Element or Attribute, and then click Next.
11. In the Definition name box, type Employment (months).
12. In the Definition description box, type Length of employment.
13. Click the Browse button, navigate to
C:\AllFiles\LabFiles\Lab11\AdvWorks\LoanApproval\LoanApplication.xsd, and then
click Open.
14. In the Select Binding dialog box, expand LoanApp and Employment, click
TimeInMonths, and then click OK.
15. Click Perform “Get” operation.
16. In the Display name box, type Months Employed, and then click Finish.
17. Under LoanProcessing, right-click Version 1.0 (not saved), and then click Add New
Definition.
18. On the Welcome to the Vocabulary Definition Wizard page, click XML Document
Element or Attribute, and then click Next.
19. In the Definition name box, type Loan Amount.
20. In the Definition description box, type Desired loan amount.
21. Click the Browse button, navigate to
C:\AllFiles\LabFiles\Lab11\AdvWorks\LoanApproval\LoanApplication.xsd, and then
click Open.
22. In the Select Binding dialog box, expand LoanApp and LoanConditions, click
LoanAmount, and then click OK.
23. Click Perform “Get” operation.
24. In the Display name box, type Requested Loan Amount, and then click Finish.
25. Under LoanProcessing, right-click Version 1.0 (not saved), and then click Add New
Definition.
26. On the Welcome to the Vocabulary Definition Wizard page, click XML Document
Element or Attribute, and then click Next.
27. In the Definition name box, type Residency (months).
28. In the Definition description box, type Length at residence.
29. Click the Browse button, navigate to
C:\AllFiles\LabFiles\Lab11\AdvWorks\LoanApproval\LoanApplication.xsd, and then
click Open.
30. In the Select Binding dialog box, expand LoanApp and Residency, click TimeInMonths,
and then click OK.
31. Click Perform “Get” operation.
32. In the Display name box, type Months at Current Residence, and then click Finish.
33. Under LoanProcessing, right-click Version 1.0 (not saved), and then click Add New
Definition.
34. On the Welcome to the Vocabulary Definition Wizard page, click XML Document
Element or Attribute, and then click Next.
35. In the Definition name box, type Secondary Income.
36. In the Definition description box, type Income from sources other than primary
income.
37. Click the Browse button, navigate to
C:\AllFiles\LabFiles\Lab11\AdvWorks\LoanApproval\LoanApplication.xsd, and then
click Open.
38. In the Select Binding dialog box, expand LoanApp and Income, click OtherIncome, and
then click OK.
39. Click Perform “Get” operation.
40. In the Display name box, type Monthly Secondary Income, and then click Finish.
Create the Update Loan Status “Set” Operation Definition
Procedure List
1. Under LoanProcessing, right-click Version 1.0 (not saved), and then click Add New
Definition.
2. On the Welcome to the Vocabulary Definition Wizard page, click XML Document
Element or Attribute, and then click Next.
3. In the Definition name box, type Update Loan Status.
4. Click the Browse button, navigate to
C:\AllFiles\LabFiles\Lab11\AdvWorks\LoanApproval\LoanApplication.xsd, and then
click Open.
5. In the Select Binding dialog box, expand LoanApp and LoanConditions, click LoanStatus,
and then click OK.
6. Click Perform “Set” operation, and then click Next.
7. In the Display format string box, type Update the Loan Status for this loan to {0}, and
then click Finish.
Create the Set Loan to Income Ratio “Set” Operation Definition
Procedure List
1. Under LoanProcessing, right-click Version 1.0 (not saved), and then click Add New
Definition.
2. On the Welcome to the Vocabulary Definition Wizard page, click XML Document
Element or Attribute, and then click Next.
3. In the Definition name box, type Set Loan to Income Ratio.
4. Click the Browse button, navigate to
C:\AllFiles\LabFiles\Lab11\AdvWorks\LoanApproval\LoanApplication.xsd, and then
click Open.
5. In the Select Binding dialog box, expand LoanApp and LoanConditions, click
LoanToIncome, and then click OK.
6. Click Perform “Set” operation, and then click Next.
7. In the Display format string box, type The loan to income ratio for this loan is: {0}, and
then click Finish.
Create the Month Range Definition
Procedure List
1. Under LoanProcessing, right-click Version 1.0 (not saved), and then click Add New
Definition.
2. On the Welcome to the Vocabulary Definition Wizard page, click Constant Value,
Range of Values, or Set of Values, and then click Next.
3. In the Definition name box, type Month Range, click Set of Values, and then click Next.
4. In the Display name box, type Month Range.
5. Add the following values by typing each in the Use constant value box, and then clicking
Add after each entry: 3, 6, 9, 12, 18, 24. Click Finish.
Create the Status Range Definition
Procedure List
1. Under LoanProcessing, right-click Version 1.0 (not saved), and then click Add New
Definition.
2. On the Welcome to the Vocabulary Definition Wizard page, click Constant Value,
Range of Values, or Set of Values, and then click Next.
3. In the Definition name box, type Status Range, click Set of Values, and then click Next.
4. In the Definition type list, click System.String.
5. Add the following values by typing each in the Use constant value box, and then clicking
Add after each entry: Approved, Denied, and Pending. Click Finish.
Publish the LoanProcessing Vocabulary
Procedure List
1. In the Facts Explorer pane, under the LoanProcessing vocabulary, right-click Version 1.0
(not saved), and then click Save.
Saving the vocabulary saves the definitions to the Business Rule Engine Database,
making them immutable, but the vocabularies are not available for use until
published.
2. Right-click Version 1.0, and then click Publish.
Exercise 2: Composing a Business Rule Policy
Overview
A business rule policy is a collection of rules that are analyzed to make a decision. In this
exercise, you will use vocabulary definitions to create four business rules. These rules evaluate a
loan application and either approve the loan or mark it for manual consideration.
Create a New Policy
Procedure List
1. In Policy Explorer, right-click Policies, and then click Add New Policy.
2. Rename the policy LoanApprovalProcess.
Create the Approved Rule
Procedure List
1. Right-click Version 1.0 (not saved), and then click Add New Rule.
2. Rename the rule Approved.
3. In the IF pane, right-click Conditions, and then click Add logical AND.
4. Right-click AND, point to Predicates, and then click GreaterThan.
5. Right-click argument1, point to Functions, and then click Add.
6. Drag Primary Income from the Facts Explorer pane to value1, and then drag Secondary
Income to value2.
7. Drag Loan Amount from the Facts Explorer pane to argument2.
8. Right-click AND, and then click Add logical OR.
9. Right-click OR, point to Predicates, and then click GreaterThanEqual.
10. Drag Employment (months) from the Facts Explorer pane to argument1, and then drag
Month Range to argument2.
11. Click Month Range, and then in the drop-down list, click 6.
12. Right-click OR, point to Predicates, and then click GreaterThanEqual.
13. Drag Residency (months) from the Facts Explorer pane to argument1, and then drag
Month Range to argument2.
14. Click Month Range, and then in the drop-down list, click 6.
15. Drag Update Loan Status from the Facts Explorer pane to Actions in the THEN pane.
16. Drag Status Range from the Facts Explorer pane to <empty string>.
17. Click Status Range, and then in the drop-down list, click Approved.
Create the Denied Income Rule
Procedure List
1. Right-click Version 1.0 (not saved), and then click Add New Rule.
2. Rename the rule Denied Income.
3. Right-click Conditions, point to Predicates, and then click LessThanEqual.
4. Right-click argument1, point to Functions, and then click Add.
5. Drag Primary Income from the Facts Explorer pane to value1, and then drag Secondary
Income to value2.
6. Drag Loan Amount from the Facts Explorer pane to argument2.
7. Drag Update Loan Status from the Facts Explorer pane to Actions in the THEN pane.
8. Drag Status Range from the Facts Explorer pane to <empty string>.
9. Click Status Range, and then in the drop-down list, click Pending.
Create the Denied Residency and Employment Rule
Procedure List
1. Right-click Version 1.0 (not saved), and then click Add New Rule.
2. Rename the rule Denied Residency and Employment.
3. Right-click Conditions, and then click Add logical AND.
4. Right-click AND, point to Predicates, and then click LessThan.
5. Drag Employment (months) from the Facts Explorer pane to argument1, and then drag
Month Range to argument2.
6. Click Month Range, and then in the drop-down list, click 6.
7. Right-click AND, point to Predicates, and then click LessThan.
8. Drag Residency (months) from the Facts Explorer pane to argument1, and then drag
Month Range to argument2.
9. Click Month Range, and then in the drop-down list, click 6.
10. Drag Update Loan Status from the Facts Explorer pane to Actions in the THEN pane.
11. Drag Status Range from the Facts Explorer pane to <empty string>.
12. Click Status Range, and then in the drop-down list, click Pending.
Create the Loan to Salary Ratio Rule
Procedure List
1. Right-click Version 1.0 (not saved), and then click Add New Rule.
2. Rename the rule Loan to Salary Ratio.
3. Right-click Conditions, point to Predicates, and then click GreaterThan.
4. Drag Loan Amount from the Facts Explorer pane to argument1, click argument2, and
then type 100.
5. Drag Set Loan to Income Ratio to Actions in the THEN pane.
6. Right-click 0, point to Functions, and then click Divide.
7. Right-click value1, point to Functions, and then click Add.
8. Drag Primary Income to value1, and then drag Secondary Income to value2 (inside the
add function).
9. Drag Loan Amount to value2.
Deploy and Test the LoanApprovalProcess Policy
Procedure List
1. Under LoanApprovalProcess, right-click Version 1.0 (not saved), and then click Publish.
2. Right-click Version 1.0 - Published, and then click Deploy.
3. In Windows Explorer, navigate to C:\AllFiles\LabFiles\Lab11, and then open BREDenied.xml.
Notice that the loan amount is greater than the income amount, and that the time
at residence and the time at employer are both three months. This loan will be
denied by the policy you created.
4. In Windows Explorer, open BRE-Approved.xml.
Notice that the total income amount is greater than the loan amount, and that the
time at residence and at employer are both greater than six months. This loan will be
approved by the policy you created.
5. Close Internet Explorer.
6. In Windows Explorer, copy BRE-Denied.xml and BRE-Approved.xml to the Lab11 folder
to create duplicates to use for testing purposes.
Copies of the messages are important because the Business Rule Engine will
permanently change the message.
7. In the Microsoft Business Rule Composer, right-click Version 1.0 – Deployed, and then
click Test Policy.
8. In the Select Facts dialog box, click AdvWorks.LoanApproval.LoanApplication, and then
click Add instance.
9. In the Open dialog box, navigate to C:\AllFiles\LabFiles\Lab11, click BRE-Approved Copy.xml, and then click Open.
10. In the Select Facts dialog box, click Test.
11. In the Microsoft Business Rule Composer, right-click Version 1.0 – Deployed, and then
click Test Policy.
12. In the Select Facts dialog box, click C:\\AllFiles\LabFiles\Lab11\Copy of BREApproved.xml, and then click Remove instance.
13. Click AdvWorks.LoanApproval.LoanApplication, and then click Add instance.
14. In the Open dialog box, navigate to C:\AllFiles\LabFiles\Lab11, click BRE-Denied Copy.xml, and then click Open.
15. In the Select Facts dialog box, click Test.
16. In Windows Explorer, open BRE-Approved - Copy.xml.
Notice that the loan status is now Approved and that the loan to income ratio has
been calculated.
17. In Windows Explorer, open BRE-Denied - Copy.xml.
Notice that the loan status is now Pending, and that the loan-to-income ratio has
been calculated.
18. Close Internet Explorer.
19. Close the Business Rule Composer.
Exercise 3: Integrating a Business Rule Policy into an Orchestration
Overview
BizTalk orchestrations use the Call Rules shape to invoke business rule policies. In this exercise,
you will create a new orchestration that is called by the ProcessOrder_Credit orchestration. This
orchestration calls the LoanApprovalProcess policy and has steps for the manual processing of
the loans that are not approved by the Business Rule Engine. You will then deploy and test the
application.
Create the ApproveLoan Orchestration
Procedure List
1. In Windows Explorer, navigate to C:\AllFiles\LabFiles\Lab11\AdvWorks, and then
double-click AdvWorks.sln to open the solution.
2. In Solution Explorer, right-click the LoanApproval project, point to Add, and then click
New Item.
3. In the Add New Item dialog box, click Orchestration Files, in the Name box, type
ApproveLoan.odx, and then click Add.
4. Right-click the ApproveLoan orchestration design surface, click Properties Window, and
in the Properties window, in the Type Modifier list, click Public.
Create Orchestration Parameters
Procedure List
1. In Orchestration View, right-click Orchestration Parameters, and then click New
Message Parameter.
2. In the Message_1 Properties window, in the Identifier box, type parSalesOrder, in the
Message Type list, expand Schemas, and then click <Select from referenced assembly>.
3. In the Select Artifact Type dialog box, in the left pane, click AdvWorks.Messaging, in the
right pane, click SalesOrder, and then click OK.
4. In Orchestration View, right-click Orchestration Parameters, and then click New
Message Parameter.
5. In the Message_1 Properties window, in the Identifier box, type parFinalLoan, in the
Direction list, click Out, in the Message Type list expand Schemas, and then click
AdvWorks.LoanApproval.FinalLoanDocument.
Create Messages
Procedure List
1. In Orchestration View, right-click Messages, and then click New Message.
2. In the Message_1 Properties window, in the Identifier box, type msgInterimLoan, in the
Message Type list, expand Schemas, and then click
AdvWorks.LoanApproval.FinalLoanDocument.
3. In Orchestration View, right-click Messages, and then click New Message.
4. In the Message_1 Properties window, in the Identifier box, type msgLoanApp, in the
Message Type list, expand Schemas, and then click
AdvWorks.LoanApproval.LoanApplication.
Create a Correlation Type
Procedure List
1. In Orchestration View, expand Types, right-click Correlation Types, and then click New
Correlation Type.
2. In the Correlation Properties dialog box, in the left pane, expand
AdvWorks.LoanApproval.PropertySchema, click Amount, click Add, click Customer,
click Add, and then click OK.
3. In the CorrelationType_1 Properties window, in the Identifier box, type
ManualApprovalCorrType.
Create a Correlation Set
Procedure List
1. In Orchestration View, right-click Correlation Sets, and then click New Correlation Set.
2. In the Correlation_1 Properties window, in the Identifier box, type
ManualApprovalCorrSet, and then in the Correlation Type list, click
AdvWorks.LoanApproval.ManualApprovalCorrType.
Add a Transform Shape
Procedure List
1. Right-click Drop a shape from the toolbox here, point to Insert Shape, and then click
Transform.
2. Configure the construct message and transform shapes with the properties shown in the
following table.
Construct Message Shape
Property
Value
Name
Construct msgLoanApp
Messages Constructed
msgLoanApp
Transform Shape
Property
Value
Name
Map to LoanApp
Map Name (Existing Map)
AdvWorks.LoanApproval.SalesOrder_To_LoanApp
Map Source
parSalesOrder
Map Destination
msgLoanApp
Add a Call Rules Shape
Procedure List
1. Drag a Call Rules shape from the Toolbox to the orchestration, directly below the
construct message shape.
2. In the Properties window, in the Name box, type Call Loan Approval Process, and then
click the ellipsis (…) button in the Configure Policy box.
3. In the Select the business policy you wish to call list, click LoanApprovalProcess, set the
Parameter Name to msgLoanApp, and then click OK.
Add a Decide Shape
Procedure List
1. Right-click the arrow below the call rules shape, point to Insert Shape, and then click
Decide.
2. In the Properties window, in the Name box, type Is the Loan Pre-Approved?, and then
click the Rule_1 branch.
3. In the Properties window, in the Name box, type Approved, and then click the ellipsis
(…) button in the Expression box.
4. In the BizTalk Expression Editor window, type the following expression, and then click
OK.
msgLoanApp.LoanConditions.LoanStatus==“Approved”
Add Shapes to the Approved Branch of the Decide Shape
Procedure List
1. Drag a Transform shape from the Toolbox to the Approved branch of the decide shape.
2. Drag a Message Assignment shape from the Toolbox to directly below the transform
shape inside the construct message shape.
3. Configure the shapes as shown in the following table.
Construct Message Shape
Property
Value
Name
Construct parFinalLoan
Message Constructed
parFinalLoan
Transform Shape
Property
Value
Name
Map to FinalLoan
Map Name (Existing Map)
AdvWorks.LoanApproval.SalesOrder_To_FinalLoan
Map Source
parSalesOrder
Map Destination
parFinalLoan
Message Assignment Shape
Property
Value
Name
Add Loan Properties
4. In the message assignment shape Properties window, in the Expression box, click the
click the ellipsis (…) button, type the following expression (four separate lines) in the
BizTalk Expression Editor window, and then click OK.
parFinalLoan.Loan.Amount = msgLoanApp.LoanConditions.LoanAmount;
parFinalLoan.Loan.LoanToIncomeRatio =
msgLoanApp.LoanConditions.LoanToIncome;
parFinalLoan.Loan.Status = msgLoanApp.LoanConditions.LoanStatus;
parFinalLoan.Loan.Term = msgLoanApp.LoanConditions.Term;
Add Shapes to the Else Branch of the Decide Shape
Procedure List
1. Right-click the Construct parFinalLoan construct shape, and then click Copy.
2. Below the Else branch of the decide shape, right-click Drop a shape from the toolbox
here, and then click Paste.
3. Change the configuration to the Construct Message, Transform, and Message
Assignment shapes to represent the following table.
Construct Message Shape
Property
Value
Name
Construct msgInterimLoan
Message Constructed
msgInterimLoan
Transform Shape
Property
Value
Name
Map to FinalLoan
Map Name (Existing Map)
AdvWorks.LoanApproval.SalesOrder_To_FinalLoan
Map Source
parSalesOrder
Map Destination
msgInterimLoan
Message Assignment Shape
Property
Value
Name
Add Loan Properties
4. Change the Expression in the Add Loan Properties shape below the Else branch to the
following expression (four lines).
msgInterimLoan.Loan.Amount=msgLoanApp.LoanConditions.LoanAmount;
msgInterimLoan.Loan.LoanToIncomeRatio =
msgLoanApp.LoanConditions.LoanToIncome;
msgInterimLoan.Loan.Status=msgLoanApp.LoanConditions.LoanStatus;
msgInterimLoan.Loan.Term=msgLoanApp.LoanConditions.Term;
5. Right-click below the construct message shape in the Else branch, point to Insert Shape,
and then click Send.
6. Right-click below the send shape in the Else branch, point to Insert Shape, and then click
Receive.
7. Configure the Send and Receive shapes as shown in the following table.
Send Shape
Property
Value
Initializing Correlation
Set
ManualApprovalCorrSet
Message
msgInterimLoan
Name
SharePoint Processing
Receive Shape
Property
Value
Following Correlation Set
ManualApprovalCorrSet
Message
parFinalLoan
Name
SharePoint Processing
Add Orchestration Ports
Procedure List
1. Right-click the right Port Surface, and then click New Configured Port.
2. Configure the port as shown in the following table.
Property
Value
Name
SharePointReq
Port Type Name (new Port Type)
SharePointType
Direction
Send
Binding
Specify later
3. Right-click the right Port Surface, and then click New Configured Port.
4. Configure the port as shown in the following table.
Property
Value
Name
SharePointResp
Port Type Name (existing Port Type)
SharePointType
Direction
Receive
Binding
Specify later
5. Connect the Send shape to the SharePointReq port, and then connect the Receive
shape to the SharePointResp port.
6. In Solution Explorer, right-click the AdvWorks solution, and then click Build Solution.
Configure the ProcessOrder_Credit Orchestration to call the ApproveLoan
Orchestration
Procedure List
1. In Solution Explorer, under Processes, double-click ProcessOrder_Credit.odx to open
the orchestration.
2. In the Process_Order orchestration, delete the Construct msgFinalLoan construct shape
(including the Map to Loan Final transform shape).
3. Right-click the arrow below the Receive Credit SO receive shape, point to Insert Shape,
and then click Call Orchestration.
4. In the Properties window, in the Name box, type Approve Loan, and then in the Called
Orchestration list, click <Select from a referenced assembly>.
5. In the Select Artifact Type dialog box, in the left pane, expand
AdvWorks.LoanApproval, in the right pane, click ApproveLoan, and then click OK.
6. In the Call Orchestration Properties window, click the ellipsis (…) button in the
Parameters box.
The parameters are automatically configured for you.
7. Click OK.
Add a Decide Shape
Procedure List
1. Right-click the arrow below the Approve Loan call orchestration shape, point to Insert
Shape, and then click Decide.
2. Rename the decide shape to Is Loan Approved?, and then click the Rule_1 branch.
3. In the Properties window, in the Name box, type Approved, and then click the ellipsis
(…) button in the Expression box.
4. In the BizTalk Expression Editor window, type the following expression, and then click
OK.
msgFinalLoan.Loan.Status=="Approved"
5. Drag a Send shape from the Toolbox to the Else branch of the Is Loan Approved? decide
shape.
6. In the Properties window, in the Name box, type Loan Denial, and then in the Message
list, click msgSalesOrder.
7. Drag the Loan approved so several things need to be done group shape to the
Approved branch of the Is Loan Approved? decide shape.
Configure a Send Port
Procedure List
1. Right-click the right Port Surface, and then click New Configured Port.
2. Configure the port as shown in the following table.
Property
Value
Name
LoanDenial
Port Type Name (new Port Type)
LoanDenialType
Direction
Send
Binding
Specify later
3. Connect the Loan Denial send shape to the LoanDenial send port.
4. In Windows Explorer, navigate to C:\AllFiles\LabFiles\Lab11, and then open
ProcessOrder_Credit.png.
Your ProcessOrder_Credit orchestration should look similar to the one shown in this
picture.
5. Close ProcessOrder_Credit.png.
Build and Deploy the Solution
Procedure List
1. In Solution Explorer, right-click the AdvWorks solution, and then click Build Solution.
2. In Solution Explorer, right-click the AdvWorks solution, and then click Deploy Solution.
Configure Port Bindings
Procedure List
1. On the Start menu, click All Programs, click Microsoft BizTalk Server 2010, and then
click BizTalk Server Administration.
2. In the BizTalk Administration Console, expand BizTalk Server Administration, BizTalk
Group, Applications, and Adventure Works.
3. Right-click Adventure Works, and then click Configure.
4. In the Configure Application dialog box, click ApproveLoan.
None of the ports are bound.
5. In the Configure Application dialog box, click ProcessOrder_Credit.
The new LoanDenial port is not bound.
6. Click OK.
7. Right-click the Adventure Works application, point to Import, and then click Bindings.
8. In the Import Bindings dialog box, navigate to C:\AllFiles\LabFiles\Lab11, and then
double-click Lab11Bindings.xml.
Test the Application
Procedure List
1. To extend the expiration period of the Microsoft Office installation on this virtual
machine, in Windows Explorer, navigate to C:\AllFiles and double-click extend.cmd.
2. In the BizTalk Server Administration Console, right-click the Adventure Works
application, and then click Start.
3. In the Start ‘Adventure Works’ Application dialog box, click Start.
4. In Windows Explorer, navigate to C:\AllFiles\LabFiles\Lab11, and then open
CredSalesOrder-Approved1.xml.
All loans greater than or equal to 1000 are sent to Woodgrove Bank, all other loans
will be handled by the Adventure Works financial department. This order meets all of
the conditions to be approved by the business rule policy. The number of months at
residence and months employed are both greater than 6, and the total amount of
monthly income is greater than the total amount of the order.
5. Close Microsoft InfoPath.
6. Copy CredSalesOrder-Approved1.xml to the SalesOrderIN folder.
7. Open the OUT folder.
There are three messages: the notification that goes to Woodgrove Bank, the
completed message, and the restock message.
8. Delete the three messages.
9. In Windows Explorer, navigate to C:\AllFiles\LabFiles\Lab11, and then open
CredSalesOrder-Internal1.xml.
This order meets all of the conditions to be approved by the business rule policy. The
number of months at residence and months employed are both greater than 6, and
the total amount of monthly income is greater than the total amount of the order.
However, it will be processed differently from the first order; this one will not be sent
to Woodgrove Bank. Instead, it will be handled by the Adventure Works financial
department.
10. Close InfoPath.
11. Copy CredSalesOrder-Internal1.xml to the SalesOrderIN folder.
12. Open the OUT folder.
Notice the completed message and the restock message.
13. Delete the two messages.
14. In Windows Explorer, navigate to C:\AllFiles\LabFiles\Lab11, and then open
CredSalesOrder-Denied1.xml.
This order does not meet the residency and employment conditions. The order will
not be approved and will require manual processing in order to approve or deny the
loan.
15. Close InfoPath.
16. Copy CredSalesOrder-Denied1.xmlto the SalesOrderIN folder.
17. Open the OUT folder.
18. There are no new messages.
19. In Internet Explorer, navigate to http://localhost/LoanApplications, and then open the
message in InfoPath.
20. In the Status list of the loan application, click Approved, and then close the form, saving
your changes.
21. Refresh the page, and notice that the message has been picked up for processing.
22. In Windows Explorer, navigate to C:\AllFiles\LabFiles\Lab11\OUT, and notice the three
messages.
23. In Windows Explorer, navigate to C:\AllFiles\LabFiles\Lab11, and then copy
CredSalesOrder-Denied1.xml to the SalesOrderIn folder.
24. In Internet Explorer, navigate to
http://localhost/LoanApplications/Forms/AllItems.aspx, and then open the message in
InfoPath.
25. In the Status list of the loan application, click Denied, and then close the form, saving
your changes.
26. Refresh the page, and notice that the message has been picked up for processing.
27. In Windows Explorer, navigate to C:\AllFiles\LabFiles\Lab11\OUT, and notice the denial
message.
Download