使用业务规则的贷款处理示例说明如何使用在业务流程中管理的规则集,以及如何使用输入组合(称为事实)来计算正在处理的文档中某些字段的设置。 事实可以是调用基于 .NET 的程序集的结果、从 XML 格式的消息中检索的值或从数据库检索的数据。 本示例还说明如何随时更改规则以便影响随后的计算,而无需重新部署。
本示例的用途
本示例将在简化的贷款处理方案的上下文中说明这些功能。 BizTalk Server 业务流程提取并处理 XML 消息格式的贷款申请(也称为贷款案例)。 此业务流程将使用业务规则引擎根据规则评估传入消息,并利用规则申请结果修改消息,然后将消息以文件的形式写入输出文件夹。
此示例基于多个源(包括正在处理的消息)的事实,设置所处理消息的
IncomeStatus
、
CommitmentsStatus
、
EmploymentStatus
和
ResidencyStatus
元素。
本示例所在的位置
<
示例路径
>\Business Rules\Loans Processing using Business Rules\
下表显示了本示例中的文件及其用途说明:
Cleanup.bat
用于取消部署程序集并从全局程序集缓存 (GAC) 删除这些程序集。 删除发送和接收端口。 根据需要删除 Microsoft Internet 信息服务 (IIS) 虚拟目录。
Create_CustInfo_Table.sql
SQL 脚本,用于在 SQL Northwind 示例数据库中创建 CustInfo 表。
LoanProcessorBinding.xml
用于如端口绑定之类的自动化设置。
LoansProcessor.btproj、LoansProcessor.sln
本示例的 BizTalk 项目和解决方案文件。
My Sample Service.odx
本示例的 BizTalk Server 业务流程。
sampleLoan.xml
示例输入文件,文件中 XML 结构末尾的四个状态元素的值为空。
Setup.bat
用于生成和初始化本示例。
\CreateRules 文件夹中:
App.ico、AssemblyInfo.cs、Case.xsd、CreateLoanProcessingPolicy.csproj、CreateLoanProcessingPolicy.sln、WriteToBRL.cs
用于创建应用程序的 Visual C# 项目、解决方案、源和相关文件,该应用程序将以编程方式创建规则集中的规则。 有关以编程方式生成规则集的示例,请参阅源文件 WriteToBRL.cs。
\myFactRetriever 文件夹中:
AssemblyInfo.cs
FactRetrieverForLoansProcessing.cs
myFactRetriever.csproj
myFactRetriever.sln
用于创建程序集的 Visual C# 项目、解决方案、源和相关文件,该程序集用于从先前添加到 Northwind 示例 SQL Server 数据库的 CustInfo 表检索信息。
生成和初始化此示例
确保您的计算机上具有 Northwind 数据库。
若要运行此示例,必须具有 Northwind SQL Server示例数据库。 若要下载,请转到
Northwind and pubs 示例数据库 for Microsoft SQL Server
。
在命令窗口中,导航到下面的文件夹:
<
示例路径
>\业务规则\使用业务规则的贷款处理
运行 Setup.bat 文件,该文件将执行以下操作:
清理 GAC 以消除之前运行此示例所残留的任何数据。
编译并部署事实检索器程序 myFactRetreiever.dll。
使用 SQL 脚本文件 Create_CustInfo_Table.sql,将名为 CustInfo 的表添加到 Northwind 示例 SQL 数据库中。
清理共享 SQL 规则存储以消除之前运行此示例所残留的数据。
创建、发布并部署贷款处理规则集的最新版本 (1.0)。
可以使用 BizTalk Server 随附的业务规则编辑器工具检查以编程方式设置的规则。
为本示例创建输入 (In) 和输出 (Out) 文件夹。
编译并部署此示例的其余 Visual Studio 项目,包括包含用于协调此示例的业务流程的 BizTalk 项目。
创建并绑定 BizTalk Server 接收位置、发送和接收端口。
本示例在创建和绑定端口时将显示以下警告:
Warning: Receive handler not specified for receive location "LoansProcessor_1.0.0.0_LoansProcessor.My_Sample_Service_Incoming_ReceiveLocation"; updating with first receive handler with matching transport type.
Warning: Host not specified for orchestration "LoansProcessor.My_Sample_Service"; updating with first available host.
可以安全地忽略这些警告。 (为了适应用户安装中可能存在的命名差异,绑定文件中省略了主机名和接收处理程序。)
启用接收位置并启动发送端口。
登记并启动业务流程。
如果 BizTalk 主机名不是 BizTalkServerApplication,请修改 Setup.bat 文件和 LoanProcessorBinding.xml 文件以反映正确的主机名。
在尝试运行本示例前,您应确认在生成和初始化过程中 BizTalk Server 未报告任何错误。
如果选择在不运行文件 Setup.bat 的情况下打开并生成此示例中的项目,则必须首先使用.NET Framework强名称实用工具 (sn.exe) 创建强名称密钥对。 使用该密钥对可以对生成的程序集签名。
若要撤销 Setup.bat 所做的更改,请运行 Cleanup.bat。 必须在第二次运行 Setup.bat 之前运行 Cleanup.bat。
运行本示例
运行使用业务规则的贷款处理示例
将文件的副本 sampleLoan.xml 粘贴到
\In
文件夹中。
观察在“
Out
”文件夹中创建的 .xml 文件。它包含输入 XML 消息,其中包含添加到 XML 结构末尾的以下四个状态元素的数据:
IncomeStatus
、
CommitmentsStatus
、
EmploymentStatus
和
ResidencyStatus
。
可以使用业务规则编辑器工具更改规则集中的规则,然后重新部署这些规则。
单击“
开始
”,指向
“程序”
,指向
“Microsoft BizTalk Server 20xx
”,然后单击“
业务规则编辑器
”。
在支持用户帐户控制 (UAC) 的系统上,可能需要具有管理权限才能运行该工具。 为此,请右键单击该应用程序,然后选择“
以管理员身份运行
”。
在
“SQL Server
”对话框中,单击“
确定
”以连接到规则存储。
在
策略资源管理器
的“
LoanProcessing”
节点下方,右键单击
“版本 1.0 - 已部署
”节点,然后单击“
复制
”。
右键单击“
LoanProcessing”
,然后单击“
粘贴
”。
以导致
IncomeStatus
、
CommitmentsStatus
、
EmploymentStatus
和
ResidencyStatus
元素的不同值的方式更改任何规则或操作。 确保还更改否定部分的值, (基本上,
Else
子句) 你选择更改的任何规则。
下表显示了本示例使用的规则集。 除非明确提及,否则事实来自传入的 XML 消息。 字符串 (db) 表示数据库作为事实的源。
Commitments Status Rule
IF
ID
==
ID (db)
AND
IF
CreditCardBalance (db)
> 500
THEN
CommitmentsStatus
=
"Compute Commitments"
Employment Status Rule
IF
EmploymentType |TimeInMonths
> 18
THEN
EmploymentStatus
=
有效
Residency Status Rule
IF
PlaceOfResidence |TimeInMonths
> 18
THEN
ResidencyStatus
=
有效
!1, !2, !3, !4
Negation Rules
符合规则 1-4 中所述的相应条件的逻辑
非
条件的条件。 生成的操作是正在设置的字符串中的更改。
将文件的副本 sampleLoan.xml 粘贴到“
In
”文件夹中。
观察在“
Out
”文件夹中创建的 .xml 文件。它包含输入 XML 消息,其中包含添加到 XML 结构末尾的以下四个状态元素的数据:
IncomeStatus
、
CommitmentsStatus
、
EmploymentStatus
和
ResidencyStatus
。 根据此过程步骤 5 中所做更改的性质,添加到这些元素的数据与以前的运行可能不同。
如果希望查看本示例的跟踪信息,您必须取消部署相关规则集(贷款处理),然后使用业务规则引擎部署向导重新部署。
本示例说明如何使用业务规则以业务流程内规则的形式应用业务策略。 它还说明如何更改策略,以及如何使策略中的更改动态反映在业务流程内,而不必重新编译或重新部署业务流程解决方案。
本示例的输入贷款案例为具有以下结构的 XML 消息:
Income
BasicSalary
OtherIncome
EmploymentType
TimeInMonths
PlaceOfResidence
TimeInMonths
CommitmentsStatus
IncomeStatus
EmploymentStatus
ResidencyStatus
业务规则(BizTalk Server 示例文件夹)