0

ですから、完了するのに少し時間がかかる(約2分)Javaコードがあります。それについて私にできることは何もありません。

しかし、XPages UIでこれにアプローチする最善の方法を考えています。これにより、ユーザーは待機する必要がありますが、実行中(スピニングホイールだけでなく)により多くの制御/対話が可能になります。

だから私が見ることができることから私は次のことができます。

  • スレッドにラップされたXPageで呼び出されるJavaクラス。
  • スレッド内のXPageから呼び出されたJavaエージェント。
  • JavaエージェントがXPageから呼び出されましたが、ドキュメントが更新されるのを待ちます。
  • Eclipseプラグイン(クライアント内の場合)がアクティブ化されます。ただし、(ドキュメントを介して)XPageにどのように応答するかはわかりません。

他の方法はありますか?

XPageでスレッドを作成した場合、サーバー側で問題が発生しますか?JavaクラスでNotesオブジェクトを使用することは避けなければなりませんか?

4

2 に答える 2

7

OSGi Taskletサービス(別名DOTS )を使用することをお勧めします。このアプローチにより、Javaタスクをエージェントと同じようにスケジュールしたり、イベントにバインドしたりできますが、エージェントよりもはるかに効率的に実行できます。sessionおそらくあなたのニーズに最も関連するのは、コンソールを介してDOTSタスクをトリガーする追加機能です。これにより、オブジェクトを介してリモートコンソールコマンドを発行するだけで、XPagesコードがJavaコードを開始できるようになります。

さらに、変数を提供するためにXSPスターターキットで使用されている手法を確認してください。serverScopeコードがDOTSタスク(またはエージェント)で実行されている場合、コードは別のJavaアプリケーションで実行されているため、標準のスコープ変数と直接通信することはできません。このserverScopeアプローチでは、理論的には、XPageとトリガーされたタスクの両方からアクセスできるオブジェクトを格納できます。これは、Perが前述したように、Markの手法を使用して、タスクの実行中に進行状況をユーザーに伝えるのに役立ちます。進行状況情報をのserverScope代わりに保存するだけですsessionScope

于 2012-12-12T13:25:46.453 に答える
0

解決策は、アプリケーションでエージェントをキックしてスレッドを使用するのではなく、データベースに新しいドキュメントを保存することにエージェントを反応させることです(スレッドは非常に危険であり、httpタスクを簡単に強制終了する可能性があるため)

あなたが調べることができるもう一つのことは、あなたが実行したいコードが完了するのに2分かかる理由です。コードは何ですか?他のデータベースで何かをしているのですか、それとも他のノート以外のリソースに接続していますか?

于 2012-12-12T12:57:04.143 に答える