ExpenseReportSubmission
ExpenseReportSubmission サンプルは、Microsoft Excel などのリッチ クライアントのドキュメントを BizTalk Server オーケストレーションに送信する方法を示すものです。
リッチ クライアントを使用すると、データ検証、準備計算など多くのアクションをクライアント上で実行できます。 これによりバックエンド サーバーとの対話処理を最小限に抑えることができるので、低帯域幅接続しか使用できない場合に便利です。
前提条件
開発環境が構成済みで、BizTalk Server Web サービスが利用可能になっていることを確認する必要があります。 詳細については、「 Web サービスの有効化」を参照してください。
このサンプルの処理
このサンプルでは、次の一連の手順で、経費報告書を Excel からBizTalk Server に直接送信します。
ユーザーが、Excel ワークシートで指定のサンプル手順を手動で実行します。
ワークシートのマクロ コードにより、ワークシートのデータが XML (Extensible Markup Language) 形式に変換され、XML メッセージが HTTP 接続経由で BizTalk Server に送信されます。
BizTalk Server を実行しているコンピュータが、XML 形式の経費報告書のメッセージを取得し、指定のスキーマを使用してメッセージの形式を検証した後、メッセージを別のフォルダに格納します。
このサンプルでは示していませんが、実際はエンタープライズ リソース プランニング (ERP) システムなどの他のアプリケーションがこのワークシート ファイルを取得し、さらに処理を行います。
このサンプルの場所
<サンプル パス>\AdaptersUsage\ExpenseReportSubmission\
次の表は、このサンプルのファイルとその目的を示しています。
ファイル | 説明 |
---|---|
Cleanup.bat | 必要に応じて、アセンブリの展開の解除とグローバル アセンブリ キャッシュ (GAC) からのアセンブリの削除、送信および受信ポートの削除、Microsoft インターネット インフォメーション サービス (IIS) の仮想ディレクトリの削除などを行います。 |
ExpenseReport.15.3.xls | 経費報告書のレイアウトの Excel ワークシートです。マクロとその呼び出し用ボタンが用意されています。 |
MessageExample.xml | XML 形式の経費報告書のサンプルです。 |
Setup.bat | このサンプルを作成および初期化します。 |
\BTSExpenseDemo フォルダーには、次のファイルが含まれています。 AssemblyInfo.cs、 BTSExpenseDemo.btproj、 BTSExpenseDemo.sln |
このサンプルのプロジェクト ファイル、ソリューション ファイル、その他の関連ファイルを提供します。 |
\BTSExpenseDemo フォルダーには、次のファイルが含まれています。 BTSExpenseDemoBinding.xml |
ポート バインドなど、自動セットアップに使用されます。 |
\BTSExpenseDemo フォルダーには、次のファイルが含まれています。 BTSExpenseOrchestration.odx |
このサンプルの BizTalk Server オーケストレーションを提供します。 |
\BTSExpenseDemo フォルダーには、次のファイルが含まれています。 SchemaExpenseReport.xsd |
XML 形式の経費報告書のスキーマを提供します。 |
このサンプルを作成および初期化するには
コマンド ウィンドウで、次のフォルダーに移動します。
<サンプル パス>\AdaptersUsage\ExpenseReportSubmission
次のアクションを実行するファイル Setup.bat を実行します。
このサンプルの Microsoft Visual Studio プロジェクトをコンパイルし、結果のアセンブリをデプロイします。
BizTalk Server の送信ポートおよび受信ポートを作成しバインドします。
Note
このサンプルは、ポートを作成してバインドする際に、以下の警告を表示します。
Warning: Receive handler not specified for receive location "BTSExpenseReceiveLocation"; updating with first receive handler with matching transport type.
Warning: Host not specified for orchestration "Microsoft.Samples.BizTalk.BTSExpenseDemo.BTSOrchestration"; updating with first available host
.これらの警告は、無視してもかまいません (インストールでの名前付け方法はユーザーによって異なる可能性があるため、ホスト名と受信ハンドラーはバインド ファイルから除外されています。)
受信場所を有効にし、送信ポートを開始します。
IIS を構成します。
BizTalk Server オーケストレーションをバインドして開始します。
HTTP アドレスを、Excel ワークシートで想定されている場所に設定します。
Note
BizTalk ISAPI フィルターの詳細については、「 HTTP 受信場所の IIS を構成する方法」を参照してください。
Note
このサンプルを実行する前に、ビルドと初期化のプロセス中に BizTalk Server でエラーが報告されていないことを確認する必要があります。
Note
Setup.bat ファイルを実行せずに、このサンプルのプロジェクトを開いてビルドする場合は、最初に .NET Framework の厳密名ユーティリティ (sn.exe) を使用して、厳密な名前のキー ペアを作成する必要があります。 このキー ペアを使用して、結果のアセンブリに署名します。
Note
Setup.bat によって行われた変更を元に戻すには、Cleanup.bat を実行します。 Setup.bat を 2 回目に実行する場合は、その前に Cleanup.bat を実行してください。
Setup.bat ファイルを実行すると、このサンプルの仮想ディレクトリが構成され、既定の Web サイトに関連付けられた IIS アプリケーション プールで実行されるよう設定されます。 BizTalk 分離ホスト ユーザーと IIS_WPG ユーザー グループのユーザーのコンテキストで実行するようにこのサンプルの仮想ディレクトリを構成するには、新しい IIS アプリケーション プールで実行するように仮想ディレクトリを構成する必要があります。 仮想ディレクトリを新しい IIS アプリケーション プールで実行するよう構成するには、次の手順を実行します。
Note
別の SDK サンプル用に新しいアプリケーション プールを作成済みの場合は、次の箇条書きの最後の項目に進むことができます。
[ スタート] ボタンをクリックし、[ プログラム] をポイントし、[ 管理ツール] をポイントして、[ インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。
インターネット インフォメーション サービス (IIS) マネージャーで、[アプリケーション プール] フォルダーに移動します。
[アプリケーション プール] フォルダーを右クリックし、[新規]、[アプリケーション プール]の各ボタンをクリックします。
アプリケーション プール ID の名前 (BizTalkSDKSamples など) を入力し、[新しいアプリケーション プールに既定の設定を使用する] オプションが選択されていることを確認し、[OK] をクリックして新しいアプリケーション プールを作成します。
新しいアプリケーション プールを右クリックし、[ プロパティ] をクリックします。
[プロパティ] ダイアログ ボックスの [ ID ] タブをクリックし、このアプリケーション プールを実行する ID を 、BizTalk Isolated Host Users ユーザー グループのメンバーであるユーザーに変更します。 このユーザーは、ローカル IIS_WPG ユーザー グループのメンバーである必要もあります。
この SDK サンプルの仮想ディレクトリを、新しいアプリケーション プールで実行するよう構成します。 [アプリケーション プール: ] 設定は、[仮想ディレクトリのプロパティ] ダイアログ ボックスの [仮想ディレクトリ] タブで使用できます。 このサンプル用に作成される仮想ディレクトリは ExpenseReportSubmission です。
IIS の Web サービス拡張を HTTPReceive.dll 用に追加します。
インターネット インフォメーション サービス (IIS) マネージャーで、[Web サービス拡張機能] フォルダーに移動します。
[Web サービス拡張機能] フォルダーを右クリックし、[新しい Web サービス拡張機能の追加] を選択して [新しい Web サービス拡張機能] ダイアログ ボックスを表示します。
[拡張機能名] に「ExpenseReportSubmission」と入力します。
[ 追加] をクリックして、[ ファイルの追加 ] ダイアログ ボックスを表示します。
[参照] をクリックして [開く] ダイアログ ボックスを表示し、[インストール フォルダー>]\HttpReceive\BTSHTTPReceive.dll BizTalk Server移動<して [開く] をクリックし、[OK] をクリックします。
[ 拡張機能の状態を許可] に設定するオプションを有効に し、[OK] をクリック します。
このサンプルの実行
次の手順を使用して、ExpenseReportSubmission サンプルを実行します。
Note
Microsoft Excel の強化されたセキュリティ機能を使用している場合、ワークシート内のマクロが無効になることがあります。 信頼できるソースからの未署名のマクロを実行する方法については、Excel で提供されている指示に従ってください。
このサンプルを実行するには
このサンプルに含まれている Excel ファイルの ExpenseReport.15.3.xls を開きます。
必要に応じて、ワークシート内のサンプル データを変更します。ただし、書式は変更しないでください。
スプレッドシートで、[ 開始 ] をクリックしてローカル計算を実行します。
ボタンのテキストが [開始] から [ 送信] に変わります。
スプレッドシートで、[ 送信] をクリックします。
送信されたメッセージのテキストと、表の上部に黄色の背景で表示される結果 (セル C7)、および表の下方右側に表示される実際のリターン コードと説明テキスト (セル G23) を確認します。
送信に失敗した場合は、もう 1 度実行してください。 「コメント」セクションのトラブルシューティングの表も参照してください。
説明
このサンプルのシナリオが発生するのは、たとえば、フィールド営業員が使用するコンピューターに古いバージョンの Microsoft Windows が搭載されており、そのバージョンでは .NET Framework がサポートされておらず、より新しいバージョンの Windows にアップグレードすることも考えられていないといったケースです。
このサンプルでは、次のような基本機能を実行します。
リッチ クライアント (.NET ベース以外) からの送信
Microsoft Office との統合
HTTP 受信接続
簡単なオーケストレーション
ファイル アダプター
考えられる送信エラーとその解決方法を次の表に示します。
HTTP エラー コード | 可能なアクション |
---|---|
401 権限がありません | 仮想ディレクトリでの匿名アクセスを有効にします。 |
503 サービス利用不可、その他 400 ~ 500 番台の大半の HTTP コード | ホストが実行されていることと、サービスが展開され、正しいポートにバインドされて開始されていることを確認します。 |