Business Rules Hello World1 (BizTalk Server サンプル)
Business Rules Hello World1 サンプルでは、BizTalk ルール セットを作成して、そのルール セットをファイル (SampleRuleSet.xml) に保存し、読み込んでから、サンプルのファクト セットに基づいて実行する方法を示します。 サンプルのルール セットには、ルール定義の条件として XML 要素を含む単一のルール、および .NET ベースのオブジェクト (プロパティとメンバ) が含まれます。
このサンプルの処理
このサンプルでは、次の一連の手順を実行する実行可能ファイルを作成します。
メソッド CreateRuleset を 呼び出して、「解説」セクションで説明されているルール セットを作成します。
SaveToFile メソッドを呼び出して、ルール セットをファイルに保存する方法を示します。
LoadFromFile メソッドを呼び出して、ファイルからルール セットを読み込む方法を示します。
ルール セットの実行対象のサンプル ファクトを作成します。
サンプル ファクトに対してルール セットを実行し、画面出力を作成します。
一時停止し、ルール セット ファイル SampleRuleStore.xml を確認できるようにします。
後でこのサンプルを実行するための準備として、ルール セット ファイルを削除して、クリーンアップします。
このサンプルの場所
<サンプル パス>\ビジネス ルール\ビジネス ルール Hello World1\
次の表は、このサンプルのファイルとその目的を示しています。
ファイル | 説明 |
---|---|
App.ico、AssemblyInfo.cs、BusinessRulesHelloWorld1.csproj、および BusinessRulesHelloWorld1.sln | このサンプルで、ルール セットの作成、保存、読み込み、実行を行う部分で使用するプロジェクト ファイル、ソリューション ファイル、その他の関連ファイルです。 |
HelloWorld1.cs | ルール セットの作成、ファイルへのルール セットの保存、およびファイルからルール セットを読み込む方法を示すメソッドを含む Visual C# ファイルです。 これらのメソッドを呼び出し、作成したルール セットを実行する、前後のコードも含まれます。 |
Cleanup.bat | アセンブリを展開解除し、グローバル アセンブリ キャッシュ (GAC) から削除するために使用されます。 送信ポートと受信ポートが削除されます。 必要に応じて、Microsoft インターネット インフォメーション サービス (IIS) の仮想ディレクトリが削除されます。 |
SampleDocumentInstance.xml | ファイル SampleSchema.xsd で定義されているスキーマに準拠したサンプル入力ファイルです。 |
SampleSchema.xsd | 簡潔なスキーマを定義したスキーマ ファイルで、Visual C# ファイル HelloWorld1.cs で作成されたルール セットから参照される要素が含まれます。 |
Setup.bat | このサンプルをビルドおよび初期化するために使用されます。 |
\MySampleLibrary フォルダーに含まれるファイル: AssemblyInfo.cs、MySampleLibrary.csproj、および MySampleLibrary.sln |
このサンプルで、作成したルール セットから参照されるオブジェクトを定義するクラスを提供する部分で使用するプロジェクト ファイル、ソリューション ファイル、その他の関連ファイルです。 |
\MySampleLibrary フォルダーに含まれるファイル: MySampleLibraryClass.cs |
作成されたルールの IF 部分で参照されるプロパティと、作成されたルールの THEN 部分で呼び出される可能性があるメソッドを含む Visual C# ファイル。 |
このサンプルのビルドと初期化
次の手順を使用して、Business Rules Hello World1 サンプルの作成および初期化を行います。
このサンプルを作成および初期化するには
コマンド ウィンドウで、次のフォルダーに移動します。
<サンプル パス>\ビジネス ルール\ビジネス ルール Hello World1\
次のアクションを実行するファイル Setup.bat を実行します。
- このサンプルの Microsoft Visual Studio プロジェクトをコンパイルしてデプロイします。
Note
このサンプルを実行する前に、ビルドと初期化のプロセス中に BizTalk Server でエラーが報告されていないことを確認する必要があります。
Note
ファイル Setup.bat を実行せずにこのサンプルのプロジェクトを開いてビルドする場合は、まず、.NET Framework厳密名ユーティリティ (sn.exe) を使用して厳密な名前キー ペアを作成する必要があります。 このキー ペアは、生成されたアセンブリの署名に使用します。
Note
Setup.bat によって行われた変更を元に戻すには、Cleanup.bat を実行します。 Setup.bat を 2 回目に実行する場合は、その前に Cleanup.bat を実行してください。
このサンプルの実行
次の手順を使用して、Business Rules Hello World1 サンプルを実行します。
このサンプルを実行するには
コマンド ウィンドウで、次のフォルダーに移動します。
<サンプル パス>\ビジネス ルール\ビジネス ルール Hello World1\bin\Debug\
コマンド ウィンドウで、このサンプルの実行可能ファイル名 (BusinessRulesHelloWorld1.exe) を入力して、
Enter キーを押します。Note
このサンプルでは、実行中に bin\Debug フォルダーに SampleRuleStore.xml ルール セット ファイルを生成します。 実行可能ファイルを一時停止すると、
Enter キーを押すまで終了が待機されるので、このファイルの内容を確認できます。 このファイルは、任意のキーを押して終了する前に閉じてください。 これを行わないと、後でこのサンプルを実行するための準備として、実行可能ファイルからこのファイルを削除できません。作成されたルール セットの性質に基づいて、指定されたサンプル入力ファイル SampleDocumentInstance.xml でこのサンプルを実行すると、 ID 要素に対して 1 (1) の値が定義されています。次の出力が表示されます。
Creating a new ruleset ...
Saving ruleset to SampleRuleStore.xml ...
Loading ruleset ...
Asserting objects ...
Executing ...
MySampleBusinessObject Class -- MySampleMethod executed for object 2 with parameter 5
MySampleBusinessObject Class -- MySampleMethod executed for object 3 with parameter 5
Press any key to finish ...
Note
前のコードと後に続くコードの両方で太字で示される出力は、 MySampleLibrary フォルダー内のファイルによって定義され、ルール セットによって参照されるサンプル ビジネス オブジェクトによって生成される出力です。
サンプル入力ファイル SampleDocumentInstance.xml の ID 要素に関連付けられている値を 1 つ (1) から 2 つ (2) に変更すると、出力は次のように変更されます。
Creating a new ruleset ...
Saving ruleset to SampleRuleStore.xml ...
Loading ruleset ...
Asserting objects ...
Executing ...
MySampleBusinessObject Class -- MySampleMethod executed for object 1 with parameter 5
MySampleBusinessObject Class -- MySampleMethod executed for object 3 with parameter 5
Press any key to finish ...
MyValue プロパティがサンプル入力ファイル SampleDocumentInstance.xml の ID 要素に関連付けられている値と一致する値 (構築中) に設定されている MySampleBusinessObject クラスのオブジェクトの出力行は取得されません。
説明
CreateRuleset() メソッド内でプログラムによって作成されたルールには、次の情報が表示されます。
IF
MySampleBusinessObject.MyValue は、XML ドキュメント内の ID 要素の値と等しくありません。
THEN
MySampleBusinessObject.MySampleMethod(int) は整数パラメーターを持ち、この場合は定数 5 (5) にハードコーディングされています。 このメソッドは、 MySampleBusinessObject クラス –- を開始する出力行を生成します。
このルールは、次の要因に依存します。
MyValue というパブリック プロパティと MySampleMethod (整数パラメーターを受け取る) というパブリック メソッドを持つ MySampleBusinessObject クラス。
ID 要素を含む XML ドキュメントを定義する XML スキーマ定義言語 (XSD) スキーマ。
ルールは、クラスやスキーマとして定義しますが、実行中の場合は、関連するクラスのオブジェクト インスタンスおよび関連するスキーマのドキュメント インスタンスが必要です。 このような実行時のインスタンス (ファクト) に対してルールを評価します。 このサンプルでは、ファクトは MySampleBusinessObject オブジェクトの複数のインスタンスであり、 MyValue プロパティに対して異なる値を使用して構築され、 ID 要素の値を含む定義されたスキーマの 1 つの XML インスタンスです。