PR

Eclipseを使ってデータ登録画面を確認する

2011年6月17日(金)
久保田 大輔

次に第4回記事で作成した「Sample Window1」をクリックしてください。
VTreePanel.javaのブレークポイントの後に

client\src\org\compiere\apps\AMenuStartItem.java
の147行目(runメソッド)で停止します。

この状態で「Variables」ウインドウを確認すると「sql」という変数に、
SELECT * FROM AD_Menu WHERE AD_Menu_ID=?
という文字列が入っています。?の部分には「Variables」ウインドウの this > m_ID の値が設定されてSQLが実行されます。

図8:「Variables」ウインドウ

pgAdmin3で、

set search_path to "$user",adempiere,public;
SELECT * FROM AD_Menu WHERE AD_Menu_ID=1000000

というSQLを実行すると、AD_Window_IDカラムの値が1000000であることが確認できます(1000000という値は環境によって変わる可能性があります)。
AD_Window_IDは、ad_windowテーブルの主キーです。

このAD_Window_IDが1000000という値を使って、
SELECT * FROM ad_window WHERE ad_window_id = 1000000
を実行すると、ad_windowテーブルのnameカラムに「Sample Window1」という値が入っていることが確認できます。

Eclipseの「Resume」アイコン(またはキーボードのF8)を押すと処理が再開されて
client\src\org\compiere\apps\APanel.java
646行目(initPanelメソッド)で停止します。

APanelクラスはCPanelクラスを継承していて、CPanelクラスはJPanelクラスを継承しています。JPanelクラスはJavaのSwingコンポーネントです。

Eclipseのデバッグモードでは「Debug」ウインドウで、メソッドの呼び出し順を確認できます。

APanel.javaの646行目で停止している時は、AMenuStartItem.javaの147行目、AMenuStartItem.javaの249行目、AWindow.javaの102行目の順でメソッドが呼び出されて、APanel.javaの646行目に来ていることが分かります。

図9:「Debug」ウインドウでメソッドの呼び出し順を確認

「Resume」アイコンを押していくと、

  • base\src\org\compiere\model\GridWindowVO.java
    67行目のcreateメソッド(ウインドウの情報を取得するSQLの発行)
  • base\src\org\compiere\model\GridWindowVO.java
    201行目のcreateTabsメソッド(タブの情報を取得するSQLの発行)
  • base\src\org\compiere\model\GridTabVO.java
    53行目のcreateメソッド(タブの情報の設定)
  • base\src\org\compiere\model\GridFieldVO.java
    78行目のcreateメソッド(フィールドの情報の設定)

で停止します。

その後、GridTab.java 354行目のloadFieldsメソッドでm_vo.getFields()により、m_vo(GridTabVO型のメンバ変数)のFieldsというメンバ変数にフィールド情報が設定されます。

取得したウインドウ、タブ、フィールドの情報は、APanel.javaの789行目のGridControllerによって描画されます。

ツールバーの「表形式」アイコンを押すとレコード一覧とレコード詳細を切り替えられるので、client\src\org\compiere\grid\GridController.java944行目のdynamicDisplayメソッドにブレークポイントを設定して確認してください。

図10:「表形式」アイコンをでレコード一覧とレコード詳細を切り替えられる

また、修正したデータを保存する流れについては、

  • client\src\org\compiere\apps\APanel.java の1688行目(保存アイコンが押された時の処理)
  • base\src\org\compiere\model\GridTable.java の2058行目(GridTableオブジェクトのm_fieldsから、POオブジェクトのm_newValuesへ代入する処理)
  • base\src\org\compiere\model\PO.java の2340行目(UPDATE文を生成する処理)

などに書かれています。

「請求を生成」プロセスのソースコード

最後に、プロセスがどのソースコード(ファイル)を実行しているのかを確認する手順を説明します。

今回は、メニューツリーの 販売管理 > 販売請求 > 請求を生成 のプロセスが、どのソースコードに対応しているのかを確認します。まず、翻訳テーブルを確認する手間を省くために 英語でログインして「請求を生成」の英語名を確認します。→ Quote-to-Invoice > Sales Invoices > Generate Invoices

次にSystem Administratorの役割(ロール)でログインして、 アプリケーション構成 > レポートとプロセス を選択して「レポートとプロセス」ウインドウを開いてください。

「レポート&処理」タブで、名前が「Generate Invoices」のレコードを検索して、「クラス名」の値を確認するとorg.compiere.process.InvoiceGenerate になっています。これが「請求を生成」プロセスの処理が書かれたクラスです。

ファイル自体は、base\src\org\compiere\process\InvoiceGenerate.java にあります。

InvoiceGenerate.javaの126行目(doItメソッド)などにブレークポイントを設定して、Eclipseのデバッグモードで起動したAdempiereでメニューから「請求を生成」をクリックするとブレークポイントで処理が止まります。

これで、「Variables」ウインドウで変数の中身を確認したり、ステップ実行したりすることができるようになりました。

以上で第6回は終了です。

adempiere.jp

連載バックナンバー

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています