在企業日常營運中,總有一些例行性動作需要自動化,例如:寄送提醒信件、定期產生報表、批次更新資料。Odoo 提供了 Server Actions(伺服器動作) 與 Scheduled Actions(排程動作) 兩種方式,讓系統能自動執行這些工作,減少人工操作。
Server Actions 是即時觸發的動作,可以在資料變更或事件發生時執行。
常見用途:
範例(XML 定義 Server Action):
<odoo>
<record id="server_action_task_done" model="ir.actions.server">
<field name="name">Notify when Task Done</field>
<field name="model_id" ref="project.model_project_task"/>
<field name="state">code</field>
<field name="code">
if record.stage_id.name == 'Done':
record.message_post(body="任務已完成,系統已自動通知!")
</field>
</record>
</odoo>
這段程式會在任務進入「完成」階段時,自動發送通知訊息。
Scheduled Actions 則是 定期執行 的自動化流程(類似 Cron Jobs)。
常見用途:
範例(XML 定義 Scheduled Action):
<odoo>
<record id="ir_cron_auto_archive_books" model="ir.cron">
<field name="name">Auto Archive Old Books</field>
<field name="model_id" ref="model_library_book"/>
<field name="state">code</field>
<field name="code">
old_books = model.search([('published_date', '<', '2000-01-01')])
old_books.write({'active': False})
</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
</record>
</odoo>
這段程式會每天自動檢查並將 2000 年前出版的書籍標記為「非啟用」。
功能類型 | Server Actions | Scheduled Actions |
---|---|---|
觸發時機 | 事件驅動(即時) | 定時排程(週期性) |
使用場景 | 任務完成通知、資料更新 | 每日報表、批次清理 |
技術特性 | 實時運行,無時間延遲 | 依照時間表執行 |
在下一篇文章中,我將介紹 Odoo 報表與 QWeb PDF 輸出,教你如何產生專業的 PDF 文件與報表。