下記の内容は個人的なメモであり、ワークショップは英語で行われている事から、私が誤解してメモしてる部分もあるかもしれません。
【1日目】パフォーマンスについて
- iDempiereではCompiereの頃からのテーブルでテーブル名+_IDの主キーが1つに定義されていないテーブルが少数だがある(一番の問題はプライスリストのテーブル:カルロス氏談)。"テーブル名+_ID"のカラムを追加し、主キーを1つにするのは重要な事である。
- メモリー管理のためにリファレンスを"Table/Table Direct"ではなく"search"にする事は良いアイディアです。
- プロセスの実行でRun as jobフラグをONにして実行すると、iDempiereをログアウトしても処理は終了されない。
- M_Strageのテーブルの更新がDBのロック処理によりボトルネックになる可能性がある。M_Strageテーブルを更新する際には、トランザクションコードをレコード事に発行してコミットするなどして、ロックをリリースするように注意を払う必要がある。
- pgbadger
- pgtune
- PostgreSQLをReplicationを使用する場合は、immediateにすると更新コストが3倍くらいになる。許容できるのであれば、delayedモードにすると更新コストはほとんど増えない。
- PG-Pool2でもReplicationの機能があるが、全てのDBに書き込みに行くので更新コストが5倍くらいになる。PG-pool2は、トランザクションが発行されなければ(単なるSELECT文なら)セカンダリのDBを見にいくので、負荷分散できる。
- チャック氏はHAProxyを使って負荷分散している。
- などなど…
【2日目】DBのコネクションプールについて
- c3p0でコネクションプールを実装している。c3p0はjavaのコネクションプールのライブラリ。
- DB_postgreSQL.javaクラスのinitialPoolsize(変数)で初期値のプールサイズを設定している。
- %idempiere-server%\PostgreSQL\pool.propertiesにDBコネクションプール関係の初期値を設定している。
- テーブルIDの採番番号でCompiere/ADempiere/iDempiereのどのバージョンで追加されたテーブルか判断できる。
- などなど…。
【2日目】プライスリストついて
- Adaxa社で実装しているUOM毎の料金設定は、まだiDempiereには取り込んでいない(色々と作業が必要になるので…)。
- MProductPricing.calculateBPL()メソッドで使用されているbomPriceStd()ファンクションの説明。
- SAPのコンディションタイプの概念を導入したらどうか?http://help.sap.com/saphelp_46c/helpdata/en/dd/56168b545a11d1a7020000e829fd11/content.htm
- プロモーションの機能を使っても、価格の割引を行う事ができる。プロモーションの機能を使うと6個買って1個分の割引を行うなどの設定が可能。
- などなど…。
【2日目】棚卸資産の評価(特にAverage Cost)ついて
【3日目】テストの自動化について
【3日目】翻訳について
【4日目】Wikiのメンテナンス方針について
【4日目】JPiereの概要説明
【4日目】Cloudempiereの概要説明
【4日目】在庫補充について
【4日目】Webサービスについて
【5日目】DBのボトルネックについて
【5日目】ビジネスロジックをコアロジックから分離させプラグイン化するための議論
【5日目】アラートの使い方
【5日目】OpenKM integration
【その他】
-
http://demo.testadempiere.com/webui/ は Adaxa社ののADempiereのデモサイト。
- カルロス氏はDBへのアクセスツールとして"Aqua Data Studio"を使用している。
- カルロス氏は翻訳するならAltova XML Editorというのを使うのをおススメとのこと。
- コロンビアのローカライゼーションのデモサイト(https://demo.globalqss.com/webui)
- カルロス氏はDB Soloでマイグレーションスクリプトの管理をしている様子…。