以下は、ColdFusion でスケジュールされたジョブを実行するのに非常にうまく機能するシステムの説明です。.net で何かを構築するとしたら、それよりも優れているとは言わないまでも、少なくとも同じくらい優れたものをどのように構築しますか? コードではなく、概念、アイデア、および構造を探していることに注意してください。
現在、ColdFusion のスケジュールされたジョブには「プラグ アンド プレイ」の概念があります。数十の個々のスケジュールされたジョブの代わりに、少数のスケジュールされたジョブ コンテナーがあります。ColdFusion で実際にスケジュールされるのはコンテナーです。各コンテナーは、異なる時刻に実行されるようにスケジュールされています。開発者は、ジョブを実行したい時間に基づいて、個々のジョブを最適なコンテナーにプラグインします。コンテナ ファイルには、ScheduledJobs_0600.cfm のような名前が付いています。これらは、Web ブラウザからは利用できないディレクトリにあります。それぞれに関連付けられた個別のログ ファイルがあります。
個々のジョブをスケジュールする準備ができたら、開発者は次のようにコンテナー ファイルにプラグインします。
つまり、毎月 5 日に ColdFusion ファイル /DWsystem/jobs/AdultPsych.cfm が実行されます。
cf_RunJob は ColdFusion カスタム タグです。• ジョブを実行しようとします。• 成功した場合、ジョブの開始時刻と実行にかかったミリ秒数を示す行がログ ファイルに書き込まれます。• 失敗した場合、catch ブロックはエラー メッセージをログ ファイルに書き込みます。
try/catch メソッドは、1 つのコーディング エラーが後続の個々のジョブの実行を妨げることを防ぎます。
他に 2 つのスケジュールされたジョブがあり、他のジョブがどのように実行されたかを確認できます。具体的には、ログ ファイルの最新のエントリを読み取り、エラーを探します。見つかった場合は、その特定のファイルからのすべての日次イベントが特定のアドレス グループに電子メールで送信されます。また、うまくいかない場合にフォローアップできる 2 つの Web ページもあります。1 つはすべての「コンテナー」ジョブをリストし、ユーザーがそれらの一部またはすべてを実行できるようにします。コンテナー ジョブはハード コードされていますが、同じディレクトリにあるため、プログラムで取得できます。
2 ページ目はもう少し複雑です。すべてのコンテナ ファイルとすべてのログ ファイルを読み取ります。ユーザーには、すべての個々のジョブのリストが表示され、それぞれにチェックボックスが付いています。前回の試行で失敗したジョブには、チェックボックスが事前にチェックされています。各ジョブの実行時間も表示されます。フォームが送信されると、選択された各ジョブが cf_RunJob タグで実行されます。
.netでどのようにしますか?