2012-02-27 6 views
0

私はasp.net/C#アプリケーションとバックエンドをoracleとして持っています。 私はトランザクションを使用する必要があります。以下はreqirementです:Oracle Transactions Queries、Asp.net timer

私は列を持つテーブルを持っていたOrderDetailsよう: 「OrderIdで」「ORDERNAME」「オーダーステータス」

すべてOrderNamesは、ラジオボタンなどのフロントエンドに示されています。ラジオボタンがチェックされると、その注文のステータスが「処理中」に変わり、ページ上の「注文の作成」ボタンをクリックするとステータスが「予約済み」に変わります。

しかし、ラジオボタンがオフになっているか、ウィンドウを閉じて、ステータスが「利用可能」に変更する必要がある場合にはラジオボタンがチェックされると

また、タイマーは、フロントエンドで開始する必要があります。タイマーの持続時間はバックエンドの別のテーブルから来るべきです。オーダーはそのタイマー期間だけ "処理中"に保つことができます。

どのように私はこの機能を達成することができるかについてのあらゆる指針。

ありがとうございました。ここで

+1

要件はよく見るが、あなたはどこに立ち往生している、あなたはここで誰かがそれであなたを助けることができるようにあなたが直面しているいくつかの特定のボトルネックを特定する必要があります。 – V4Vendetta

+0

私はトランジションも書かなかった。したがって、どこから始めるべきかの指針が役立つならば。それをタイマーと同期させる方法についても。 – RMN

答えて

1

」基本的なアウトライン:

  1. 順序がチェックされているときはいつでも、あなたはインプロセス状態に順序を設定するトリガーするAJAX要求を発射する必要があります。
  2. 注文テーブル内で注文が進行中の状態に移行した時刻を示す最新の列を更新します。
  3. 時間の指示をユーザに与えることができるように、#1からAJAX要求は、フロントエンドJSにタイマー時間と最終更新時間を返すべきです。順序がチェックされていない場合は、AJAXリクエストが戻って利用可能に注文状況を変更するために焼成することができる
  4. (あなたは、ラウンドトリップ時間の半分を使用して、フロントエンドの日時にサーバーの日付と時刻を調整する必要があります)。
  5. [オーダーの作成]ボタンを使用すると、AJAXリクエスト(または従来のASP.NETポストバック)をトリガーとして、ステータスを予約済みとしてマークできます。
  6. データベースのジョブを十分に定期的に実行して、進行中の注文を前回の更新からの経過時間に基づいて利用可能な状態に戻すことができます。同じクリーンアップを行うには、他の種類のスケジュール(Windowsスケジューラなど)を選択することができます。
  7. #6は窓開閉シナリオを処理する必要がありますが、あなたは常に元のウィンドウを閉じる前に、別のウィンドウ(最小化)でのクリーンアップを行うための要求をトリガしようとすることができます。

ASP.NET内のAJAXとOracleデータベースの更新は、かなりルーティングされており、Web上で多くの情報/チュートリアルを見つけることができます。取引と同じ - TransactionScopeを使用して取引をより簡単に処理することをお勧めします。