如何把 CSV 視覺化成一條工作流程
工作流程就是裡面有返工的流程。如何在一個 CSV 檔裡寫一個往回的「連線至」引用、為重試封頂令修訂不會無限繞圈,以及怎樣分辨一條真迴路與一個打錯了的列號。
運作方式
把匯出檔重排成流程次序
系統匯出檔出來時是按時間戳記或者工單次序排的,那是事情發生的次序,不是流程運行的次序。在寫下任何一個「連線至」值之前,先把那些列排成一宗個案所走的次序,因為那些值是列的位置,而事後把檔案重新排序會令它們每一個失效。
檢查標題列有沒有在匯出中活下來
欄是按標題名稱比對的,所以標題列是這個檔案裡唯一必須完全正確的部分。確認它寫著「形狀」、「方框文字」、「連線至」、「連線文字」。一個由 UTF-8 匯出帶來的位元組順序標記會附在第一個標題名稱上,而一份來自歐洲系統的分號分隔匯出檔會把整行放進一個儲存格——兩種情況下那個欄都不獲認得,並作為一個沒有用到的多餘欄被帶過,而不是大聲失敗。
先寫向前的路徑
只為直通的情況填「連線至」,那裡每一個數字都大過放著它那一列。先令這條工作流程由頭到尾完全沒有返工地跑通。加在一條你尚未驗證過的路徑上的迴路幾乎讀不回來,因為當兩者都指向一列你不肯定的列時,你分不出哪個是返回邊、哪個是錯的號碼。
加一列返工,並把返回邊指向它
給那次修訂一列自己的——「修訂折扣、價格或條款」——並把每一個退回的判斷都送去那一列,而不是在每一位審批人下面各自複製一個返工步驟。然後寫出離開返工那一段的返回邊,指向那個會重新評估已改動輸入的列。在示例裡那是第 3 列,即毛利率計算,不是第 1 列。
為重試封頂
一條沒有封頂的迴路是一條可以永遠跑下去的工作流程,而在真實流程裡它不會。在返工列之後加一個判斷,問這件事回來過幾多次——第 16 列「是否同一位審批人第二次退回?」——「連線至」寫 3,17:繞一次,第二趟就往上呈交。把那個儲存格用引號包起,令那個逗號留在裡面。
把檔案拖進去,再讀那些往回的箭嘴
把 .csv 拖到一張新圖表的試算表區域,或者直接把文字貼進去,圖就會渲染出來。然後把每一條往回走的箭嘴讀一次。每一條都應該是一個你叫得出名的情況——一次修訂、一次呈交、一次還價。一條你叫不出名的箭嘴是一個調轉了的列號,而這是唯一一個令它明顯可見的視圖。
常見問題
一個「連線至」值可以指向較前的一列嗎?
可以,而返工的整套機制就是這樣。「連線至」取的是目標列以 1 起計的位置,而沒有任何東西限制它必須大過放著它那一列,所以第 16 列的儲存格裡一個 3,就會由 16 往上畫一條箭嘴到 3。渲染器會把它繞開那些方框選路,不用你擺。因為沒有一個獨立的迴路標記,所以在一個 CSV 裡讀出迴路,就是掃描那些比自己那一列還小的數字——那是這個檔案裡唯一的訊號。
怎樣防止一條返工迴路永遠繞下去?
在返回路徑上放一個數算次數的判斷。示例裡,第 16 列問「是否同一位審批人第二次退回?」,並帶著「連線至」3,17 與「連線文字」第一次修訂,第二次修訂,所以第一趟繞回去,第二趟離開這條迴路去第 17 列「堅持這個折扣還是放棄這單生意?」。那個計數沒有儲存在任何地方——圖記錄的是那條規則,而規則才是人會遵守的東西。要緊的是這條迴路在圖上有一條加了標籤的出路,而不是留在某個人腦裡的一條默契。
在別人的檔案裡,怎樣分辨一條真迴路與一個錯的列號?
三個檢驗。目標列會不會重做那次返工實際改動過的工作?一條回到某個輸出這次不可能不同的步驟的迴路,是一個錯誤。那條回頭邊是不是離開一個判斷?一個「連線至」只往回指、而沒有向前出口的 Process 列,會令檔案其餘部分無法到達,幾乎一定是調轉了數字。還有那條分支有沒有標籤?真迴路帶著一個為那種情況命名的「連線文字」;打錯的從來沒有,因為沒有人會為一條自己並不打算畫的邊加標籤。
我的匯出檔是一次審批事件一列,不是一個步驟一列。該怎麼辦?
把它收攏。一張稽核表會把同一個步驟每發生一次就重複一次,所以一單被修訂了兩次的生意會出現兩列「退回申請人」,而直接匯入它得到的是一宗個案的圖,不是這條流程的定義。把不重複的步驟抽出來,每個保留一列,讓那個往回的引用去承載重複——那次替換正是這條迴路的用意所在。
當那些迴路跨越泳道時,圖還讀得到嗎?
路徑是計算出來的而不是畫出來的,所以一條由修訂那一欄回到報價那一欄的返回邊,會自行繞開那些方框選路,你甚麼都不用移動。令一條有迴路的工作流程讀不到的不是那些箭嘴,而是列的次序:把返工那幾列放在一起,像示例裡的第 15 至 17 列那樣,不要在每一位審批人下面散落一個修訂步驟。三位審批人各配一列返工,會產生三條其實是同一條的迴路。