Webアプリケーションを開発しています....アクションが発生するとすぐにジョブをトリガーしたいと思います。どのようにこれを行うことができます。私はスケジューリングのための石英プラグインを使用しています。石英を使用してgrailsでページを読み込む際にジョブを開始する方法
し、またどのように我々は、コントローラのアクションにジョブからのデータを渡すことができます。..
Webアプリケーションを開発しています....アクションが発生するとすぐにジョブをトリガーしたいと思います。どのようにこれを行うことができます。私はスケジューリングのための石英プラグインを使用しています。石英を使用してgrailsでページを読み込む際にジョブを開始する方法
し、またどのように我々は、コントローラのアクションにジョブからのデータを渡すことができます。..
クォーツは、そのコードそのために本当に適切ではない、定期的なスケジュールのいくつかの種類に実行する必要のあるジョブをトリガするために使用されますページが読み込まれるたびに実行する必要があります。
コントローラーアクションが呼び出されるたびにコードを実行する場合は、アクションに挿入するだけです。
どのようにしてジョブからコントローラーの動作にデータを渡すことができますか。
これは設計上の瑕疵のようです。ジョブはコントローラーアクションを呼び出す必要はありません。可能であれば、私は確信していません。
オンデマンドでジョブを実行する必要がある場合は、スケジュールに加えてバックグラウンドでQuartzが実行できます。コントローラまたはサービスでは、MyJob.triggerNow(params)
を実行します。ここで、paramsはジョブの引数のマップです。
triggerNow()
の戻り値の型はnull
あるので、トリガーからの戻り値を取得する簡単な方法はありません。
コードをバックグラウンドで実行する必要がない場合は、Donが言ったように、コントローラのアクションから呼び出し可能なサービスメソッドを呼び出すように、ジョブをリファクタリングする必要があります。
実行したいコードが含まれているため、彼はそのジョブを実行したいと思うかもしれません。その場合、そのコードをコントローラまたはジョブによって呼び出されるサービスに分解する必要があります。 – erturne
erturneの答えを繰り返し記入してください。クォーツジョブが呼び出すサービスにコードを実行することをお勧めします。これをコントローラから実行する必要がある場合は、コントローラにサービスをインポートして同じメソッドを呼び出すだけです。これにより、あなたのコードもDRYになります。 – ibaralf