現代命令概觀
命令推動模型導向應用程式的核心應用程式行為。 它們是使用者在使用應用程式時與之互動的按鈕,以及在選擇按鈕時執行的結果動作。 每個命令都是相對於其他命令進行定位,並綁定至應用程式中的命令列位置。
在較高層級,命令自訂會符合下列類別。 每個類別中都存在各種功能,其在新式命令文件中會更加深入地說明:
- 顯示。 按鈕的顯示方式以及它在應用程式中的位置。 例如,按鈕的標籤、圖示及協助工具標籤,以及命令列位置和命令列中的位置。
- 動作。 選擇按鈕時執行的邏輯。 例如,建立和更新資料,或與應用程式中的各種控制項和頁面互動。
- 可見度。 指定按鈕對使用者的可見或隱藏邏輯條件。 例如,您可能想要讓部分使用者看到按鈕,而對其他使用者隱藏該按鈕。 或者,只有在符合特定的資料記錄準則時,才會顯示按鈕。
命令列位置
主要格線。 使用應用程式的左側導覽查看此資料表中的整頁記錄清單時,顯示命令列。
主要表單。 該資料表的主要表單上顯示的命令列。 這會出現在表單的頂端,而不會與表單的不同區域中顯示的相關檢視表或子格線檢視相同。
+子格線檢視。 命令列會顯示在其他資料表的表單上,這些資料表會在子格中呈現該資料表的資料。 例如,客戶主要表單有一個子格線控制項,其中列出了與客戶記錄相關的連絡人記錄。 若要編輯下列命令列,請編輯連絡人資料表的命令列,然後按一下子格線檢視。
相關檢視。 查看此資料表中的相關資料時,命令列會顯示在上層資料表的表單上。 例如,從客戶記錄的主要表單中選取相關索引標籤,然後選取相關的資料表 (如連絡人)。
快速動作。 快速動作會與主要格線位置相關聯。 若要新增或編輯快速動作及主要格線位置的命令,請從新式應用程式設計工具中選取所需的資料表,然後編輯命令列並選擇主要格線位置。 在使用應用程式時,根據排序決定的前五個命令也會顯示為快速動作。
注意
命令設計工具不支援不常自訂的命令列位置。 有關自訂這些位置命令的詳細資訊,請參閱全域命令列和其他功能區區段。
命令的類型
- 命令。 標準按鈕。 選取時,執行動作。 也可以嵌套在下拉式功能表和分割按鈕中的群組。 請注意,這些在傳統命令中稱為飛出視窗。
- 下拉式清單。 建立功能表,您可以組織群組內的命令
- 群組。 為嵌套在下拉式清單和分割按鈕中的命令群組新增標題。
- 分割按鈕。 類似於下拉式清單,但是有主要命令。 選取 [分割] 按鈕時,會執行主要命令的動作。 如果選取展開箭號,則不會執行主要命令。 而是會展開清單,以顯示其他群組、飛出視窗及命令。
傳統和新式命令之間的主要區別
傳統命令 (先前稱為功能區) 無法使用低代碼進行自訂。 使用程式碼時,命令自訂相當困難、單調乏味,也容易發生錯誤。 為了將命令降低至低代碼,以及使用自訂頁面來集中畫布和模型導向應用程式,改造命令並重建基礎結構至關重要。
新式命令提供許多新功能,而且用法更為簡單。
功能 | 傳統 | 新式 |
---|---|---|
支援模型導向應用程式執行階段 | .是 | 是,另外也支援 Power Fx 執行階段。 |
自訂使用 | 手動編輯解決方案檔案中的 XML 或使用協力廠商工具。 解決方案匯出和匯入作業可能非常耗時。 | 命令設計工具和 Dataverse API 支援。 |
支援 Power Fx。 | 無 | 有。 動作和可見度。 |
自訂所需的時間 | 緩慢、易出錯。 | 快速 |
可靠性和效能 | 容易犯錯。 不良的自訂以及範圍不足通常會影響應用程式效能 | 內嵌錯誤處理可防止錯誤發生。 已最佳化 Power Fx 提升執行階段效能。 |
共用 | 標準 Dataverse 角色型安全性。 | 非 Power Fx 命令使用標準 Dataverse 角色型安全性。 除了具有適當的資訊安全角色之外,Power Fx 命令目前還需要共用命令元件庫。 |
解決方案和 ALM 行為 | 不一致且有問題的解決方案層,不會存在於解決方案介面中。 許多標準的解決方案行為不受支援,例如修補程式、分割、解決方案升級、受管理的屬性。 | 標準的解決方案層會針對 Dataverse 中的多個解決方案物件類型進行集中管理。 出現在解決方案介面中。 支援所有標準解決方案行為。 |
當地語系化 | 非標準 | 對整個解決方案使用匯出和匯入翻譯進行標準化。 |
資料模型 | 複雜。 針對傳統功能區最佳化,且包含許多不再需要的屬性。 | 簡單、最佳化,適用於現今的模型導向應用程式命令列。 |
使用 JavaScript | 是 | 是。 現在變得更簡單。 請注意:相同的 JavaScript 可用於傳統和新式命令。 |
自訂現成命令 | 是 | 遷移至新式框架後,命令就可以在命令設計工具中進行編輯。 |
應用程式特定命令 | 否 | 是。 使用新式命令設計工具可確保命令只在選取的應用程式中可見。 |
將在包含該資料表的所有應用程式中顯示的特定資料表命令 | 是 | 是。 需要修改解決方案檔案中的 appaction 定義。 |
將針對指定命令列位置的所有資料表和應用程式顯示的全域命令 | 是 | 是。 需要修改解決方案檔案中的 appaction 定義。 |
建立分割按鈕、飛出視窗及群組 | 是 | 是 |
使用程式碼動態填入飛出視窗 | 是 | 否。 建議以宣告方式建立命令。 |
自訂全域應用程式標題命令 | 是 | 否 |
為其他/不常見或過時命令列位置自訂命令 | 是 | 否 |
執行新式流程或工作流程 | 使用 JavaScript | 使用 JavaScript。 也支援使用自訂頁面。 |
傳統與新式可見度規則比較
傳統可見度規則通常對每個案例都有特定規則。 使用 Power Fx,宣告式函數會取代許多傳統規則。 而且使用起來也要簡單得多。
請注意,傳統命令也將很快支援傳統可見度規則。 但是,需要對傳統規則的支援才能將傳統命令可靠地遷移到新式命令,並且不支援命令設計工具中的傳統規則自訂。 建議您繼續使用 Power Fx。
使用案例 | 傳統規則 | 傳統選項 | Power Fx 顯示屬性 |
---|---|---|---|
根據資料值顯示/隱藏 | CustomRule | 使用 JavaScript | !IsBlank(Self.Selected.Item.Email) |
根據資料表權限顯示/隱藏 | EntityPrivilegeRule | 多個 | DataSourceInfo() |
根據記錄權限顯示/隱藏 | RecordPrivilegeRule | 多個 | RecordInfo() |
參考主要和相關資料表的控制項內容 | EntityRule | PrimaryEntity. SelectedEntity | Self.Selected |
參考控制項內容 | EntityRule | Form. HomePageGrid. SubGridStandard. SubGridAssociated | Self.Selected |
資料表中繼資料屬性 | EntityPropertyRule | DataSourceInfo() | |
根據表單狀態顯示/隱藏。 例如,為建立表單顯示 | FormStateRule | Create. Existing. ReadOnly. Disabled. BulkEdit | Self.Selected.State = FormMode.New |
在格線中選取 1 個以上的記錄時顯示 | SelectionCountRule | CountRows(Self.Selected.Items) > 1 | |
在多型查詢中顯示/隱藏相關資料表。 例如,檢查查詢是否為使用者或團隊 | CustomRule | PrimaryEntityTypeCode | IsType(), AsType |
參考環境屬性 (Org) | CustomRule | OrgName. OrgLcid. UserLcid | 目前無法使用 |
常見問題
- 為何在設計器中看不到我在應用程式中所見的命令?
- 有幾項理由。 有時有一些可見度邏輯,能在執行應用程式時隱藏命令。 其他時候,這些命令在執行時會透過自訂 JavaScript 動態注入並且不可設定。
- 為何在設計師中看不到重複的命令?
- 這是經典命令所使用的一般模式。 這兩種命令不會顯示在執行時間中,因為它們是由可見規則所控制。 命令設計師會顯示所有命令,無論可見度規則如何。