Visual Flow 簡介

Visual Flow(流)

Salesforce提供了幾種自動化流程工具,其中的Visual Flow(流)可以用來實現用戶界面和邏輯,並對數據進行CRUD(Create 創建,Read 讀取,Update 更改,Delete 刪除)的操作。

從開發者的角度來說,我們可以把「流」看作是Apex代碼邏輯的具象化。

對於「流」的完整介紹,可以參考官方文檔。

比如:在客服接到用戶的電話後,根據用戶的具體需求,使用相應的業務邏輯來進行處理。

創建「流」

在「設置」界面下,搜索「流」,點擊「流」鏈接,即可進入「流」的一覽表。在這裡我們可以使用「新流」按鈕來創建新的「流」。

  • 注意,「流」的編輯器(Flow Designer)需要瀏覽器支持並啟用Adobe Flash插件。

「流」的編輯器界面如圖所示:

屏幕右邊是「畫布」區域,用於「流」的具體設計。

屏幕左方是工具欄,包含了三個標籤:

  • 調色板:包含了「流」的基礎元素,用戶可以拖動這些元素到「畫布」中,創建「流」的一個步驟。比如對用戶顯示一個頁面、對數據進行讀寫操作、對於不同情況進行選擇等
  • 資源:包含了各種類型的變數,用戶可以在此處新建變數,這些變數只存在於此「流」中,類似於Apex代碼中的變數,只對某一個類或某一個代碼段有效
  • 瀏覽器:包含了已經存在於此「流」中的各個元素和變數,用戶可以在此快速查找各種元素

「流」的創建步驟

創建一個「流」包括以下步驟:

  1. 將不同元素拖動到「畫布」區域,設定它們的屬性,作為「流」的各個步驟
  2. 將各個元素連接起來,形成流程圖
  3. 選擇一個元素作為「流」的起始元素
  4. 保存,此時該「流」是未被啟用的
  5. 在「設置」界面的「流」頁面,啟用相應的「流」

示例:創建一個「流」

我們使用一個示例來展示如何創建一個「流」。在該示例中,用戶可以輸入字元來查找「客戶」對象。

創建第一個屏幕

「屏幕」元素可以向用戶展示一個頁面,用來收集用戶輸入,或顯示某些數據。

  • 拖動「屏幕」元素到「畫布」中。這將會是用戶看到的第一個頁面。

在「屏幕」的編輯界面中,可以對該「屏幕」元素進行命名,並添加若干欄位。這些欄位便是屏幕中的元素,比如文本框、複選框、下拉列表等。

  • 在此「屏幕」元素中,設置其「姓名」和「唯一名稱」。

「姓名」和「唯一名稱」是每個元素都有的屬性,「姓名」用於顯示在「流」的設計器中,而「唯一名稱」則是「流」內部的ID,將此元素和其他元素區分開來。

  • 在此「屏幕」元素中,添加一個「文本框」欄位,並設置其「唯一名稱」(「TextInput_Searchstring」)以及「標籤」。

  • 保存。

可以看到,設計器中有了第一個「屏幕」元素。

當滑鼠移動到該「屏幕」元素時,「屏幕」元素右上角會出現三個圖標,分別是「編輯」、「刪除」和「設置為開始元素」。這一點對於每個元素都適用。點擊「設置為開始元素」圖標,即可將剛才創建的「屏幕」元素設定為該「流」的第一個步驟。

查找相應的數據

在接收了用戶的輸入之後,「流」的第二個步驟是查找相應的客戶。「快速查找」元素可以實現此功能。

注意:從這一步開始,我們需要在「流」中定義變數。這些變數可以將查找的結果暫時保存,在後面的步驟中使用。

  • 拖動「快速查找」元素到「畫布」中,設置「姓名」和「唯一名稱」。
  • 在「篩選器和分配」部分的「查找」下拉列表框中,選擇「Account」,即「客戶」對象的API名稱。這一步是定義該「快速查找」元素進行查找的對象類型。
  • 當設定「Account」為查找類型後,編輯屏幕會多出一些輸入框,用於設置查找的條件和結果。

  • 在「它滿足以下條件:」文字下面的部分,我們可以定義查找條件。在「欄位」中選擇「標準」,「Name」,說明要查找的條件是客戶的標準欄位:名字。在「運算符」中選擇「包含」。在「值」的下拉列表中選擇「屏幕輸入欄位」中的「TextInput_Searchstring」,即剛才創建的「屏幕」元素中「文本框」的名字。通過這些設置,可以查找名字中包含用戶輸入字元的客戶。

  • 在設置了查找條件後,在「變數」中可以定義查找的結果保存到哪個變數中。查找的結果將會是若干客戶對象,所以需要用「SObject集合變數」來儲存。由於目前還沒有創建任何變數,在「變數」的下拉列表中選擇「新建」,「SObject集合變數」。這樣可以直接創建一個變數來存儲查找結果。

  • 在SObject集合變數的新建界面,可以設定其「唯一名稱」,並選擇其代表的類型,這裡是「Account」即客戶類型。在「輸入/輸出類型」部分還可以設置該變數的使用範圍,「專用」即僅限該「流」使用。「流」的變數都是通過這種窗口來設定,不同類型的變數需要設定不同的屬性。

  • 新建了變數後,勾選「如果未找到記錄,則將空值分配給變數」複選框。接下來還需要指定該變數中保存查找結果的哪些欄位。未被保存的欄位在後面的步驟中是不能被使用的。在「欄位」中選擇「Id」,並添加其他欄位(Name,Phone)。

  • 保存後,該元素便創建完成。
  • 在上一步創建的「屏幕」元素下方有一個菱形,點擊並拖動到剛才建立的「快速查找」元素中,即可將「快速查找」元素作為「屏幕」元素的下一個步驟。

根據查找結果做決策

如果快速查找的結果為空,則需要向用戶顯示一個「沒有結果」的信息,並退出。否則需要顯示查找的結果。

  • 拖動「決策」元素到「畫布」中。「決策」元素可以根據若干條件對後面的步驟設定不同的分支。
  • 在「決策」元素中,設定「姓名」和「唯一名稱」。
  • 在「結果」部分,可以設定不同的條件,併產生不同的結果。後面的步驟會根據不同的結果來執行相應的分支。
  • 添加一個「結果」,將條件設定為剛才的查找結果為空。在「資源」下拉列表中選擇上一步建立的變數「accounts」,在「運算符」中選擇「為空」,在「值」中選擇「全局常量 真」。

  • 添加一個「結果」,將條件設定為剛才的查找結果不為空。在「資源」下拉列表中選擇上一步建立的變數「accounts」,在「運算符」中選擇「為空」,在「值」中選擇「全局常量 假」。
  1. 保存,並將上一步「快速查找」元素連接到該「決策」元素中。

若查找結果為空,則顯示失敗信息

如果查找結果為空,則需要向用戶顯示「無搜索結果」的界面。

  1. 新建一個「屏幕」元素,在其中添加「顯示文本」欄位,設定要顯示給用戶的信息。
  2. 保存「屏幕」元素後,將上一步建立的「決策」元素連接到該「屏幕」元素中。在建立連接時,需要選擇該連接對應「決策」中的哪個「結果」。

若查找結果不為空,則顯示成功信息

和上一步類似,添加一個「屏幕」元素,用於顯示「成功」的信息,並將「決策」元素中的「非空」結果連接到該「屏幕」元素上。

保存並啟用「流」

點擊「保存」按鈕保存該「流」。

回到「流」的一覽表界面,可以看到該「流」尚未啟用。進入該「流」的詳細信息頁面,在「流程版本」部分點擊「啟用」按鈕,即可啟用該「流」。

注意:每個「流」都可以有若干個版本。當一個「流」被啟用之後,該版本便無法被更改。用戶可以更改此「流」並保存為一個新的版本,然後啟用新的版本。

「流」的調試小知識

流在執行時可能出現錯誤,也可能順利執行完成但結果和預期不一樣。下面提供一些調試的小知識。

調試日誌

當「流」在執行時遇到問題時,首先可以使用設置界面中的「調試日誌(Debug Log)」來進行調試。

一般來說,在調試日誌中會有由 「FLOW_ELEMENT_START」、 「FLOW_ELEMENT_END」、「FLOW_ELEMENT_ERROR」等開始的記錄,分別代表了流中元素的開始、結束、發生的錯誤。「FLOW_ELEMENT_ERROR」相關的記錄會記錄下流在執行中遇到的問題。

決策(Decide)元素的邏輯錯誤

如果在日誌中沒有發現錯誤,但是執行的結果和預想不一樣,可能是在某個決策元素中走了錯誤的分支。

決策元素中的各種分支是有順序的,處於上面的分支先被判斷。如果某個判斷條件A包含了處於其下面的判斷條件B的話,則此決策元素在判斷完條件A之後就會直接執行,而忽略了包括B在內的餘下條件。這樣,從判斷條件B以後的分支中的所有操作永遠不會被執行。


推薦閱讀:

業務軟體複雜度管理

TAG:Salesforce | 业务流程 |