Biztalkはコンソールアプリケーションを実行できますか?
-
05-07-2019 - |
質問
私は、バイナリファイルを取得し、それを分解し、分析し、データをデータベースに保存するC#コンソールアプリケーションを作成しています。
BizTalkを使用して、新しいバイナリファイルがディレクトリに配置されたときに監視し、解析するファイル名を使用してアプリケーションを呼び出します。
BizTalkはコマンドラインプログラムを実行できますか?
コマンドラインパラメーターをプログラムに渡すことはできますか?
最後の実行が成功または失敗であったことをBizTalkに報告するにはどうすればよいですか?
ありがとうございます、
キース
解決
これを行うことをお勧めしませんと思いますが、理論的には、式の形状内でシェルコマンドを使用してexeを実行できます。
System.Diagnostics.Process.Start(@" C:\ yourPath \ yourExecutable.exe")
System.Diagnostics
名前空間はBizTalk 2006で使用できますが、BizTalk 2004では使用できないと思います(BizTalk 2004では使用可能なSystem名前空間のサブセットが非常に制限されていました)。
戻り値を取得するかどうかはわかりませんが、パラメータを提供できるはずです。
個人的には、次の3つのオプションを利用できると思います:
-
BizTalkを使用しないでください。
キャンベルが示唆するように、代わりにWindowsサービスを使用してください。
既存のBizTalkフレームワーク(ログ、レポートなど)を活用する場合、またはBizTalkが実行するワークフローに他のタスクがある場合にのみ、このような目的でBizTalkを使用します。 (すべてを1つのプラットフォームに統合するための議論があります。あることのためにBizTalkを使用する場合、すべてにifを使用しますが、それは別の会話です)。
-
シュレッダーのロジックを、コンソールアプリケーションとBizTalkの両方が呼び出すことができるC#クラスライブラリにリファクタリングします。
BizTalkからクラスライブラリを呼び出すことは、実行可能ファイルを呼び出すことよりも、クリーンで堅牢に行うことがはるかに簡単です。
オーケストレーションから署名済みおよびGAC済みのアセンブリを単純に参照し(オーケストレーション変数として作成)、式シェイプから直接呼び出すことができます。
こちらは、これに関する基本的な記事です。い詳細については詳しく説明せず、ベストプラクティスに関する議論も行いません。 Professional BizTalk Server 2006 はそのための良い本です。
-
キャンベルが言ったように、これのほとんどはおそらく純粋なBizTalk機能で実行できます。
おそらく、オプション2とオプション3の組み合わせが、あなたが望むものに最適だと思います。既に持っているバイナリシュレッディングロジックをC#クラスライブラリに入れ、ファイルの監視、エラー通知、追跡、他のプロセスとの統合を処理するBizTalkオーケストレーション内からこれを呼び出します。
他のヒント
Biztalkはサーバー製品であるため、実稼働環境でセットアップすると、常にバックグラウンドで実行されます。
BizTalkを使用する場合は、ファイルをドロップする場所を監視し、ファイルをリッピングして分析し、BizTalkワークフロー内のすべてのデータベースに書き出すように設定することをお勧めします。まさにそのために設計されたものです。ワークフローに通知を含めることも、BizTalk追跡を使用して操作が成功したかどうかを確認することもできます。作成する必要がある唯一のカスタムコードは、バイナリファイルをXMLに変換する逆アセンブラです。これは、受信パイプラインコンポーネントとして実行されます。
それがあなたのすべてである場合、BizTalkはまさにこれのための高価なオプションです。独自のWindowsサービスを作成し、 FileSystemWatcher を使用することをお勧めしますa>ファイルが書き込まれたという事実を傍受し、C#コードで処理を行います。
C#アプリケーションを呼び出すBizTalkは、その種類が限定されていれば、ちょっとしたものです。過去にこのような問題が発生し、コンソールアプリケーションがWebサービスとして記述またはラップされています。このようにして、Biztalkはドロップオフされるファイルを取得し、アプリWebサービスアプリケーションに送信します。これは、BizTalkの使用方法の「スイスアーミーナイフ」部分に該当します。これは本当に不十分です。ただし、BizTalkは追跡、BAM、遠方障害のキューイングなどを提供します。さらに、ファイルをアーカイブ場所にコピーし、Webサービスから結果コードを読み取り、SMTPアダプターを使用して成功または失敗の通知を送信します。
これにより、いくつかのアイデアが得られます。幸運を祈ります!