iDempiere パフォーマンス測定の使い方|会計 操作マニュアル・技術仕様
📖 会計の全体像: 会計の全体図 も合わせてご覧ください。
パフォーマンス測定は、KPI の実績値をどうやって取得するかを定義するウィンドウです。SQL 計算・手入力・達成タスク・比率・リクエスト件数など複数の測定タイプから選択でき、定義した測定をパフォーマンスゴールに紐づけることで達成率がダッシュボードに表示されます。
📌 ポイント: 測定タイプによって必須項目が変わります(計算→測定計算、比率→比率、ユーザー定義→計算クラス、リクエスト→リクエストタイプ、プロジェクト→プロジェクトタイプ)。まずタイプを決めてから対応する参照先を設定してください。
パフォーマンス測定でできること
Section titled “パフォーマンス測定でできること”- KPI 実績値の取得方法(測定タイプ)の定義
- SQL ベースの自動集計(測定計算との連携)
- マニュアル値の入力による手動 KPI 管理
- 実績タブ(Achievement)によるタスク達成率の管理
- 比率(PA_Ratio)・リクエスト件数・プロジェクト集計による測定
- Java 計算クラスによる独自ロジックの組み込み
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| 測定 | PA_Measure | 約16項目 | 測定タイプと取得方法の定義 |
| パフォーマンス実績 | PA_Achievement | 約11項目 | 達成タスクの一覧(測定タイプ=実績用) |
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>会計管理 > パフォーマンス測定 > パフォーマンス測定"] --> B["➕ 新規で名称を入力"]
B --> C{測定タイプ}
C -->|計算| D["🧮 測定計算を選択<br/>(SQL 定義を参照)"]
C -->|マニュアル| E["✍️ マニュアル実績に<br/>実績値を直接入力"]
C -->|実績| F["✅ パフォーマンス実績タブで<br/>達成タスクを登録"]
C -->|比率 / リクエスト / プロジェクト| G["🔗 比率・リクエストタイプ・<br/>プロジェクトタイプを選択"]
D --> H["💾 保存"]
E --> H
F --> H
G --> H
H --> I["🎯 パフォーマンスゴールに紐づけ<br/>→ ダッシュボードに表示"]
アクセス方法
Section titled “アクセス方法”メニューから「会計管理 > パフォーマンス測定 > パフォーマンス測定」を開きます。
- ツールバーの「新規」ボタンをクリック
- 基本情報を入力:
- 名称: 測定名(例:
月次受注金額) - 測定データタイプ: 時系列(Time)/状態(Status)
- 測定タイプ: 取得方法を選択(下表参照)
- 名称: 測定名(例:
- 測定タイプに応じた参照先を設定
- 「保存」をクリック
測定タイプ別の設定
Section titled “測定タイプ別の設定”| 測定タイプ | 必須設定 | 実績値の取得方法 |
|---|---|---|
| 計算(Calculated) | 測定計算 | 測定計算の SQL を実行して自動集計 |
| マニュアル(Manual) | マニュアル実績 | この画面で入力した値をそのまま使用 |
| 実績(Achievements) | パフォーマンス実績タブ | 達成済みタスクの割合・合計 |
| 比率(Ratio) | 比率(PA_Ratio) | 会計実績ベースの比率計算 |
| リクエスト(Request) | リクエストタイプ | 該当タイプのリクエスト件数 |
| プロジェクト(Project) | プロジェクトタイプ | 該当タイプのプロジェクト集計 |
| ユーザー定義(User defined) | 計算クラス | Java クラス(Measure 実装)を実行 |
パフォーマンス実績(Achievement)の登録
Section titled “パフォーマンス実績(Achievement)の登録”- 測定タイプ「実績」の測定を保存
- 「パフォーマンス実績」タブに移動
- タスクごとにレコードを作成:
- 名称/シーケンスNo: タスク名と順序
- マニュアル実績: このタスクの実績値
- 完成(Achieved): 達成したらチェック
- 達成チェックを付けて保存すると、ゴールの実績値に反映されます
項目リファレンス
Section titled “項目リファレンス”測定タブ(主要項目)
Section titled “測定タブ(主要項目)”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 名称 | 必須 | 文字列 | 測定の名称 |
| 測定データタイプ | 必須 | リスト | 時系列(初期値)/状態 |
| 測定タイプ | 必須 | リスト | 取得方法(初期値: マニュアル) |
| 測定計算 | 条件付必須 | 選択 | タイプ=計算 の場合に必須 |
| 比率 | 条件付必須 | 選択 | タイプ=比率 の場合に必須 |
| 計算クラス | 条件付必須 | 文字列 | タイプ=ユーザー定義 の場合に必須 |
| リクエストタイプ | 条件付必須 | 選択 | タイプ=リクエスト の場合に必須 |
| プロジェクトタイプ | 条件付必須 | 選択 | タイプ=プロジェクト の場合に必須 |
| マニュアル実績/メモ | - | 数値/テキスト | タイプ=マニュアル の実績値 |
| ベンチマーク | - | 選択 | 外部指標との比較用 |
| レポート階層 | - | 選択 | 集計に使う組織・科目ツリーの指定 |
全項目の一覧は 画面リファレンス を参照してください。
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 保存時に「必須項目を入力してください」と言われます。
Section titled “Q. 保存時に「必須項目を入力してください」と言われます。”測定タイプごとの条件付き必須チェック(MMeasure.beforeSave())です。計算→測定計算、比率→比率、ユーザー定義→計算クラス、リクエスト→リクエストタイプ、プロジェクト→プロジェクトタイプ、がそれぞれ未設定だと保存できません。
Q. マニュアル実績を更新したのにゴールに反映されません。
Section titled “Q. マニュアル実績を更新したのにゴールに反映されません。”測定タイプが「マニュアル」の場合は保存時に afterSave() が関連ゴールを自動更新します(updateManualGoals())。反映されない場合は、ゴール側がこの測定を参照しているか、ゴールの期間(測定スコープ・開始/終了日付)内かを確認してください。
Q. 実績(Achievement)タブの「完成」をチェックすると値が変わりました。
Section titled “Q. 実績(Achievement)タブの「完成」をチェックすると値が変わりました。”仕様です。MAchievement.beforeSave() は達成チェック時にマニュアル実績が 0 なら 1 を、伝票日付が空なら当日をセットします。達成タスクは保存のたびに updateAchievementGoals() でゴールへ集計されます。
Q. SQL でも標準タイプでも表現できない KPI はどうしますか?
Section titled “Q. SQL でも標準タイプでも表現できない KPI はどうしますか?”測定タイプ「ユーザー定義」で計算クラス(Measure インターフェースを実装した Java クラス)を指定します。OSGi プラグインとしてデプロイすれば、外部 API 参照など任意のロジックで実績値を返せます。
🛠 技術仕様(開発者向け)
パフォーマンス測定は PA_Measure テーブル(MMeasure クラス・759行)と PA_Achievement テーブル(MAchievement クラス・155行)で構成されます。MMeasure は測定タイプごとの実績集計とゴールへの反映(updateGoals())を担い、ImmutablePOSupport パターンのキャッシュ参照を持ちます。Document 型ではありません。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MMeasure {
+get(PA_Measure_ID) MMeasure
+getGraphColumnList(goal) ArrayList~GraphColumn~
+updateGoals() boolean
#beforeSave(newRecord) boolean
#afterSave(newRecord, success) boolean
+markImmutable() MMeasure
}
class MAchievement {
+get(measure) MAchievement[]
+getOfMeasure(ctx, PA_Measure_ID) MAchievement[]
#beforeSave(newRecord) boolean
#afterSave(newRecord, success) boolean
}
class MMeasureCalc {
+getSqlPI(...) String
}
class MGoal {
+setMeasureActual(actual)
}
MMeasure --|> X_PA_Measure : generated
MAchievement --|> X_PA_Achievement : generated
MMeasure --> MAchievement : has many
MMeasure --> MMeasureCalc : MeasureType=C
MMeasure --> MGoal : updateGoals
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MMeasure.java / MAchievement.java
関連DBテーブル
Section titled “関連DBテーブル”PA_Measure(測定)
Section titled “PA_Measure(測定)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| PA_Measure_ID | ID | PK | 測定ID | 主キー |
| Name | String(60) | Y | 名称 | |
| MeasureDataType | List(1) | Y | データタイプ | デフォルト T(時系列) |
| MeasureType | List(1) | Y | 測定タイプ | デフォルト M(マニュアル) |
| PA_MeasureCalc_ID | TableDirect | 条件付 | 測定計算FK | タイプ=計算で必須 |
| PA_Ratio_ID | TableDirect | 条件付 | 比率FK | タイプ=比率で必須 |
| CalculationClass | String(60) | 条件付 | 計算クラス | タイプ=ユーザー定義で必須 |
| R_RequestType_ID | TableDirect | 条件付 | リクエストタイプFK | タイプ=リクエストで必須 |
| C_ProjectType_ID | TableDirect | 条件付 | プロジェクトタイプFK | タイプ=プロジェクトで必須 |
| ManualActual / ManualNote | Number / Text | N | マニュアル実績/メモ | タイプ=マニュアル用 |
| PA_Benchmark_ID | TableDirect | N | ベンチマークFK | |
| PA_Hierarchy_ID | TableDirect | N | レポート階層FK |
PA_Achievement(パフォーマンス実績)
Section titled “PA_Achievement(パフォーマンス実績)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| PA_Measure_ID | TableDirect | Y | 測定FK | 親 |
| Name / SeqNo | String / Integer | Y | タスク名/順序 | |
| IsAchieved | YesNo | Y | 完成 | |
| ManualActual | Number | Y | 実績値 | 達成時 0 なら 1 に自動補正 |
| DateDoc | Date | N | 伝票日付 | 達成時に未設定なら当日を自動セット |
| Note | Text(2000) | N | メモ |
ビジネスロジック
Section titled “ビジネスロジック”MMeasure.beforeSave() — 測定タイプ別の条件付き必須検証:
| MeasureType | 必須カラム |
|---|---|
| Calculated | PA_MeasureCalc_ID |
| Ratio | PA_Ratio_ID |
| UserDefined | CalculationClass |
| Request | R_RequestType_ID |
| Project | C_ProjectType_ID |
MMeasure.afterSave() — タイプ=マニュアルの場合、updateManualGoals() で関連ゴールの実績値を即時更新。
MMeasure.updateGoals() — 全タイプ共通のゴール反映処理。タイプに応じて測定計算 SQL の実行・実績集計・件数集計を行い、MGoal.setMeasureActual() を呼び出します。getGraphColumnList(goal) はダッシュボードのグラフ描画用データを返します。
MAchievement.beforeSave() — IsAchieved=Y のとき ManualActual=0 なら 1 を、DateDoc 未設定なら現在時刻をセット。afterSave() / afterDelete() で updateAchievementGoals() を実行し、ゴールへ再集計します。
拡張ポイント
Section titled “拡張ポイント”- 計算クラス(Measure インターフェース):
MeasureType=UserDefinedで任意の Java ロジックを組み込む標準拡張ポイントです。OSGi プラグインでクラスを提供し、CalculationClassに FQCN を設定します - Model Validator: 測定定義の変更統制(本番 KPI の定義変更を管理者に限定する等)は
PA_Measureへのバリデータで実装できます - このテーブルに標準の callout はありません
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”Measure 計算クラスによる独自 KPI の追加や、外部 BI ツールとの実績連携をコア改変なしで実装できます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。