如何由 CSV 建立泳道圖
把一個 CSV 匯出檔的負責人或指派給欄變成泳道:每一個不重複值成為一條泳道,空白儲存格會落入第一條,而一次交接就是兩端坐在不同泳道的連線。
當那個指名每個步驟由誰負責的欄,標題寫著「縱向泳道」,一個 CSV 就會變成一張泳道圖——匯入比對的是標題名稱,所以改一個標題已經是大部分的功夫。
簡而言之
- 把負責人欄的標題改成「縱向泳道」。匯入比對的是標題名稱,不是位置。
- 那個欄裡每一個不重複值都會變成一條泳道,所以「IT」與「IT 」會變成兩條。
- 一個空白的負責人儲存格會把步驟放進第一條泳道,而不是它自己的一條。
- 一次交接就是「連線至」所指那一列帶著另一個負責人的連線——由檔案就數得出。
- 永遠不要按負責人把 CSV 排序:「連線至」放的是列號,一排序就把整張圖重新接線。
負責人欄本來就是泳道欄
幾乎每一個描述流程的 CSV,都帶著一個指名每個步驟由誰做的欄。它由工單系統出來時叫「指派給」,由人力資源系統出來時叫「部門」,由一份人手維護的登記冊出來時叫「擁有者」或者「負責人」。一直以來那個欄是用來篩選的——把屬於我的那些列給我看。而一張泳道圖,就是同一個欄改為用來承擔結構時的樣子:那些值不再是一個篩選條件,而變成這條流程橫跨其上的那幾條帶。
機制很短,因為一個 CSV 是帶著一行標題的純文字,而 QueryChart 比對的是那些標題名稱而不是欄的位置。把「指派給」改名為「縱向泳道」,把「方框文字」留給步驟、「連線至」留給它所通往那一列的列號,然後把 .csv 拖到編輯器的試算表區域,或者直接把文字貼進去。泳道欄裡每一個不重複值都會變成一條泳道;一個空白的值會把那個步驟放進第一條泳道。編輯器不認得的欄——工單編號、到期日、服務水平——會被帶過並忽略,所以沒有東西要事先剔走。如果檔案還未整理成這個樣子,/yue/guides/流程圖csv檔案結構 處理那些欄,而 /yue/guides/在csv裡定義連接 處理「連線至」。
泳道欄真正買到的,是一個你可以直接套用在檔案上、連工具都不用打開的交接定義:一次交接,就是兩端坐在不同泳道的一條連線。拿一列,讀它的「連線至」數字,找到那一列,比較兩個負責人儲存格。值不同就代表工作換了手。由上而下這樣做一次,你就在畫任何東西之前,已經數清楚這條流程裡有多少次交接——而那個數字正是值得爭論的數字,因為每一次都是一個隊列、一封電郵,或者一次等待。
下面的示例是一項橫跨五個負責人的市場推廣活動審批:申請人、市場推廣、品牌、法務與媒體採購。它有 25 列與 30 條連線,而其中 15 條——正好一半——由一個負責人的泳道跨進另一個的泳道。打開畫布下面的試算表面板,把「縱向泳道」欄挨著「連線至」一起讀。
一個負責人欄,五條泳道
橫跨申請人、市場推廣、品牌、法務與媒體採購的活動審批。打開試算表面板,看看產生那幾條帶的是哪一個泳道欄。
只有列與形狀
頭六列是簡報那一段:「提出一項活動申請」、「填寫活動簡報」、檢查「簡報是否完整到足以規劃?」、一道關於欠缺資料的後續問題、Reject 列「活動申請已撤回」,以及「議定上線日期與預算」。一份 CSV 匯出檔通常放的就是這些——一串帶著「形狀」值、彼此之間沒有東西連著的步驟。沒有人由它看得出工作在哪裡換手。
「連線至」,以及第一次跨界
填好「連線至」就畫出箭嘴,而第一次交接立刻現身:「填寫活動簡報」坐在申請人那邊,指向坐在市場推廣那邊的「簡報是否完整到足以規劃?」。第 9 至 11 列補上品牌檢查與它的返工迴路,其中第 11 列指回第 9 列——「連線至」裡一個往回的數字,把素材由市場推廣第二次交到品牌手上。
分支上的標籤
第 14 列「聲稱是否照原文批准?」的「連線至」有三個數字,「連線文字」有三個標籤:是、改寫措辭,以及無法舉證。改寫措辭那個出口去到市場推廣那邊的第 15 列,而它直接指回法務那邊的第 13 列。所以一次措辭改動要跨越泳道界線兩次,而這種來回,正是檔案講得一清二楚、一份文字版標準作業程序卻從來不會講的東西。
泳道欄
現在 25 列全部帶著一個「縱向泳道」值——申請人、市場推廣、品牌、法務、媒體採購——以及一個承載階段的「橫向泳道」值:簡報、草擬、審閱、審批、上線。30 條連線裡有 15 條跨越了一個負責人邊界。法務只佔三列,卻有四條連線跨進或跨出它,而這正是把法務拉得比第 13 列更早介入的理由。
運作方式
挑出那一個指名負責人的欄
匯出檔通常給你幾個人選:指派給、擁有者、負責人、部門、團隊、隊列。挑那個處於你想要泳道所在層級的欄——讀者是經理的話就用團隊,只有在流程真的因人而異時才用具名的人。一張泳道圖有一條承擔論點的泳道軸;其餘那些欄可以跟著走而不被使用。
匯入之前先列出不重複值
在產生這個檔案的工具裡,對那個欄做一次不重複值或者移除重複的處理,然後讀一讀結果。那份清單正好就是你即將得到的那組泳道。如果它有九項而你預期五項,那你有的是四個拼寫變體,不是四個團隊,而在欄裡修好它,遠比事後合併泳道便宜。
把空白填上一個真實的值
一個空白的負責人儲存格不會產生一條「未知」泳道——那個步驟會落進第一條泳道,而在每一位讀者眼中,看上去都會像是第一個團隊擁有那件工作。在每一個空儲存格打上一個明確的值,「未指派」或者「未議定」。沒有人叫得出負責人的那些步驟,是整件功夫最有用的產出,所以給它們一個看得見的位置坐。
把標題列改名
匯入器讀的就是標題列:步驟用「方框文字」、它所通往那一列的列號用「連線至」、分支標籤用「連線文字」、Start/Process/Decision/End 用「形狀」,而負責人用「縱向泳道」。如果你同時有一個階段欄,也一併用「橫向泳道」。一個仍然叫作「擁有者」的標題會被帶過並忽略,而圖會扁平地渲染,不會有任何警告。
檢查分隔符、引號用法與編碼
負責人那些值是最有可能含有逗號的——「財務, EMEA」或者「營運, 北歐」——而一個沒有引號保護的逗號會把那一列拆出一個多餘的欄,令它後面每一個值往左移一格。用純文字編輯器打開這個檔案,看三四行。確認分隔符就是你以為的那個、任何含有它的值都用雙引號包起,而且檔案是 UTF-8,好讓帶重音的泳道名稱活得下來。
匯入,然後讀那些跨界
把 .csv 拖到一張新圖表的試算表區域,或者把文字貼進去。泳道會以帶狀出現,而圖自行選路。現在追一追每一條離開一條帶、進入另一條帶的箭嘴:那些就是交接,而值得留意的是那些跨過去又跨回來的一對,例如示例裡市場推廣與法務之間那條改寫措辭的迴路。
應避免的錯誤
一個仍然叫作「擁有者」的欄
匯入比對的是標題名稱。一個標題寫著擁有者、指派給或者部門的欄會被帶過並忽略,於是圖渲染成一張扁平的流程圖,而看上去像是不支援泳道。那個標題必須寫「縱向泳道」或者「橫向泳道」。
先按負責人把檔案排序
把那些列按團隊分組,感覺上像是在為泳道做準備,而它會毀掉這張圖:「連線至」放的是列號,所以重新排序會令每一列重新編號,而每一條連線現在都指向別的地方。泳道會由那些值自行分組。泳道的次序是圖表的屬性,不是檔案的屬性——在編輯器裡重排一次就好。
近乎重複的泳道值
不同的字串產生不同的泳道,所以「IT」、「I.T.」與尾隨一個空格的「IT 」是三條泳道,其中兩條名字看起來一樣。匯出檔不斷產生這些:有些列是顯示名稱、有些列是電郵地址,一個團隊在年中改了名。先把那個欄正規化,然後才匯入。
一個值裡的逗號與分號
沒有引號保護的「法務, EMEA」會變成兩個欄位,並把你的泳道文字推進「備註」欄。歐洲地區設定的匯出檔經常是分號分隔、以逗號作小數點,它會以同樣方式在再後面一個欄失敗。匯入之前先看原始文字;同一個問題在流程地圖上的版本見 /yue/guides/csv轉流程地圖。
把你的負責人欄變成泳道
把這個活動示例作為你自己的圖表打開,看看「縱向泳道」欄在做甚麼,然後把你自己的列貼上去覆蓋它。
相關指南
常見問題
負責人應該放「橫向泳道」還是「縱向泳道」?
兩者都可以,而且你可以兩個都用。示例裡的慣例是負責人放「縱向泳道」——申請人、市場推廣、品牌、法務、媒體採購——而階段放「橫向泳道」:簡報、草擬、審閱、審批、上線。這樣得到一個網格,一個步驟的位置同時說明了由誰做以及在甚麼時候做。如果你的檔案只有一個負責人欄,就填一個泳道欄、另一個留空;單軸也是一張正常的泳道圖。
我會得到幾條泳道?
泳道欄裡每一個不重複而非空白的值一條,這正是為甚麼那份不重複值清單值得在匯入之前先讀一次。空白儲存格不會多產生一條泳道——它們把步驟放進第一條——所以一份有空缺的匯出檔,會悄悄把沒有人負責的工作歸給碰巧排在最前的那個團隊。在那些儲存格打上「未指派」花你一分鐘,而它把一個隱形的錯誤變成一條看得見的泳道。
單看這個 CSV 就找得出那些交接嗎?
找得出,而且值得做一次,好讓你信得過那張圖。對每一列,拿「連線至」裡的數字,找到那一列,再比較兩個負責人儲存格:值不同就代表工作換了手。往回的數字也算——一列指向較前一列的返工,是另一個方向上的一次交接。/yue/templates/csv泳道流程圖 的示例檔案有 30 條連線,其中 15 條跨越了泳道界線。
我的匯出檔是一張工單一列,而指派給裡有四十個名字。現在怎麼辦?
你手上的是一份個案日誌,不是一份流程定義,而匯入它會得到四十條泳道,每一條放著幾個互不相關的方框。兩趟功夫可以修好:先把那些列收攏成那些工單所經過的不重複步驟,然後把姓名對應到執行它們的角色或團隊。泳道大約在三條到七條之間才讀得到,而一張一人一條泳道的圖,回答的是一個人手編制的問題,不是一個流程的問題。
泳道標題變成了亂碼字元。哪裡出錯了?
編碼。泳道名稱是畫在圖上的,所以一個以 Latin-1 或 Windows-1252 匯出、卻被當成 UTF-8 去讀的檔案,會把損壞顯示在最顯眼的位置——Ø、ä 與 é 在一條帶的標題裡各自變成一對雜亂字元。請重新匯出為 UTF-8,而不是人手更正那些標籤,因為同樣那些值通常在其他欄裡也出現。如果反而是第一個欄看上去被忽略了,就檢查標題列前面有沒有一個位元組順序標記。
