iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
Odoo

用 Odoo 打造數位轉型引擎:從基礎建置到跨領域應用系列 第 15

Day 15:Odoo 自動化流程(Server Actions 與 Scheduled Actions)

  • 分享至 

  • xImage
  •  

在企業日常營運中,總有一些例行性動作需要自動化,例如:寄送提醒信件、定期產生報表、批次更新資料。Odoo 提供了 Server Actions(伺服器動作)Scheduled Actions(排程動作) 兩種方式,讓系統能自動執行這些工作,減少人工操作。


1. Server Actions(伺服器動作)

Server Actions 是即時觸發的動作,可以在資料變更或事件發生時執行。
常見用途:

  • 自動寄送通知信件
  • 當紀錄更新時觸發特定邏輯
  • 自動建立關聯紀錄

建立方式

  1. 進入 設定 → 技術 → 動作 → 伺服器動作
  2. 新增一個動作,例如:當任務完成時寄出通知

範例(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>

這段程式會在任務進入「完成」階段時,自動發送通知訊息。


2. Scheduled Actions(排程動作)

Scheduled Actions 則是 定期執行 的自動化流程(類似 Cron Jobs)。
常見用途:

  • 每天寄送報表
  • 每小時同步外部 API 資料
  • 定期清理過期紀錄

建立方式

  1. 進入 設定 → 技術 → 自動化 → 排程動作
  2. 設定執行的模型、方法,以及時間間隔(分鐘/小時/天)。

範例(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', '&lt;', '2000-01-01')])
      old_books.write({'active': False})
    </field>
    <field name="interval_number">1</field>
    <field name="interval_type">days</field>
  </record>
</odoo>

這段程式會每天自動檢查並將 2000 年前出版的書籍標記為「非啟用」。


3. 差異比較

功能類型 Server Actions Scheduled Actions
觸發時機 事件驅動(即時) 定時排程(週期性)
使用場景 任務完成通知、資料更新 每日報表、批次清理
技術特性 實時運行,無時間延遲 依照時間表執行

小結

  • Server Actions 適合事件驅動的即時自動化。
  • Scheduled Actions 適合例行性的定時任務。
  • 結合兩者,能讓 Odoo 不只是 ERP,更是一個 智慧自動化平台

在下一篇文章中,我將介紹 Odoo 報表與 QWeb PDF 輸出,教你如何產生專業的 PDF 文件與報表。


上一篇
Day 14:Odoo 權限控制與使用者角色管理
下一篇
Day 16:Odoo 報表與 QWeb PDF 輸出
系列文
用 Odoo 打造數位轉型引擎:從基礎建置到跨領域應用16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言