手順 4: HeaderHelper プロジェクトの作成
この手順では、.NET クラス ライブラリを作成します。 プライベート プロセス オーケストレーションが受信メッセージを受信すると、HeaderHelper ライブラリは、ドキュメントの変換が必要かどうかを判断し、変換が必要な場合は変換を実行します。 これにより、オーケストレーションは別のバージョンの RNIF (RosettaNet Implementation Framework) ドキュメントでも使用できます。 また、3A2 応答メッセージを送信する際には、HeaderHelper ライブラリはメッセージを送信する前に追加のドキュメント変換を実行します。
HeaderHelper プロジェクトを作成するには
Visual Studio のソリューション エクスプローラーで、Contoso ソリューションを右クリックし、[追加] をポイントして、[新しいプロジェクト] をクリックします。
[新しいプロジェクトの追加] ダイアログ ボックスの [プロジェクトの種類] ウィンドウで、[ Visual C#] を選択します。
[テンプレート] ウィンドウで、[ クラス ライブラリ ] テンプレートを選択します。
[ 名前 ] ボックスに 「HeaderHelper」と入力し、[ OK] を クリックしてプロジェクトを作成します。
ソリューション エクスプローラーで、HeaderHelper プロジェクトで Class1.cs ファイルを右クリックし、[名前の変更] をクリックし、「HeaderHelper.cs」と入力して Enter キーを押します。
ヘルパー クラスを作成するには
ソリューション エクスプローラーで HeaderHelper プロジェクトを展開し、HeaderHelper.cs ノードをダブルクリックして HeaderHelper ソース ファイルを開きます。
ソース ファイルに次のコードを入力し、既存のすべてのコードを上書きします。
using System; using System.Xml; namespace ContosoPriceAndAvailability { public class Helper { static public XmlDocument NormalizeHeader( XmlDocument curPip ) { string strInput = curPip.OuterXml; try { XmlDocument xDoc = new XmlDocument(); strInput = strInput.Replace("<!DOCTYPE Pip3A2PriceAndAvailabilityQuery SYSTEM \"3A2PriceAndAvailabilityQueryMessageGuideline_v1_3.dtd\"[]>",String.Empty); strInput = strInput.Replace("<Pip3A2PriceAndAvailabilityQuery>","<Pip3A2PriceAndAvailabilityQuery xmlns=\"http://schemas.microsoft.com/biztalk/btarn/2004/3A2PriceAndAvailabilityQueryMessageGuideline_v1_3.dtd\">"); strInput = strInput.Replace("xml:",String.Empty); strInput = strInput.Replace("b:",String.Empty); strInput = strInput.Replace("lang:",String.Empty); strInput = strInput.Replace("ns1:",String.Empty); xDoc.LoadXml(strInput); return xDoc; } catch(Exception ex) { System.Diagnostics.Debug.Write( ex.Message ); throw ex; } } static public string ReturnSCWithDocType( XmlDocument xmlDoc ) { try { string sResponse = xmlDoc.InnerXml; sResponse=sResponse.Replace("ns0:",String.Empty); xmlDoc.LoadXml(sResponse); xmlDoc.DocumentElement.RemoveAllAttributes(); sResponse = xmlDoc.InnerXml; sResponse = sResponse.Insert(0,"<!DOCTYPE Pip3A2PriceAndAvailabilityResponse SYSTEM \"3A2PriceAndAvailabilityResponseMessageGuideline_v1_3.dtd\">"); sResponse = sResponse.Replace("ns0:",String.Empty); sResponse = sResponse.Replace("b:",String.Empty); sResponse = sResponse.Replace("lang:",String.Empty); sResponse = sResponse.Replace("ns1:",String.Empty); return sResponse; } catch(Exception ex) { throw ex; } } } }
[ファイル] メニューの [すべてを保存] をクリックします。
HeaderHelper プロジェクトの厳密な名前のアセンブリを作成するには
ソリューション エクスプローラーで HeaderHelper プロジェクトを右クリックし、[プロパティ] をクリックします。
[HeaderHelper プロパティ ページ] ダイアログ ボックスで、[HeaderHelp プロパティ] ウィンドウの左側のウィンドウで [ 署名 ] を選択します。
右側のウィンドウで、[ アセンブリに署名] をクリックします。
[厳密な名前キー ファイルの選択] テキスト ボックスをクリックし、ドロップダウン リストから [参照>] を選択<します。
[ファイルの選択] ダイアログ ボックスで、Contoso アセンブリの場所に移動し、[ FabConPriceAvail.snk] をダブルクリックします。
[ファイル] メニューの [すべてを保存] をクリックします。
ソリューション エクスプローラーで、HeaderHelper プロジェクトを展開し、[プロパティ] ノードを展開し、[AssemblyInfo.cs] ノードをダブルクリックして AssemblyInfo.cs ソース ファイルを開きます。
AssemblyInfo.cs ソース ファイルの AssemblyCulture 属性の後の行に、次のコードを入力します。
[assembly: AssemblyKeyFile("../../../FabConPriceAvail.snk")]
[ファイル] メニューの [すべてを保存] をクリックします。
HeaderHelper プロジェクトを構築および展開するには
ソリューション エクスプローラーで、HeaderHelper プロジェクトを右クリックし、[ビルド] をクリックします。
Visual Studio 2012 コマンド プロンプトを起動します。
コマンド プロンプトで、 HeaderHelper プロジェクト出力ディレクトリ (\Bin\Debug フォルダー) の場所に移動します。
コマンド プロンプトで、「 gacutil /if HeaderHelper.dll 」と入力し、 Enter キー を押して HeaderHelper アセンブリを グローバル アセンブリ キャッシュにインストールします。