Skip to content

iDempiere アラートの使い方|会計 操作マニュアル・技術仕様

This content is not available in your language yet.

📖 会計の全体像: 会計の全体図 も合わせてご覧ください。

アラートは、「通知したいシステム状態」を SQL 条件で定義し、該当データが存在したときに指定ユーザー・ロールへ自動通知する仕組みです。与信超過の取引先、長期未転記の伝票、滞留在庫など、業務ルールの監視を人手を介さず自動化できます。

📌 ポイント: アラートの実行はサーバー側の「アラートプロセッサ」が担います。アラートを定義しただけでは通知されません。アラートプロセッサが稼働しており、アラートに受取人が登録されていることが通知の前提条件です。

  • SQL(SELECT / FROM / WHERE 句)による監視条件の定義
  • 該当データ検出時のメール通知(件名・本文をテンプレート化)
  • 通知先の指定(個別ユーザー / ロール単位)
  • クライアント・ロールのデータセキュリティを考慮した通知制御
  • 監視クエリ実行前後の SQL 実行(前処理・後処理)
タブ名テーブル項目数役割
アラートAD_Alert約12項目アラート本体(件名・メッセージ・プロセッサ割当)
アラートルールAD_AlertRule約14項目監視条件の SQL 定義(SELECT/FROM/WHERE)
アラート受取人AD_AlertRecipient約6項目通知先のユーザー / ロール
graph TD
    A["🚀 メニューから開く<br/>会計管理 > パフォーマンス測定 > アラート"] --> B["➕ アラートタブで<br/>名称・件名・メッセージを入力"]
    B --> C["⚙️ アラートプロセッサを割当"]
    C --> D["📝 アラートルールタブで<br/>SQL SELECT / FROM / WHERE を定義"]
    D --> E["👥 アラート受取人タブで<br/>ユーザーまたはロールを登録"]
    E --> F["💾 保存"]
    F --> G["⏰ アラートプロセッサが定期実行<br/>該当データがあればメール通知"]
    G --> H{SQL エラー?}
    H -->|Yes| I["⚠️ ルールの有効フラグが N になり<br/>エラーメッセージに記録"]
    H -->|No| J["✅ 通知完了"]

メニューから開く 会計管理 > パフォーマンス測定 > アラート アラートタブで 名称・件名・メッセージを入力 アラートプロセッサを割当 アラートルールタブで SQL SELECT / FROM / WHERE を定義 アラート受取人タブで ユーザーまたはロールを登録 保存 ⏰ アラートプロセッサが定期実行 該当データがあればメール通知 ルールの有効フラグが N になり エラーメッセージに記録 通知完了 SQL エラー?

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

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

メニューから「会計管理 > パフォーマンス測定 > アラート」を開きます。

  1. 新規」ボタンをクリックし、アラートタブで入力:
    • 名称: アラート名
    • アラート件名: 通知メールの件名
    • アラートメッセージ: 通知メールの本文
    • アラートプロセッサ: 実行を担当するプロセッサ(必須)
    • クライアントセキュリティ実行 / ロールセキュリティ実行: 受取人の権限で見えるデータのみ通知するか
  2. アラートルールタブで監視条件を定義:
    • 名称: ルール名
    • SQL SELECT句: 通知に含める列(例: DocumentNo, GrandTotal
    • SQL FROM句: 対象テーブル(例: C_Invoice
    • SQL WHERE句: 検出条件(例: DocStatus='DR' AND Created < now() - interval '7 days'
    • テーブル: 対象テーブルを指定するとレコードへのリンクが可能に
  3. アラート受取人タブで通知先を登録:
    • ユーザー: 個別ユーザーへ通知
    • ロール: ロール所属ユーザー全員へ通知
  4. 保存」をクリック

⚠️ 注意: SQL 句は自由記述のため、誤った SQL を登録すると実行時にエラーとなり、ルールの「有効」フラグが自動的にオフ、エラーメッセージ欄に内容が記録されます。修正後に有効フラグを戻すと再実行されます。

主要項目のみ掲載します。全項目一覧はリファレンス参照

項目名必須説明
名称必須文字列アラート名
アラート件名必須文字列通知メールの件名(255文字以内)
アラートメッセージ必須テキスト通知メールの本文(2000文字以内)
アラートプロセッサ必須選択実行スケジュールを持つサーバープロセス
クライアントセキュリティ実行必須チェック受取人のクライアント権限内のデータのみ通知(既定 Y)
ロールセキュリティ実行必須チェック受取人のロール権限内のデータのみ通知(既定 Y)
有効(IsValid)必須チェック配下ルールの妥当性(自動管理)
項目名必須説明
名称必須文字列ルール名
SQL SELECT句必須テキスト取得する列のリスト
SQL FROM句必須テキスト対象テーブル・結合
SQL WHERE句-テキスト検出条件
その他のSQL文-テキストGROUP BY / ORDER BY 等
前処理 / 転記処理-テキストクエリ実行前後に実行する SQL
テーブル-選択対象テーブル(レコードリンク用)
エラーメッセージ-テキスト実行エラー時に自動記録

Q. アラートメールが届きません。

Section titled “Q. アラートメールが届きません。”

次の 3 点を順に確認してください。(1) アラートプロセッサが割り当てられ、サーバーで稼働しているか。(2) アラート受取人にユーザーまたはロールが登録されているか。(3) ルールの有効フラグがオンか(SQL エラーで自動的にオフになっている場合はエラーメッセージ欄を確認)。

Q. 「クライアントセキュリティ実行」「ロールセキュリティ実行」とは何ですか?

Section titled “Q. 「クライアントセキュリティ実行」「ロールセキュリティ実行」とは何ですか?”

通知データに受取人の権限フィルタを適用する設定です。オンの場合、受取人のロールで参照できないデータは通知に含まれません(MAlertRule.getSql(applySecurity) がロールのアクセス制御 SQL を付加します)。全データを通知したい監視用途ではオフにできますが、権限外データの露出に注意してください。

Q. ルールを修正したのにアラート本体の「有効」が戻りません。

Section titled “Q. ルールを修正したのにアラート本体の「有効」が戻りません。”

アラート本体の IsValid は配下ルールの状態から自動計算されます。有効かつ IsValid=N のルールが 1 件でも残っていると N のままです(MAlertRule 保存・削除時に親を一括更新)。問題のルールを修正して保存するか、無効化してください。

Q. 通知先をロールで指定した場合、誰に届きますか?

Section titled “Q. 通知先をロールで指定した場合、誰に届きますか?”

そのロールに割り当てられている全ユーザーが対象です。個人単位で制御したい場合は「ユーザー」で個別登録してください。

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

アラートは AD_Alert(本体)+ AD_AlertRule(SQL ルール)+ AD_AlertRecipient(受取人)の 3 テーブル構成(いずれもアクセスレベル 6 = System+Client)です。モデルクラスは MAlert(238行)・MAlertRule(236行)・MAlertRecipient(106行)。実行本体はサーバープロセスのアラートプロセッサ(MAlertProcessor)が担います。

classDiagram
    class MAlert {
        +getRules(boolean) MAlertRule[]
        +getRecipients(boolean) MAlertRecipient[]
        +getFirstAD_Role_ID() int
        +getFirstAD_User_ID() int
        +getRecipientUsers() Collection
    }
    class MAlertRule {
        +getSql() String
        +getSql(boolean applySecurity) String
        +createReportFile(String) File
        #beforeSave(boolean) boolean
        #afterSave(boolean, boolean) boolean
        #afterDelete(boolean) boolean
    }
    class MAlertRecipient
    class MAlertProcessor
    class X_AD_Alert {
        <<generated>>
    }
    MAlert --|> X_AD_Alert
    MAlert --> MAlertRule : has many
    MAlert --> MAlertRecipient : has many
    MAlertProcessor --> MAlert : executes

+getRules(boolean) MAlertRule[] +getRecipients(boolean) MAlertRecipient[] +getFirstAD_Role_ID() int +getFirstAD_User_ID() int +getRecipientUsers() Collection +getSql() String +getSql(boolean applySecurity) String +createReportFile(String) File #beforeSave(boolean) boolean #afterSave(boolean, boolean) boolean #afterDelete(boolean) boolean <>

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/MAlert.java(同ディレクトリに MAlertRule.java / MAlertRecipient.java / MAlertProcessor.java

カラム名必須説明備考
AD_Alert_IDIDPKアラートID主キー
NameString(60)Y名称
AlertSubjectString(255)Yアラート件名
AlertMessageText(2000)Yアラートメッセージ
AD_AlertProcessor_IDTableDirectYアラートプロセッサ
EnforceClientSecurityYesNoYクライアントセキュリティ実行default Y
EnforceRoleSecurityYesNoYロールセキュリティ実行default Y
IsValidYesNoY有効(ルール妥当性)default Y・自動管理
カラム名必須説明備考
AD_AlertRule_IDIDPKルールID主キー
AD_Alert_IDTableDirectY親アラート
SelectClauseText(2000)YSQL SELECT句
FromClauseText(2000)YSQL FROM句
WhereClauseText(2000)NSQL WHERE句
OtherClauseText(2000)Nその他のSQL文
PreProcessing / PostProcessingText(2000)N前処理 / 後処理SQL
AD_Table_IDTableDirectN対象テーブルレコードリンク用
IsValidYesNoY有効実行エラーで N
ErrorMsgText(2000)Nエラーメッセージ実行エラー時に記録

AD_AlertRecipient(アラート受取人)

Section titled “AD_AlertRecipient(アラート受取人)”
カラム名必須説明
AD_AlertRecipient_IDIDPK受取人ID
AD_Alert_IDTableDirectY親アラート
AD_User_IDSearchNユーザー
AD_Role_IDTableDirectNロール

SELECT / FROM / WHERE / その他句を結合して監視 SQL を組み立てます。applySecurity=true の場合、親アラートの EnforceClientSecurity / EnforceRoleSecurity 設定に従い、最初の受取人のロール・ユーザー権限によるアクセス制御句を付加します。

  • beforeSave(): 新規時は IsValid=true、有効なルールはエラーメッセージをクリア
  • afterSave() / afterDelete(): 親 AD_Alert.IsValid を SQL 一括更新。**「IsActive=Y かつ IsValid=N のルールが 1 件でもあれば親も N」**というルールで同期します

MAlert.getRecipientUsers() が受取人(ユーザー直接指定 + ロール指定のロール所属ユーザー)を集約し、重複を除いた通知先リストを返します。

  • Callout: 標準 Callout の定義はありません(gw_column 上 callout なし)
  • Model Validator: AD_AlertRule の保存時に SQL の静的チェック(禁止テーブル・必須条件)を追加すると、運用ミスを事前に防げます
  • 通知チャネルの拡張(メール以外への通知)はアラートプロセッサ側の処理をプラグインで置き換える設計になります

このウィンドウ自体にプロセスボタンはありません。実行はサーバープロセスのアラートプロセッサ(スケジュール実行)が担います。


与信・滞留・締め漏れなど、貴社固有の監視ルールをアラートとして自動化できます。SQL 設計から通知運用までお任せください。

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

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