Skip to content

iDempiere リクエストグループの使い方|取引先管理 操作マニュアル・技術仕様

This content is not available in your language yet.

📖 取引先管理の全体像: 取引先管理の全体図 も合わせてご覧ください。

リクエストグループは、リクエストを「バージョン番号」「責任区分」といった括りでまとめるためのマスタです。カテゴリが話題の分類であるのに対し、グループは対応の単位・まとまりを表します。部品表(BOM)を参照するグループを作ると、設計変更依頼(BOM Change Request)との連携が可能になります。

📌 ポイント: グループに部品表を設定しておくと、リクエストのグループを変更したときに、紐付いた設計変更依頼(M_ChangeRequest)の部品表・変更通知が自動的に追従します。製造業の設計変更管理と問い合わせ管理をつなぐ要のマスタです。

リクエストグループでできること

Section titled “リクエストグループでできること”
  • リリースバージョン・責任区分などによるリクエストのグルーピング
  • グループごとの更新通知受信者(ユーザー)の登録
  • 受信者ごとのセルフサービス可否の設定
  • 部品表(PP_Product_BOM_ID)との紐付けによる設計変更管理との連携
  • 変更通知(M_ChangeNotice_ID)との紐付け
  • 説明・コメントによるグループ運用ルールの明文化

リクエストグループは2タブ構成です。

タブ名テーブル項目数役割
リクエストグループR_Group7項目グループの基本情報(名称・説明・部品表)
リクエスト更新R_GroupUpdates6項目このグループの更新を受け取るユーザーの一覧

💡 ヒント: 一般的な問い合わせ管理では部品表の設定は不要です。製造業で設計変更(ECR/ECN)とリクエストを連携させたい場合にのみ設定してください。

graph TD
    A["🚀 メニューから開く<br/>取引先管理 > リクエスト管理 > リクエストグループ"] --> B["➕ 新規でグループを作成<br/>(名称は必須)"]
    B --> C{用途}
    C -->|一般の問い合わせ管理| D["📝 説明・コメントを入力<br/>(例: v1.7 リリース分)"]
    C -->|設計変更と連携| E["🧩 部品表を選択<br/>必要なら変更通知も設定"]
    D --> F["💾 保存"]
    E --> F
    F --> G{更新通知を出す?}
    G -->|はい| H["👥 リクエスト更新タブで<br/>受信ユーザーを登録"]
    G -->|いいえ| I["✅ 登録完了"]
    H --> I
    I --> J["🔗 リクエスト画面の<br/>グループ欄で選択可能に"]

メニューから開く 取引先管理 > リクエスト管理 > リクエストグループ 新規でグループを作成 (名称は必須) 説明・コメントを入力 (例: v1.7 リリース分) 部品表を選択 必要なら変更通知も設定 保存 リクエスト更新タブで 受信ユーザーを登録 登録完了 リクエスト画面の グループ欄で選択可能に 用途 更新通知を出す? 一般の問い合わせ管理 設計変更と連携 はい いいえ

アクセス方法(メニューパス)

Section titled “アクセス方法(メニューパス)”

メニューから「取引先管理 > リクエスト管理 > リクエストグループ」を開きます(AD_Window_ID: 346)。

  1. ツールバーの「新規」ボタンをクリック
  2. 基本情報を入力:
    • 名称(必須): グループ名(例: v1.7リリース品質保証部対応
    • 説明: 短い説明(255文字まで)
    • コメント: 運用上のヒント(2,000文字まで)
    • 部品表(BOM & Formula): 設計変更と連携する場合に選択
  3. 保存」をクリック
  1. グループを保存後、「リクエスト更新」タブに移動
  2. 新規」で受信者を追加:
    • ユーザー(必須): 通知を受け取るユーザー/連絡先
    • セルフサービス: セルフサービス経由で扱えるエントリの場合にチェック
  3. 保存」をクリック

⚠️ 注意: 部品表を後から変更すると、そのグループに紐付く未処理の設計変更依頼の部品表・変更通知が自動更新されます(MRequest.afterSave() のロジック)。処理済みかつ修正変更通知が設定済みの依頼は更新されません。

項目名必須説明
クライアント必須選択テナント(既定値は自動セット)
組織必須選択組織(既定値は自動セット)
名称必須文字列(60)グループ名。識別子として使用
説明-文字列(255)短い説明
コメント-テキスト(2000)運用上のヒント
有効-チェック既定値はY
部品表(BOM & Formula)-検索設計変更と連携する部品表
項目名必須説明
グループ必須選択親グループ(自動セット)
ユーザー必須検索更新を受け取るユーザー/連絡先
セルフサービス必須チェックセルフサービスで変更可能なエントリか
有効-チェック既定値はY

全項目一覧はリファレンス参照

Q. カテゴリとグループはどう使い分けますか?

Section titled “Q. カテゴリとグループはどう使い分けますか?”

カテゴリ(R_Category)は「何についての問い合わせか」という話題の分類、グループ(R_Group)は「どのまとまりで対応するか」という括りです。標準の説明でもグループの例として「バージョン番号、責任区分」が挙げられています。両者は独立したフィールドなので、カテゴリ×グループの組み合わせで管理できます。

Q. 部品表を設定するとBOM変更依頼が自動作成されますか?

Section titled “Q. 部品表を設定するとBOM変更依頼が自動作成されますか?”

AD 上のグループの説明には「リクエストタイプで部品表が参照され有効化されている場合、BOM変更依頼が自動作成される」と記載されています。実際の連携ロジックは MRequest.afterSave() にあり、リクエストに設計変更依頼(M_ChangeRequest_ID)が既に存在する状態でグループを変更すると、新しいグループの PP_Product_BOM_IDM_ChangeNotice_ID が設計変更依頼側へ反映されます。

Q. グループを削除できますか?

Section titled “Q. グループを削除できますか?”

R_Group テーブルは削除可能(IsDeleteable=Y)ですが、リクエストから参照されている場合は外部キー制約で削除できません。運用中のグループは「有効」チェックを外して無効化してください。

Q. 更新通知タブに登録したユーザーには自動でメールが飛びますか?

Section titled “Q. 更新通知タブに登録したユーザーには自動でメールが飛びますか?”

R_GroupUpdates は受信者の一覧を保持するテーブルです(AD 上の説明は「リクエスト更新を受け取る受信者の一覧」)。実際の送信可否・送信経路はリクエストタイプやユーザー側の通知設定に依存するため、導入時に実環境での動作確認を行ってください。

🛠 技術仕様(開発者向け)

リクエストグループはマスタデータ型のウィンドウで、R_Group テーブルに格納されます。モデルクラスは MGroup(159行)で、X_R_Group を継承し ImmutablePOSupport を実装しています。Document 型ではありません。子タブの R_GroupUpdates には専用 M クラスがなく、生成クラス X_R_GroupUpdates のみが提供されます。

テーブルアクセスレベル削除可大量データ
R_Group6(システム+クライアント)YN
R_GroupUpdates7(すべて)YN
classDiagram
    class MGroup {
        +get(ctx, R_Group_ID) MGroup
        +getCopy(ctx, R_Group_ID, trxName) MGroup
        +markImmutable() MGroup
    }
    class X_R_Group {
        <<generated>>
    }
    class X_R_GroupUpdates {
        <<generated>>
    }
    class PO {
        <<abstract>>
    }
    class ImmutablePOSupport {
        <<interface>>
    }
    MGroup --|> X_R_Group
    X_R_Group --|> PO
    X_R_GroupUpdates --|> PO
    MGroup ..|> ImmutablePOSupport
    MRequest --> MGroup : getGroup()
    MGroup --> MChangeRequest : BOM & ChangeNotice

+get(ctx, R_Group_ID) MGroup +getCopy(ctx, R_Group_ID, trxName) MGroup +markImmutable() MGroup <> <> <> > X_R_Group X_R_Group -- > PO MGroup ..

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/MGroup.java

カラム名必須説明備考
R_Group_IDIDPKグループID主キー
AD_Client_IDTable DirectYテナント既定値 @#AD_Client_ID@
AD_Org_IDTable DirectY組織既定値 @#AD_Org_ID@
NameString(60)Y名称識別子(IsIdentifier=Y)
DescriptionString(255)N説明
HelpText(2000)Nコメント/ヒント
PP_Product_BOM_IDSearchN部品表設計変更連携用
M_ChangeNotice_IDTable DirectN変更通知設計変更通知(版)
IsActiveYes-NoY有効既定値 Y
R_Group_UUUUIDNUUID

R_GroupUpdates(更新通知の受信者)

Section titled “R_GroupUpdates(更新通知の受信者)”
カラム名必須説明
R_Group_IDTable DirectY親グループFK(IsParent=Y)
AD_User_IDSearchY受信ユーザーFK(IsParent=Y)
IsSelfServiceYes-NoYセルフサービスエントリ
IsActiveYes-NoY有効
R_GroupUpdates_UUUUIDNUUID
erDiagram
    R_Group ||--o{ R_GroupUpdates : "notification recipients"
    R_Group ||--o{ R_Request : "groups"
    R_GroupUpdates }o--|| AD_User : "recipient"
    R_Group }o--o| PP_Product_BOM : "BOM link"
    R_Group }o--o| M_ChangeNotice : "change notice"
    R_Request }o--o| M_ChangeRequest : "ECR"

notification recipients BOM link change notice

MGroup 自体は beforeSave() / afterSave() をオーバーライドしておらず、キャッシュ取得(get)・コピー取得(getCopy)・イミュータブル化(markImmutable)を提供する薄いマスタクラスです。グループの業務的な意味づけは MRequest 側に実装されています。

設計変更依頼への追従(MRequest.afterSave)

Section titled “設計変更依頼への追従(MRequest.afterSave)”
flowchart TD
    A["リクエスト保存 afterSave"] --> B{"M_ChangeRequest_ID != 0 かつ<br/>R_Group_ID が変更された?"}
    B -->|いいえ| Z["何もしない"]
    B -->|はい| C{"新しい R_Group_ID = 0?"}
    C -->|はい| D["M_ChangeRequest_ID を 0 にする"]
    C -->|いいえ| E["旧グループと新グループを取得"]
    E --> F{"PP_Product_BOM_ID または<br/>M_ChangeNotice_ID が異なる?"}
    F -->|いいえ| Z
    F -->|はい| G{"ECR が未処理 または<br/>修正変更通知が未設定?"}
    G -->|いいえ| Z
    G -->|はい| H["ECR の PP_Product_BOM_ID と<br/>M_ChangeNotice_ID を更新して保存"]

リクエスト保存 afterSave M_ChangeRequest_ID != 0 かつ R_Group_ID が変更された? 何もしない 新しい R_Group_ID = 0? M_ChangeRequest_ID を 0 にする 旧グループと新グループを取得 PP_Product_BOM_ID または M_ChangeNotice_ID が異なる? ECR が未処理 または 修正変更通知が未設定? ECR の PP_Product_BOM_ID と M_ChangeNotice_ID を更新して保存 いいえ はい

このロジックにより、リクエストのグループ付け替えが設計変更依頼(M_ChangeRequest)へ伝播します。

MRequest.getGroup()R_Group_ID が 0 のとき null を返し、それ以外は MGroup.getCopy() を返します。表示名は getGroupName() で取得します。

拡張ポイント(カスタマイズ箇所)

Section titled “拡張ポイント(カスタマイズ箇所)”
public class CustomRequestGroupValidator implements ModelValidator {
@Override
public int modelChange(PO po, int type) throws Exception {
if (po instanceof MGroup) {
MGroup group = (MGroup) po;
if (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE) {
// 例: 設計変更連携グループは部品表と変更通知の両方を必須にする
if (group.getPP_Product_BOM_ID() > 0 && group.getM_ChangeNotice_ID() == 0) {
throw new AdempiereException("部品表を設定したグループには変更通知も設定してください");
}
}
}
return null;
}
}

R_Group / R_GroupUpdates のカラムには標準 Callout が設定されていません。部品表選択時に変更通知を自動セットするなどの連動が必要な場合は、独自 Callout を OSGi サービスとして登録します。

MRequest.afterSave() の ECR 追従ロジックを拡張したい場合は、コアを改変せず R_Request の modelChange イベント(TYPE_AFTER_CHANGE)で M_ChangeRequest を操作する実装が安全です。


リクエストグループは、問い合わせ管理と設計変更管理(ECR/ECN)をつなぐ数少ない接点です。製造業での不具合報告から設計変更までを一気通貫で回す運用は、OSGiプラグインによる拡張で実現できます。

As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。

OSS ERP導入・カスタマイズサービスの詳細はこちら