iDempiere リクエスト標準回答の使い方|取引先管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 取引先管理の全体像: 取引先管理の全体図 も合わせてご覧ください。
リクエスト標準回答は、問い合わせ対応でよく使う定型文をあらかじめ登録しておくマスタです。リクエスト画面で標準回答を選ぶと、登録したテキストが回答欄へコピーされ、担当者ごとの表現ゆれや入力の手間をなくせます。
📌 ポイント: 標準回答は選択した瞬間に Callout(
CalloutRequest.copyResponse)が動作し、テキストがリクエスト側へコピーされます。コピー後の文面はリクエスト上で自由に編集できるため、「たたき台」として使うのが実務的です。
リクエスト標準回答でできること
Section titled “リクエスト標準回答でできること”- よくある問い合わせへの定型回答文の登録(最大2,000文字)
- リクエスト画面での定型文のワンクリック挿入
- 回答品質・表現の標準化(担当者による表現ゆれの防止)
- 名称による定型文の検索・選別
- 有効/無効フラグによる文面の世代管理
リクエスト標準回答は単一タブのシンプルなマスタです。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| 標準回答 | R_StandardResponse | 5項目 | 定型文の名称と本文 |
💡 ヒント: 名称は一覧から選ぶときの目印になります。「【請求】支払期日の確認」のように、用途が一目でわかる接頭辞を付けると選びやすくなります。
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>取引先管理 > リクエスト管理 > リクエスト標準回答"] --> B["➕ 新規で標準回答を作成"]
B --> C["🏷 名称を入力<br/>(用途がわかる見出し)"]
C --> D["✍️ 回答テキストを入力<br/>(最大2000文字・必須)"]
D --> E["💾 保存"]
E --> F["📨 リクエスト画面で<br/>標準回答を選択"]
F --> G["⚙️ Callout が本文を<br/>リクエストへコピー"]
G --> H["🖊 必要に応じて<br/>個別内容を追記して送信"]
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”メニューから「取引先管理 > リクエスト管理 > リクエスト標準回答」を開きます(AD_Window_ID: 348)。
- ツールバーの「新規」ボタンをクリック
- 基本情報を入力:
- 名称(必須): 標準回答の見出し(例:
【一次受付】受付完了のご連絡) - 回答テキスト(必須): 実際に送る本文(2,000文字まで)
- 名称(必須): 標準回答の見出し(例:
- 「保存」をクリック
リクエストでの利用
Section titled “リクエストでの利用”- リクエスト画面で対象のリクエストを開きます
- 「標準回答」欄で登録済みの定型文を選択します
- 選択と同時に Callout が動作し、回答テキストがコピーされます
- 宛名や個別事情を追記して回答を確定します
⚠️ 注意: 回答テキストは2,000文字までです。長文の案内が必要な場合は、複数の標準回答に分割するか、詳細は添付ファイルやドキュメントURLへ誘導する構成にしてください。
項目リファレンス
Section titled “項目リファレンス”標準回答タブ
Section titled “標準回答タブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| クライアント | 必須 | 選択 | テナント(既定値は自動セット) |
| 組織 | 必須 | 選択 | 組織(既定値は自動セット) |
| 名称 | 必須 | 文字列(60) | 標準回答の見出し。識別子として使用 |
| 回答テキスト | 必須 | テキスト(2000) | リクエストへコピーされる本文 |
| 有効 | - | チェック | 既定値はY。外すと新規選択の対象外 |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 回答テキストは必須ですか?
Section titled “Q. 回答テキストは必須ですか?”はい。ResponseText は IsMandatory=Y の必須カラムです。名称だけを登録して本文を後から追記する運用はできません。下書き段階の文面でも、何らかのテキストを入れて保存する必要があります。
Q. 標準回答を選ぶと元の入力内容は消えますか?
Section titled “Q. 標準回答を選ぶと元の入力内容は消えますか?”標準回答の選択時には Callout CalloutRequest.copyResponse が動作し、選択した標準回答の名称と回答テキストを取得してリクエストの回答テキストへ反映します。既存の入力がある場合の挙動は運用前にテスト環境で必ず確認し、必要なら先に本文を退避してから選択してください。
Q. 一度使った標準回答の選択状態は残りますか?
Section titled “Q. 一度使った標準回答の選択状態は残りますか?”RequestEventHandler にはリクエスト処理の中で R_StandardResponse_ID を 0 にリセットする処理が含まれています。標準回答は「一度コピーするためのトリガー」であり、リクエストに恒久的に紐付ける項目ではないと理解してください。
Q. 標準回答を削除できますか?
Section titled “Q. 標準回答を削除できますか?”R_StandardResponse テーブルは削除可能(IsDeleteable=Y)です。ただし過去のリクエストからの参照が残っている場合は削除できないことがあります。使わなくなった文面は「有効」チェックを外して無効化するのが安全です。
🛠 技術仕様(開発者向け)
リクエスト標準回答はマスタデータ型のウィンドウで、R_StandardResponse テーブルに格納されます。専用の M クラスは存在せず、生成クラス X_R_StandardResponse(およびインターフェース I_R_StandardResponse)のみが提供されます。ビジネスロジックはモデル側ではなく、Callout(CalloutRequest)とイベントハンドラ(RequestEventHandler)に置かれています。
| テーブル | アクセスレベル | 削除可 | 大量データ | ビュー |
|---|---|---|---|---|
| R_StandardResponse | 6(システム+クライアント) | Y | N | N |
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class X_R_StandardResponse {
<<generated>>
+getName() String
+getResponseText() String
}
class I_R_StandardResponse {
<<interface>>
}
class PO {
<<abstract>>
}
class CalloutRequest {
+copyResponse(ctx, WindowNo, mTab, mField, value) String
+copyMail(ctx, WindowNo, mTab, mField, value) String
}
X_R_StandardResponse --|> PO
X_R_StandardResponse ..|> I_R_StandardResponse
CalloutRequest --> X_R_StandardResponse : reads Name, ResponseText
MRequest --> X_R_StandardResponse : R_StandardResponse_ID
パッケージ: org.compiere.model
ソースファイル(生成クラス): org.adempiere.base/src/org/compiere/model/X_R_StandardResponse.java
ソースファイル(Callout): org.adempiere.base.callout/src/org/compiere/model/CalloutRequest.java
関連DBテーブル
Section titled “関連DBテーブル”R_StandardResponse(標準回答)
Section titled “R_StandardResponse(標準回答)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| R_StandardResponse_ID | ID | PK | 標準回答ID | 主キー |
| AD_Client_ID | Table Direct | Y | テナント | 既定値 @#AD_Client_ID@ |
| AD_Org_ID | Table Direct | Y | 組織 | 既定値 @#AD_Org_ID@ |
| Name | String(60) | Y | 名称 | 識別子(IsIdentifier=Y) |
| ResponseText | Text(2000) | Y | 回答テキスト | 必須。リクエストへコピーされる本文 |
| IsActive | Yes-No | Y | 有効 | 既定値 Y |
| R_StandardResponse_UU | UUID | N | UUID |
erDiagram
R_StandardResponse ||--o{ R_Request : "copied into response"
R_Request ||--o{ R_RequestUpdate : "update history"
R_Request }o--|| R_Status : "status"
ビジネスロジック
Section titled “ビジネスロジック”Callout によるテキストコピー
Section titled “Callout によるテキストコピー”標準回答の中核ロジックは CalloutRequest.copyResponse() にあります。
flowchart TD
A["リクエスト画面で<br/>標準回答を選択"] --> B["copyResponse Callout 起動"]
B --> C{"R_StandardResponse_ID が有効?"}
C -->|いいえ| D["何もしない"]
C -->|はい| E["SELECT Name, ResponseText<br/>FROM R_StandardResponse<br/>WHERE R_StandardResponse_ID = ?"]
E --> F["取得したテキストを<br/>リクエストの回答へ反映"]
同じ CalloutRequest クラスには、メール定型文を扱う copyMail()、リクエストタイプ変更時の type() も実装されています。
イベントハンドラ側の扱い
Section titled “イベントハンドラ側の扱い”RequestEventHandler では、リクエスト処理の過程で setR_StandardResponse_ID(0) を実行する箇所があります。標準回答は「コピー用の一時的な選択」として扱われる設計です。
モデル層のバリデーション
Section titled “モデル層のバリデーション”R_StandardResponse には M クラスがないため、beforeSave() / afterSave() によるカスタムバリデーションは標準では存在しません。制約は AD 定義の必須指定(Name、ResponseText)とDB制約のみです。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”M クラスがなくても、Model Validator は PO の get_TableName() で対象を判定して適用できます。
public class CustomStandardResponseValidator implements ModelValidator { @Override public int modelChange(PO po, int type) throws Exception { if (I_R_StandardResponse.Table_Name.equals(po.get_TableName()) && (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) { String text = (String) po.get_Value("ResponseText"); // 例: 差し込み変数の記法チェック if (text != null && text.contains("@") && !text.matches("(?s).*@\\w+@.*")) { throw new AdempiereException("差し込み変数は @変数名@ の形式で記述してください"); } } return null; }}Callout の差し替え
Section titled “Callout の差し替え”CalloutRequest.copyResponse の挙動(既存テキストへの追記にする、署名を自動付与するなど)を変えたい場合は、コアを改変せず独自 Callout を OSGi サービスとして登録し、AD_Column.Callout の設定を差し替えます。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”定型回答は、サポート対応の速度と品質を同時に上げる投資対効果の高い仕組みです。差し込み変数の自動展開や、カテゴリ別の候補絞り込みなどは Callout の拡張で実現できます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。