【JPIERE-0181】FindWindowクラスのパフォーマンス改善

 FindWindowクラスは、iDempiereのウィンドウで虫眼鏡アイコンを押すと呼び出され、データ検索を担います。

データ検索を担うFindWindowクラス
データ検索を担うFindWindowクラス

 このFindWindowクラスですが、実際にデータ検索を行い、データを表示するまでの間に、データ件数を複数回カウントしています。データ件数を複数回カウントする事は無駄でありシステムリソースを浪費し、ユーザーにとっても操作感が悪くなります。

 そこで、JPiereでは、システムリソースを大幅に浪費する可能性があるウィンドウについては、データ件数のカウントを1回で済むように、改善致しました。なお、改善の対象となるシステムリソースを大幅に浪費する可能性があるウィンドウとは、テーブルの大量データフラグがONになっているか、もしくはウィンドウタイプがトランザクションのウィンドウです。

 そして、タブのWhere条件に、"<ターブル名+_ID> = 0"の条件が含まれている場合は、登録専用のウィンドウとして、データ件数のカウントを行わないようにしています。

技術情報

更新クラス

  • org.adempiere.webui.window.FindWindow(jpiere.modification.org.adempiere.ui.zk)

カスタマイズ履歴

2020年4月21日

Find Windowにレコード件数を表示させるかどうか、システムコンフィグ設定で制御できるようにしました。システムコンフィグ設定の「JP_FINDWINDOW_COUNT」の値を"Y"にすると、Find Windowにレコード件数のカウントが表示されます。"N"にすると表示されず、カウントをしないためパフォーマンスが向上します。

2020年4月28日

Find Windowにおけるレコード件数のカウントが、無駄に行われている箇所があったのでコメントアウトしました。

◆cmd_ok_Simple()メソッド

レコード件数が0件ではなかったらdispose()メソッドを読んでいますが、cmd_ok_simple()メソッドの呼び出しもとで、dispose()メソッドを読んでいるので、このカウント自体が無意味になっているのでコメントアウトしました。

◆cmd_ok_Advanced()メソッド

レコード件数が0件ではなかったらdispose()メソッドを読んでいますが、cmd_ok_Advanced()メソッドの呼び出しもとで、dispose()メソッドを読んでいるので、このカウント自体が無意味になっているのでコメントアウトしました。