transition 規則
transition 把單值等值欄位變成明確狀態機:select、string、text,或 principal 欄位(principal、user、social_client)——room:sales → user:lead 這種重新指派流程和狀態流程一樣合法。它使用 allowlist:只有列在 pairs 的前後值組合能通過,比維護一長串禁止路徑更安全。
Payload
{
"type": "transition",
"name": "訂單狀態流程",
"column": "狀態",
"pairs": [
[null, "草稿"],
["草稿", "已送出"],
["已送出", "已核准"],
["已送出", "已退回"],
["已退回", "草稿"]
]
}pairs 必須是非空陣列,最多 50 組。null 代表空狀態端點;select 欄位中的非空值必須是現有 option,principal 欄位中的則是身分字串——user/social_client 是原始 id,principal 是帶標籤的 user:<id>/smc:<id>/room:<id> cell。
執行語意
規則在 update 與 revert 時檢查前值和後值;值沒有改變時會通過。Create 的初始狀態不由這條規則判斷,因此若初始值只能是某個集合,另加 check 或欄位預設值。
transition 不接受有效的 when。條件式狀態機通常會變得難以推理;若不同物件需要不同流程,優先拆成不同狀態欄位或資料表。
先用 rules.preview 檢查設定 shape,再由 rules.set 發布完整清單。
Last updated on