Skip to Content

transition 規則

transition 把單值等值欄位變成明確狀態機:selectstringtext,或 principal 欄位principalusersocial_client)——room:salesuser:lead 這種重新指派流程和狀態流程一樣合法。它使用 allowlist:只有列在 pairs 的前後值組合能通過,比維護一長串禁止路徑更安全。

Payload

{ "type": "transition", "name": "訂單狀態流程", "column": "狀態", "pairs": [ [null, "草稿"], ["草稿", "已送出"], ["已送出", "已核准"], ["已送出", "已退回"], ["已退回", "草稿"] ] }

pairs 必須是非空陣列,最多 50 組。null 代表空狀態端點;select 欄位中的非空值必須是現有 option,principal 欄位中的則是身分字串——usersocial_client 是原始 id,principal 是帶標籤的 user:<id>smc:<id>room:<id> cell。

執行語意

規則在 update 與 revert 時檢查前值和後值;值沒有改變時會通過。Create 的初始狀態不由這條規則判斷,因此若初始值只能是某個集合,另加 check 或欄位預設值。

transition 不接受有效的 when。條件式狀態機通常會變得難以推理;若不同物件需要不同流程,優先拆成不同狀態欄位或資料表。

先用 rules.preview 檢查設定 shape,再由 rules.set 發布完整清單。

Last updated on