- Microsoft Dynamics CRM 教程
- Microsoft CRM - 首頁
- Microsoft CRM - 概述
- Microsoft CRM - 環境
- Microsoft CRM - 功能模組
- Microsoft CRM - 實體和記錄
- Microsoft CRM - 欄位
- Microsoft CRM - 表單
- Microsoft CRM - 搜尋
- Microsoft CRM - 網頁資源
- JScript 網頁資源
- HTML 網頁資源
- Microsoft CRM - 工作流流程
- Microsoft CRM - 外掛
- Microsoft CRM - 外掛註冊
- Microsoft CRM - Web 服務
- Microsoft CRM - 解決方案
- Microsoft CRM 有用資源
- Microsoft CRM - 快速指南
- Microsoft CRM - 有用資源
- Microsoft CRM - 討論
Microsoft Dynamics CRM 快速指南
Microsoft Dynamics CRM - 概述
客戶關係管理 (CRM) 是一個用於管理公司與其現有和潛在客戶互動關係的系統。它通常涉及使用技術來組織、自動化和同步銷售、營銷、客戶服務和技術支援。透過組織和自動化培養客戶滿意度和忠誠度的業務流程,CRM 可以幫助降低成本並提高盈利能力。
Microsoft Dynamics CRM
Microsoft Dynamics CRM 是由微軟開發的客戶關係管理軟體包,專注於增強任何組織的客戶關係。產品本身主要側重於銷售、營銷和客戶服務領域,儘管微軟一直在將 Dynamics CRM 作為 XRM 平臺進行營銷,並一直鼓勵合作伙伴使用其專有的(基於 .NET)框架對其進行定製。近年來,它也作為由 CRM 驅動的分析平臺發展壯大。
CRM 解決方案可用於提升組織的銷售效率和營銷效果,處理完整的客戶支援鏈,並提供社交洞察、商業智慧以及許多其他開箱即用的功能和特性。作為一款產品,Microsoft Dynamics CRM 還提供完整的移動支援,以便在手機和平板電腦上使用 CRM 應用。
在撰寫本教程時,CRM 的最新版本是 CRM 2016。但是,在本教程中,我們將使用 CRM 2015 線上版,因為它是最新穩定版本,並且在許多組織中經常使用。即便如此,即使您使用的是其他任何版本的 CRM,教程中的所有概念仍然適用。
產品服務
Microsoft Dynamics CRM 提供兩類產品:
CRM 線上版
CRM 線上版是 Microsoft Dynamics CRM 的基於雲的服務,所有後端流程(例如應用程式伺服器、設定、部署、資料庫、許可等)都在 Microsoft 伺服器上進行管理。CRM 線上版是基於訂閱的服務,對於那些不想管理 CRM 實施中涉及的所有技術細節的組織來說是理想的選擇。您可以在幾天內(而不是幾周、幾個月或幾年)開始設定您的系統,並透過瀏覽器訪問它。
CRM 本地版
CRM 本地版是 Microsoft Dynamics CRM 功能更強大、更自定義的服務,其中 CRM 應用程式和資料庫將部署在您的伺服器上。此服務允許您控制所有資料庫、自定義項、部署、備份、許可以及其他網路和硬體設定。通常,希望獲得自定義 CRM 解決方案的組織更喜歡本地部署,因為它提供了更好的整合和自定義功能。
從功能角度來看,兩種服務都提供類似的功能;但是,它們在實施方面存在很大差異。差異總結在下表中。
| CRM 線上版 | CRM 本地版 |
|---|---|
| 這是 Microsoft 提供的基於雲的解決方案,其中所有伺服器和資料庫都由 Microsoft 管理。 | 這是 Microsoft 提供的本地解決方案,其中伺服器和資料庫由客戶管理。 |
| 您可以在幾天內開始使用線上服務。您按需支付使用者和已使用空間的費用。 | 設定本地服務需要技術技能以及足夠的時間來設定 CRM 例項並使其執行。 |
| 它支援相對較少的自定義和擴充套件。 | 它支援相對較多的自定義和擴充套件。 |
| 由於資料庫託管在 Microsoft 伺服器上,因此 CRM 線上版無法執行手動資料備份和還原操作。但是,Microsoft 會每天對資料庫進行備份。 | CRM 本地版提供了完全管理資料庫的能力。 |
| CRM 線上版根據資料儲存限制(例如 5GB、20 GB 等)提供各種方案。 | CRM 本地版對儲存大小沒有任何此類限制,因為資料存在於您自己的伺服器上。 |
| CRM 線上版具有洞察、社交聆聽、分析等功能的內建功能。 | CRM 本地版需要為這些功能支付額外費用。 |
| CRM 線上版支援自動更新到未來版本。 | CRM 本地版更新需要由管理員安裝。 |
訪問 CRM
可以透過以下任何選項訪問 Microsoft Dynamics CRM:
- 瀏覽器
- 手機和平板電腦
- Outlook
產品競爭對手
Microsoft Dynamics CRM 無疑是 CRM 領域頂級產品之一。但是,以下是與 Microsoft Dynamics CRM 競爭的其他產品。
- Salesforce.com
- Oracle
- SAP
- Sage CRM
- Sugar CRM
- NetSuite
產品版本
Microsoft Dynamics CRM 從 2003 年的 1.0 版本開始發展至今。最新版本(截至撰寫本文時)為 2015。以下是按時間順序排列的版本列表:
- Microsoft CRM 1.0
- Microsoft CRM 1.2
- Microsoft Dynamics CRM 3.0
- Microsoft Dynamics CRM 4.0
- Microsoft Dynamics CRM 2011
- Microsoft Dynamics CRM 2013
- Microsoft Dynamics CRM 2015
- Microsoft Dynamics CRM 2016
Microsoft Dynamics CRM - 環境
讓我們從設定 CRM 環境開始。我們將使用 CRM 2015 線上版,因為線上版提供一個月的免費試用訪問許可權。這樣,您就不需要購買任何許可證來學習 CRM。
注意 - 由於 Microsoft Dynamics CRM 是一款不斷發展的產品,因此當您學習本教程時,可能會有更新的產品版本。在這種情況下,應用程式的外觀可能與本教程螢幕截圖中的外觀不完全相同。但是,產品的核心概念保持不變。產品的外觀和導航可能會發生變化,但是,在大多數情況下,您將能夠輕鬆地瀏覽並找到所需的選項。
設定 Microsoft Dynamics CRM 線上帳戶
步驟 1 - 導航到以下 URL:
https://www.microsoft.com/en-us/dynamics365/home
如果您將來透過此連結沒有看到試用版的選項,只需在 Google 上搜索“Microsoft Dynamics CRM 免費試用”即可。
步驟 2 - 點選“免費試用”按鈕。這將啟動一個三步註冊流程,如下圖所示。在三步註冊的步驟 1 中,填寫必填資訊,例如姓名、電子郵件和語言。
步驟 3 - 點選“免費試用”按鈕。這將啟動一個三步註冊流程,如下圖所示。在三步註冊的步驟 1 中,填寫必填資訊,例如姓名、電子郵件和語言。
步驟 4 - 在三步註冊的步驟 3 中,Microsoft 將驗證您指定的手機號碼。為此,您可以提供您的手機號碼並點選“給我發簡訊”。然後它將向您的手機發送一個 OTP,您可以使用它來繼續設定。
步驟 5 - 您的 Office 365 使用者 ID 將被建立。您可以儲存此使用者 ID 資訊以供以後訪問。
設定帳戶後,它將開啟您的 CRM 儀表板,其外觀如下所示。
再次強調一下,上面的螢幕截圖可能會隨著未來版本的更新而改變,但是設定環境將是一個非常簡單的過程。
下載 CRM SDK
Microsoft Dynamics CRM 的軟體開發工具包 (SDK) 包含重要的程式碼示例,包括伺服器端程式碼、客戶端程式碼、擴充套件、外掛、Web 服務、工作流、安全模型等。基本上,SDK 包含您開始使用 CRM 所需的每個開發資源。無論您是計劃設定新的外掛專案還是為 CRM 設定 Web 服務專案,SDK 都提供了從簡單到高階的體系結構和示例,以幫助您開始。我們現在將介紹下載和安裝 SDK 的步驟。
步驟 1 - 每個版本的 Microsoft Dynamics CRM 都有其自己的 SDK 版本。獲取正確 SDK 版本的最佳方法是在 Google 上搜索您相應的 CRM 版本。例如,如果您的 CRM 版本是 2015,則嘗試搜尋“Microsoft Dynamics CRM 2015 SDK”。
步驟 2 - 下載完成後,執行 exe 安裝程式。點選“繼續”。
步驟 3 - 它將要求您選擇 SDK 應解壓到的位置。選擇任何合適的位置以儲存參考 SDK。
步驟 4 - 開啟您解壓到的資料夾。您可以從此處訪問所有 SDK 內容。
結論
在本節中,我們透過建立 CRM 線上帳戶來設定我們的環境。然後,我們下載了 CRM SDK,它將在本教程的後續章節中使用。請務必記下您設定帳戶時使用的憑據,因為下次登入時您將需要這些憑據。
功能模組
整個 Microsoft Dynamics CRM 是圍繞以下功能模組設計的。
- 銷售
- 市場營銷
- 服務管理
這些功能模組通常稱為工作區。
瞭解 CRM 功能模組
整個 CRM 應用程式按功能劃分為不同型別的使用者和團隊。因此,如果一個組織使用 CRM 來管理其流程,則銷售團隊的使用者將使用銷售模組下的功能,而市場營銷團隊的使用者將使用市場營銷模組下的功能。
所有這三個功能模組共同驅動獲得新客戶(市場營銷)、向他們銷售服務(銷售)和維護現有客戶(服務管理)的整個生命週期。
為了更好地理解此流程,請考慮一家向客戶銷售信用卡的銀行。向客戶銷售信用卡的典型生命週期如下。在此生命週期的每個步驟中,您將看到銷售、市場營銷和服務模組如何發揮其作用。
銷售與市場營銷 − 銀行的呼叫中心辦公室主管接收潛在客戶的資料;在CRM中通常稱為潛在客戶 (Leads)。這些潛在客戶透過市場營銷活動、銷售驅動、推薦等方式捕獲到CRM系統中。
銷售 − 呼叫中心主管透過電話/電子郵件等方式與這些潛在客戶溝通。如果客戶對信用卡產品感興趣,則潛在客戶記錄將轉換為商機記錄(已贏得的潛在客戶)。
服務 − 一旦客戶成為系統的一部分,公司將協助他/她進行支付、賬單、退款等。每當客戶有任何疑問或疑慮時,他們都會致電呼叫中心並提出工單。主管將跟進以解決此問題,目標是為客戶提供優質服務。這些任務屬於CRM服務管理。
導航CRM工作區
步驟1 − 開啟CRM主頁。
步驟2 − 預設情況下,您將看到選中“銷售”工作區。
步驟3 − 要更改工作區,請單擊“顯示工作區”選項。您將看到選擇“銷售”、“服務”和“市場營銷”的選項。
步驟4 − 單擊“銷售”。這將顯示您所有屬於銷售的實體,例如賬戶、聯絡人、潛在客戶、商機、競爭對手等。這些實體都按其業務流程進行分類,例如我的工作、客戶、銷售、輔助材料等。
步驟5 − 同樣,如果您單擊“市場營銷”工作區,您將看到與市場營銷業務功能相關的所有實體。
銷售模組
CRM的銷售模組旨在推動新客戶的整個銷售生命週期。銷售模組包含以下子模組:
潛在客戶 (Leads) − 代表將來可能成為公司潛在客戶的個人或組織。這是將潛在客戶納入系統的第一步。
商機 (Opportunities) − 代表客戶的潛在銷售。一旦潛在客戶對產品表示興趣,它就會轉換為商機。商機將最終被贏得或失去。
賬戶 (Accounts) − 代表組織與其有關係的公司。一旦商機贏得,它將轉換為賬戶或聯絡人。
聯絡人 (Contacts) − 代表個人或組織與其有關係的任何個人。大多數這些聯絡人都是組織的客戶(例如,銀行的所有信用卡客戶)。一旦商機贏得,它將轉換為賬戶或聯絡人。
競爭對手 (Competitors) − 管理組織的所有市場競爭對手。
產品 (Products) − 管理組織向其客戶提供的所有產品(例如,所有信用卡計劃)。
報價 (Quotes) − 向潛在客戶傳送的以特定價格提出的產品或服務的正式報價(例如,傳送給客戶的特定信用卡計劃的年度價格)。
訂單 (Orders) − 客戶接受的報價將變成訂單(例如,在組織提供給您的所有計劃中,您可能會選擇6個月的訂閱)。
發票 (Invoices) − 已開票的訂單會生成發票。
市場營銷模組
CRM的市場營銷模組旨在推動組織為其現有和潛在客戶開展的整個市場營銷流程。市場營銷模組包含以下子模組:
市場營銷列表 (Marketing Lists) − 提供一種方法來對您的聯絡人、賬戶和潛在客戶進行分組,並透過傳送促銷電子郵件、活動詳細資訊、新聞通訊以及其他與目標客戶相關的更新與他們互動。您可以定義建立市場營銷列表的條件(例如,年齡在25歲到35歲之間的聯絡人)。
活動 (Campaigns) − 活動旨在衡量有效性並取得特定成果,例如推出新產品或提高市場份額,並且可能包括各種溝通渠道,例如電子郵件、報紙廣告、YouTube廣告等。
快速活動 (Quick Campaigns) − 快速活動類似於活動,但它只能與一種型別的活動相關聯。
所有上述市場營銷模組都與銷售模組緊密協作。
服務管理模組
CRM的服務管理模組旨在關注、管理和跟蹤組織的客戶服務運營,例如支援基於事件的服務、使用服務排程支援客戶等。
服務管理模組涵蓋以下子模組:
工單 (Cases/Incidents) − 支援透過工單/案例跟蹤任何客戶請求、問題或投訴。工單遵循問題解決流程的各個階段,然後最終得到解決並關閉。
知識庫 (Knowledge Base) − 維持所有客戶經常提出的常見問題和答案的主儲存庫。
合同 (Contracts) − 合同與工單一起使用,指示客戶擁有的所有有效合同。
資源/資源組 (Resources/Resource Groups) − 代表用於提供服務的人員、工具、房間或裝置。這些資源可用於解決特定客戶問題。
服務 (Services) − 代表組織向客戶提供的所有服務。
服務日曆 (Service Calendar) − 用於安排在組織中工作的使用者的上班時間和日程安排。
活動管理
上面解釋的所有模組都使用CRM的活動管理模組。活動代表與客戶的任何型別的互動,例如電話、電子郵件、信件等。這些活動可以與前面解釋的任何實體相關聯,例如賬戶、聯絡人、潛在客戶、工單等。預設情況下,CRM開箱即用地提供以下型別的活動:
- 電話
- 電子郵件
- 任務
- 預約
- 定期預約
- 信函
- 傳真
- 活動響應
- 活動
- 服務活動
- 自定義活動
結論
在本節中,我們學習了CRM的三個主要模組——銷售、市場營銷和服務管理。我們瞭解了CRM中工作區的組織方式以及整個CRM組織的生命週期是如何運作的。我們還研究了CRM的活動管理模組,該模組允許建立電話、電子郵件、傳真和其他型別的客戶互動活動。
實體和記錄
既然我們已經對所有CRM模組有了功能概述,讓我們學習並瞭解CRM中的實體和表單。
什麼是實體?
實體用於在CRM中建模和管理業務資料。聯絡人、工單、賬戶、潛在客戶、商機、活動等都是儲存資料記錄的實體。從概念上講,CRM實體相當於資料庫表。例如,“聯絡人”實體將儲存聯絡人記錄,“工單”實體將儲存工單記錄,依此類推。
您可以同時擁有:開箱即用的實體(預設情況下隨CRM一起提供)和自定義實體(您可以透過自定義建立)。例如,假設您正在維護客戶閱讀的書籍資料。為此,您將使用開箱即用的“聯絡人”實體儲存客戶資料,但是您將把書籍資料儲存在哪裡?您沒有任何可以儲存書籍資料的實體。在這種情況下,您將建立一個名為“書籍”的新自定義實體,並將其與現有的“聯絡人”實體關聯。
對於本教程,讓我們以在CRM中儲存僱主和僱員為例。考慮到這個例子,開箱即用的CRM提供了“聯絡人”實體,您可以在其中理想地儲存所有僱員。它還提供了一個“賬戶”實體,您可以在其中儲存所有僱主。但為了學習實體,我們將建立一個名為“僱主”(而不是使用現有的“賬戶”實體)的新自定義實體。
建立新實體
步驟1 − 單擊頂部功能區按鈕,然後單擊“設定”選項。從“自定義”部分單擊“自定義”選項(參見下圖)。
步驟2 − 現在單擊“自定義系統”選項。
這將開啟“預設解決方案”視窗。您將在後面的章節中瞭解有關CRM解決方案的更多資訊,但現在您將使用預設的CRM解決方案。
步驟3 − 從左側面板展開“實體”選項。
步驟4 − 現在單擊“新建”→“實體”。
步驟5 − 在“實體”表單中,將“顯示名稱”輸入為“僱主”,將“複數名稱”輸入為“僱主”。在“顯示此實體的區域”部分,選中“銷售”、“服務”和“市場營銷”。選中這些選項將在CRM的“銷售”、“服務”和“市場營銷”選項卡中顯示新建立的實體。
步驟6 − 單擊“儲存並關閉”圖示。這將在後臺建立CRM資料庫中的新實體。
步驟7 − 在“預設解決方案”父視窗中,您將看到新建立的“僱主”實體。
步驟8 − 單擊頂部功能區中的“釋出所有自定義”選項。這將釋出(也稱為提交)我們到目前為止所做的所有更改。您可以透過單擊“儲存並關閉”來關閉此視窗。
建立記錄
CRM就是關於在您的系統中管理寶貴資料。在本節中,我們將學習如何在CRM中建立、開啟、讀取和刪除記錄。我們將繼續使用上一節中建立的僱主實體。
步驟1 − 透過“顯示工作區”→“銷售”→“擴充套件”→“僱主”導航到“僱主”實體記錄網格。
步驟2 − 單擊“新建”圖示。
這將開啟預設的新僱主表單。您可以看到此預設表單中只有一個可編輯欄位“名稱”。在“名稱”欄位中輸入“僱主1”。單擊“儲存並關閉”。
步驟3 − 在“活動僱主”檢視中,您可以看到新建立的僱主記錄。
訪問記錄
要訪問CRM中已建立的記錄,請轉到該實體頁面。在本例中,導航到“顯示工作區”→“銷售”→“擴充套件”→“僱主”。您將在網格中看到那裡存在的記錄列表。單擊任何僱主記錄以訪問它。
更新記錄
開啟記錄後,您可以直接編輯表單中的任何詳細資訊。預設情況下,CRM 2015 具有自動儲存選項,會在更改後 30 秒自動儲存對錶單所做的任何更改。或者,您可以點選 Ctrl+S。
如果您想停用自動儲存功能,請轉到設定 → 管理 → 系統設定 → 啟用所有表單的自動儲存,然後選擇“否”。
刪除記錄
步驟 1 - 選擇要刪除的一條或多條記錄,然後單擊刪除按鈕。
步驟 2 - 單擊刪除確認刪除記錄。
結論
如上例所示,預設的僱主表單只有一個欄位。但是,在實際場景中,表單上會有許多自定義欄位。例如,如果您檢視一個示例聯絡人記錄(這是一個現成的 CRM 實體),它將包含許多欄位來儲存聯絡資訊,例如全名、電子郵件、電話、地址、案例等。
在接下來的章節中,您將學習如何編輯此預設表單並在其上新增不同型別的欄位。
Microsoft Dynamics CRM - 欄位
在學習如何向 CRM 表單新增自定義欄位之前,讓我們先了解一下 CRM 支援哪種型別的欄位。
欄位型別
CRM 原生提供 11 種可放置在表單上的資料欄位型別 -
- 單行文字
- 選項集(下拉列表)
- 兩個選項(單選按鈕)
- 影像
- 整數
- 浮點數
- 小數
- 貨幣
- 多行文字
- 日期和時間
- 查詢
下表列出了每種型別的簡要說明。
| 序號 | 欄位型別和說明 |
|---|---|
| 1 | 單行文字 此欄位儲存最多 4000 個字元的文字。您還可以將格式指定為以下之一:電子郵件、文字、文字區域、URL、股票程式碼和電話。您可以為每個設定最大長度和輸入法模式。 |
| 2 | 選項集(下拉列表) 此欄位儲存一組選項,每個選項都有一個數值和標籤。換句話說,它是 CRM 中的下拉欄位。您還可以定義可在多個表單中使用的全域性選項集。 |
| 3 | 兩個選項(單選按鈕) 此欄位為使用者提供兩個選項供選擇(0 或 1)。換句話說,它是一個單選按鈕欄位。 |
| 4 | 影像 當實體具有影像欄位時,可以將其配置為在應用程式中顯示記錄的影像。 |
| 5 | 整數 此欄位儲存 -2,147,483,648 到 2,147,483,647 之間的整數值。它支援將格式指定為無、持續時間、時區和語言。您也可以設定最小值和最大值。 |
| 6 | 浮點數 此欄位儲存最多 5 位小數的浮點數,精度範圍在 0.00 到 1,000,000,000.00 之間。您也可以設定最小值和最大值。 |
| 7 | 小數 此欄位儲存最多 10 位小數,數值範圍在 -100,000,000,000.00 到 100,000,000,000.00 之間。 |
| 8 | 貨幣 此欄位用於儲存 922,337,203,685,477.0000 到 922,337,203,685,477.0000 範圍內的任何貨幣值。您還可以將精度指定為價格小數、貨幣精度或 0 到 4 之間的任何值。 |
| 9 | 多行文字 這是一個滾動文字框。您可以為此欄位設定最大字元數。 |
| 10 | 日期和時間 此欄位用於在 CRM 中儲存與日期相關的資料,並支援兩種格式:僅日期和日期和時間。您還可以將行為指定為使用者本地、僅日期和時區無關。 |
| 11 | 查詢 您可以使用已建立但尚未與另一個查詢欄位一起使用的實體關係來建立查詢欄位。如果您在實體表單中建立查詢欄位,則會自動生成關係。查詢欄位建立為關係欄位。 |
Microsoft Dynamics CRM - 表單
在過去的兩個章節中,您學習了建立新實體、建立新記錄以及 CRM 中可用欄位的型別。在本節中,您將學習如何在 CRM 表單上新增新欄位。
在上一章節學習的 11 種資料欄位型別中,您將在僱主表單上使用三種類型的欄位:選項集(下拉列表)、多行文字和日期時間。選項集欄位將用於儲存僱主型別,多行文字將用於儲存僱主的簡要描述,日期時間欄位將用於儲存公司成立日期。注意:您的表單上已經有一個名稱欄位,它是單行文字型別。
在表單上新增欄位
步驟 1 - 單擊頂部功能區按鈕,然後單擊設定選項。從自定義部分單擊自定義選項(參見下面的螢幕截圖)。
步驟 2 - 現在單擊自定義系統選項。
這將開啟 DefaultSolution 視窗。您將在後面的章節中學習更多關於 CRM 解決方案的內容,但現在您將使用預設的 CRM 解決方案。
步驟3 − 從左側面板展開“實體”選項。
步驟 4 - 從展開的實體中選擇僱主。這將在右側視窗開啟實體的詳細資訊。從左側面板展開僱主選項,您將能夠看到表單、檢視、圖表、欄位和其他幾個選項。
步驟 5 - 單擊欄位。它將開啟一個網格,顯示建立此實體時預設附帶的所有欄位。
步驟 6 - 單擊新建按鈕。在新開啟的視窗中,輸入以下詳細資訊 -
顯示名稱 - 僱主型別
名稱 - 此欄位將根據您選擇的顯示名稱自動填充。但是,如果您想更改它,可以這樣做。
資料型別 - 選項集。一旦您選擇資料型別為選項集,它就會顯示選項面板。單擊加號 (+) 圖示將建立一個新的選項集專案,預設標籤為專案,預設值為 100,000,000。您可以更改此專案的標籤以新增四個代表僱主型別的選項:私營、政府、跨國和公共。
步驟 7 - 單擊頂部功能區的儲存並關閉。您已成功建立僱主型別欄位。
步驟 8 - 與您剛剛為新增僱主型別欄位所做的類似,新增其他三個欄位,如下面的螢幕截圖中所述和所示 -
員工人數 - 這將是一個整數字段。
成立日期 - 這將是一個日期時間欄位。
僱主描述 - 這將是一個多行文字欄位。
步驟 9 - 現在將這些新欄位新增到僱主表單中。為此,請單擊僱主實體下左側導航中的表單。這將顯示兩個名為資訊的表單。預設情況下,CRM 會建立兩個表單 – 主表單和移動簡易表單。單擊主表單。
步驟 10 - 您可以在右側的欄位資源管理器面板中看到新新增的欄位。
步驟 11 - 將這些欄位拖放到常規選項卡中。
步驟 12 - 單擊儲存,然後單擊發布。
步驟 13 - 您現在可以使用更新後的欄位建立僱主記錄。導航到 CRM 主頁 → 銷售 → 僱主 → 新建。這次開啟的新表單將包含您在本節中新增的所有新欄位。您可以填寫一些詳細資訊,然後單擊儲存並關閉。
結論
在本節中,我們學習了使用 CRM 表單以及如何透過在其上放置各種型別的欄位來自定義它們。我們還學習瞭如何在任何表單上新增任意數量的欄位,並根據業務需求使用各種選項卡和部分對其進行排列。
Microsoft Dynamics CRM - 搜尋
Microsoft Dynamics CRM 是一款龐大的產品,多年來發展顯著。該產品具有許多內置於系統中的現成功能。您無需編寫任何程式碼即可使用這些功能。其中一個重要的現成功能是 CRM 的搜尋功能,因為它支援高階查詢和過濾功能。
快速搜尋
預設情況下,CRM 中每個實體的網格檢視都支援使用右上角的搜尋欄進行快速搜尋。以下是聯絡人實體快速搜尋的螢幕截圖。
您可以嘗試輸入類似“Robert”的搜尋字串,它將返回所有匹配的記錄。
您可以為搜尋關鍵詞新增字首 *(星號)以執行萬用字元搜尋。
注意 - 使用 Microsoft Dynamics CRM 的 Web 客戶端版本時,快速搜尋始終搜尋所有活動記錄,而不管選擇的檢視如何。
您可以自定義快速搜尋(例如自定義任何其他檢視)以修改篩選條件、配置排序、新增檢視列、新增查詢列和更改其他屬性。
高階搜尋
高階搜尋允許您搜尋 CRM 中任何實體的記錄。它是 CRM 原生提供的最強大和最有用的功能之一。高階搜尋圖標出現在 Microsoft Dynamics CRM 的頂部功能區欄上,無論您處於哪個螢幕。
單擊高階查詢圖示以開啟高階查詢視窗。此視窗允許您選擇要搜尋其記錄的實體,應用篩選和分組條件,並將高階查詢檢視儲存為個人檢視。
讓我們舉個例子。假設您想搜尋所有 FirstName 包含 Robert 且已離婚的聯絡人。為此 -
步驟 1 - 從查詢下拉列表中選擇聯絡人。此下拉列表將包含系統中存在的所有實體。
步驟 2 - 輸入如下面的螢幕截圖所示的搜尋條件。您可以新增任意數量的搜尋查詢引數。您甚至可以使用組引數對這些條件進行分組。例如,如果您想搜尋所有名字為 Robert 或 Mark 的聯絡人,您可以新增兩個搜尋條件並使用 GroupOR 對其進行分組。
步驟 3 - 單擊結果按鈕。它將在新選項卡中顯示匹配的記錄。
步驟 4 − 您還可以點選“編輯列”來編輯您希望在搜尋結果中看到的列。例如,我們當前的網格僅包含兩列——全名和辦公電話。但是,如果您希望在此網格中新增一列電子郵件 ID,可以使用此選項。
儲存自定義檢視
在此階段,如果您想儲存此搜尋條件以及篩選器和已編輯的列,可以點選“儲存”按鈕。儲存後,您可以在該實體頁面上使用此儲存的檢視。
例如,假設您作為客戶主管服務兩種型別的客戶:普通客戶和高階客戶。因此,您可以使用這些相應的類別建立一個高階篩選器,並將它們儲存為“分配給我的普通聯絡人”和“分配給我的高階聯絡人”。然後,您可以直接從聯絡人實體頁面快速訪問這些檢視,而無需每次使用系統時都進行快速搜尋或高階查詢搜尋。
Microsoft Dynamics CRM - 網頁資源
CRM 中的網頁資源是儲存在 CRM 資料庫中的虛擬網頁檔案,用於在 CRM 中實現網頁功能。這些檔案可以是 HTML、JScript、Silverlight 或任何其他受支援的型別。
CRM 作為一個產品,具有一套廣泛的功能。但是,大多數情況下,您需要擴充套件這些現有功能以滿足您的自定義需求。擴充套件這些功能通常有兩種方式:
客戶端擴充套件 − 使用網頁資源和表單指令碼。
伺服器端擴充套件 − 外掛、工作流和 Web 服務(我們將在接下來的章節中學習這部分內容)。
網頁資源的用途
如上所述,在客戶端擴充套件 CRM 的地方,網頁資源就派上用場了。為了清楚地理解這一點,請考慮以下用例:
您有一個包含某些欄位的 CRM 表單。CRM 提供了開箱即用的基本驗證功能,例如必填欄位、欄位長度等。但是,如果您想要更復雜的驗證,例如驗證輸入的電話號碼格式是否正確,或者驗證輸入的地址是否實際存在,或者輸入的社會安全號碼是否正確,該怎麼辦?
CRM 提供了開箱即用的 UI 自定義功能,例如在表單上建立節和選項卡、重新排列欄位等。但是,如果客戶想要構建一個自定義頁面,該頁面顯示來自其其他 ERP 系統的所有客戶資訊,該怎麼辦?
CRM 帶有一個標準功能區欄,其中包含所有按鈕和選項。如果您想新增自己的功能區按鈕,該怎麼辦?
假設您已經有一個 ERP 系統。如果您想從此 ERP 系統開啟一些 CRM 螢幕,該怎麼辦?
您始終可以在伺服器端外掛程式碼中呼叫任何外部 Web 服務。但是,如果您想在客戶端呼叫任何外部 Web 服務,該怎麼辦?
所有這些“怎麼辦”問題的答案都是網頁資源。每個網頁資源都可以透過其唯一的 URL 訪問。您可以上傳網頁資原始檔,或者對於基於程式碼的資源(例如 HTML、Jscript 等),您甚至可以直接在 CRM 中編輯它們。由於網頁資源儲存在 CRM 中,因此它們可以輕鬆地與任何 CRM 自定義項一起從一個環境遷移到另一個環境。
網頁資源的型別
| 網頁資源型別 | CRM 中的示例應用程式 |
|---|---|
| 網頁 (HTML) | 您可能希望建立任何自定義 HTML 頁面,例如地圖、自定義應用程式頁面等,並將其放置在您的 CRM 表單中。 |
| 樣式表 (CSS) | 任何將與 HTML 檔案一起使用的 CSS 檔案。 |
| 指令碼 (JScript) | 任何客戶端邏輯,例如驗證、操作欄位值等。 |
| 資料 (XML) | 可用於儲存任何靜態設定或配置資料。 |
| 影像 (PNG、JPG、GIF、ICO) | 應用程式中使用的任何影像,例如功能區按鈕、圖示、表單等。 |
| Silverlight (XAP) | 嵌入到 CRM 中的任何自定義 Silverlight 應用程式。 |
| 樣式表 (XSL) | 用於轉換 XML 資料。 |
在所有這些型別的網頁資源中,我們將在後續章節中學習最重要的兩種型別的網頁資源——HTML 網頁資源和 JScript 網頁資源。
訪問任何實體的網頁資源
可以訪問 CRM 中資料庫中儲存的所有網頁資源。以下是涉及的步驟:
步驟 1 − 轉到設定 → 自定義 → 自定義系統。
步驟 2 − 從左側導航中選擇網頁資源。目前,您將看不到任何網頁資源,因為我們尚未建立任何資源。
我們將在接下來的章節中介紹如何建立網頁資源。
JScript 網頁資源
JScript 網頁資源可能是您將與 Microsoft Dynamics CRM 一起使用的最重要型別的網頁資源。
JavaScript 在 CRM 中的應用
表單事件程式設計
表單事件程式設計用於處理客戶端行為,例如使用者開啟表單、更改某些資料、在選項卡之間移動等時會發生什麼。為了實現這種客戶端互動,您將編寫 JavaScript 程式碼並將其作為 JScript 網頁資源新增到 CRM 中。但是,您將編寫的 JavaScript 程式碼必須使用 Dynamic CRM 的 Xrm.Page 模型,而不是標準的 JavaScript DOM。使用 Xrm.Page 模型是 Microsoft 的編碼方式,它確保使用此模型編寫的任何程式碼都將與 CRM 的任何未來版本相容。
網頁資源
除了用於表單事件程式設計之外,JavaScript 還用於 CRM 的其他應用程式,例如:
使用唯一的 URL 開啟表單、檢視和對話方塊。
使用 OData 和 SOAP 端點與 Web 服務互動。
在其他網頁資源(例如 HTML 網頁資源)中引用 JavaScript 程式碼。
在這種情況下,您將編寫 JavaScript 程式碼(使用 Xrm.Page 模型)並將其作為 JScript 網頁資源新增到 CRM 中,然後可以透過唯一的 URI 在任何地方引用它。
功能區自定義
最後,JavaScript 的另一個常見用途是處理功能區自定義,例如:
- 基於某些邏輯顯示/隱藏功能區按鈕
- 基於某些邏輯啟用/停用功能區按鈕
- 處理單擊某個功能區按鈕時會發生什麼
為了處理這種情況,您將編寫 JavaScript 邏輯(使用 Xrm.Page 模型),然後將其作為 JScript 網頁資源新增。然後,可以在功能區按鈕的 XML 中引用此網頁資源,並且我們可以指定要呼叫的 JScript 檔案中的哪個方法來檢查是否應顯示/隱藏或啟用/停用功能區按鈕或處理單擊事件。
Xrm.Page 物件模型
以下是 Xrm.Page 物件的層次結構,顯示了可用的名稱空間、物件及其集合。在編寫 JScript 程式碼時,您將使用這些屬性。
名稱空間
| 序號 | 物件和說明 |
|---|---|
| 1 | Context 提供方法來檢索特定於上下文的相關資訊,例如組織詳細資訊、登入使用者詳細資訊或作為查詢字串傳遞給表單的引數。 |
| 2 | Data 提供訪問實體資料以及管理表單中和業務流程流控制中的資料的方法。 |
| 3 | UI 包含用於檢索有關使用者介面的資訊的方法,以及表單的幾個子元件的集合。 |
物件
| 序號 | 物件和說明 |
|---|---|
| 1 | Entity 提供方法來:
|
| 2 | Process 用於檢索業務流程屬性的方法。 |
| 3 | Navigation 使用 items 集合訪問導航項。 |
| 4 | FormSelector 使用 Items 集合訪問使用者可用的表單。還使用導航方法來關閉和開啟表單。 |
| 5 | Stages 每個流程都有一個可以使用 process 的 getStages 方法訪問的階段集合。 |
| 6 | Steps 每個階段包含可以使用 stage 的 getSteps 方法訪問的各種步驟。 |
集合
| 序號 | 集合和說明 |
|---|---|
| 1 | Attributes 提供對錶單上可用的實體屬性的訪問。 |
| 2 | Controls ui.controls − 提供對錶單上存在的每個控制元件的訪問。 attribute.controls − 提供對屬性內所有控制元件的訪問。 section.controls − 提供對節內所有控制元件的訪問。 |
| 3 | Items 提供對錶單上所有導航項的訪問。 |
| 4 | Tabs 提供對錶單上所有選項卡的訪問。 |
| 5 | Sections 提供對錶單上所有節的訪問。 |
表單程式設計中支援的事件
使用 Xrm.Page 模型的表單程式設計允許您處理以下表單事件:
- onLoad
- onSave
- onChange
- TabStateChange
- OnReadyStateComplete
- PreSearch
- 業務流程流控制事件
表單程式設計示例
在此示例中,我們將根據使用者選擇的 PreferredMethodofCommunication 在聯絡人表單上進行一些驗證。因此,如果使用者選擇其首選方法為電子郵件,則電子郵件欄位應成為必填欄位,類似地,電話和傳真欄位也是如此。
步驟 1 − 建立一個名為contacts.js的 JavaScript 檔案並複製以下程式碼。
function validatePreferredMethodOfCommunication() {
//get the value of Preffered Method of Communication code
var prefferedContactMethodCode =
Xrm.Page.getAttribute('preferredcontactmetho dcode').getValue();
//if Preferred Method = Any, make all fields as non-mandatory
//else if Preferred Method = Phone, make Mobile Phone field mandatory
//and all other fields as non-mandatory
//else if Preferred Method = Fax, make Fax field mandatory
//and all other fields as non-mandatory
if(prefferedContactMethodCode == 1) {
clearAllMandatoryFields();
}
if(prefferedContactMethodCode == 2) {
clearAllMandatoryFields();
Xrm.Page.getAttribute('emailaddress1').setRequiredLevel('required');
} else if(prefferedContactMethodCode == 3) {
clearAllMandatoryFields();
Xrm.Page.getAttribute('mobilephone').setRequiredLevel('required');
} else if(prefferedContactMethodCode == 4) {
clearAllMandatoryFields();
Xrm.Page.getAttribute('fax').setRequiredLevel('required');
}
}
function clearAllMandatoryFields() {
//clear all mandatory fields
Xrm.Page.getAttribute('emailaddress1').setRequiredLevel('none');
Xrm.Page.getAttribute('mobilephone').setRequiredLevel('none');
Xrm.Page.getAttribute('fax').setRequiredLevel('none');
}
步驟 2 − 透過導航到設定 → 自定義 → 自定義系統 → 聯絡人實體 → 表單 → 主表單來開啟聯絡人實體表單。
步驟 3 − 點選表單屬性。
步驟 4 − 在表單屬性視窗中,點選新增。
步驟 5 − 在下一個查詢網頁資源記錄視窗中,點選新建,因為我們正在建立一個新的網頁資源。
步驟 6 − 在新建網頁資源視窗中,輸入以下詳細資訊:
名稱 − new_contacts.js
顯示名稱 − contacts.js
型別 − JScript
上傳檔案 − 從本地計算機上傳您建立的 JavaScript 檔案。
步驟 7 − 點選儲存,然後點擊發布。之後關閉視窗,您將返回到查詢網頁資源記錄視窗。
步驟 8 − 在這裡,您現在可以看到 new_contacts.js 網頁資源。選擇它並點選新增。您現在已成功新增一個新的網頁資源並在表單上註冊它。
步驟 9 − 現在,我們將在首選通訊方式欄位更改時新增一個事件處理程式。此事件處理程式將呼叫我們剛剛編寫的 JavaScript 函式。從事件處理程式部分選擇以下選項。
控制元件 − 首選通訊方式
事件 − OnChange
然後,點選新增按鈕,如下圖所示。
步驟 10 − 在下一個處理程式屬性視窗中,我們將指定更改事件發生時要呼叫的方法。
選擇庫為 new_contacts.js,函式為 validatePreferredMethodOfCommunication。點選確定。
步驟 11 − 您現在將能夠看到表單庫(網頁資源)和在其上註冊的事件。點選確定。
步驟 12 − 點選儲存,然後點擊發布。
步驟 13 − 現在開啟任何聯絡表單,並將首選溝通方式設定為電話。這將使手機號碼欄位變為必填項。如果您現在嘗試在不輸入任何手機號碼的情況下儲存此聯絡人,則會收到一條錯誤訊息,提示“您必須為手機號碼提供值”。
結論
本章首先介紹了 JavaScript 在 CRM 中的三個重要應用。之後,我們探討了 Xrm.Page 模型,並用它學習了表單程式設計以及一個示例。
HTML 網頁資源
本章我們將學習 Microsoft Dynamics CRM 中的各種 Web 資源。
HTML Web 資源的應用
CRM 中的 HTML Web 資源可以包含任何可在瀏覽器上呈現的 HTML 內容。考慮以下您可能想要使用 HTML Web 資源的場景:
您有一個靜態 HTML 頁面,希望在 CRM 螢幕內顯示。
您有一個自定義 HTML 頁面,它需要一些輸入引數,並根據這些輸入引數進行呈現。例如,假設您正在從外部 API 或 Web 服務獲取資訊,並且希望在 CRM 中顯示這些資訊。
您希望以與標準 CRM UI 不同的外觀和風格顯示一些資訊。
您有一個自定義 ASPX 頁面(在 CRM 應用程式外部),它根據輸入引數進行呈現。由於 CRM 不允許您擁有 ASPX Web 資源,您可以建立一個 HTML Web 資源,並從此 HTML 頁面呼叫外部 ASPX 頁面。
HTML Web 資源示例
我們將建立一個非常簡單的 HTML Web 資源,它將顯示自定義文字“歡迎訪問 TutorialsPoint”。請注意,這是一個非常簡單的 HTML Web 資源示例。實際上,HTML Web 資源會比這更復雜。
步驟 1 − 建立一個名為 sampleHTMLWebResource.html 的 HTML 檔案,並複製以下程式碼。
<!DOCTYPE html>
<htmllang = "en"xmlns = "http://www.w3.org/1999/xhtml">
<head>
<metacharset = "utf-8"/>
<title>Welcome to Tutorials Point</title>
</head>
<body>
<h1>Welcome to Tutorials Point. This is an example of HTML Web Resource.</h1>
</body>
</html>
步驟 2 − 首先,我們將建立一個新的 Web 資源,然後在聯絡人表單上引用它。開啟 DefaultSolution 並從左側面板導航到 WebResources 選項卡。點選新建。
步驟 3 − 它將開啟一個新的 Web 資源視窗。輸入以下螢幕截圖中所示的詳細資訊,並瀏覽我們在步驟 1 中建立的 HTML 檔案。單擊儲存併發布。關閉視窗。
步驟 4 − 您將看到新的 Web 資源新增到 Web 資源網格中。
步驟 5 − 現在透過“設定”→“自定義”→“自定義系統”→“聯絡人”→“主窗體”開啟聯絡人表單。選擇“聯絡人資訊”部分,然後從頂部功能區切換到“插入”選項卡。單擊 Web 資源。
步驟 6 − 它將開啟一個“新增 Web 資源”視窗。單擊此視窗中的“Web 資源查詢”,這將開啟“Web 資源查詢記錄”視窗。搜尋您剛剛建立的 Web 資源 (new_sampleHTMLWebResource),從網格中選擇它,然後單擊“新增”。
步驟 7 − 返回“新增 Web 資源”,輸入以下螢幕截圖中所示的名稱和標籤,然後單擊“確定”。關閉視窗。
您將在地址欄位下方看到已新增的 HTML Web 資源。
步驟 8 − 要測試它,請開啟任何聯絡人記錄,您將看到在那裡顯示的 HTML Web 資源內容。
HTML Web 資源的限制
不支援在 HTML Web 資源中使用伺服器端程式碼。
HTML Web 資源只能接受有限數量的引數。要在 data 引數中傳遞多個值,您必須對引數進行編碼,並在另一端包含解碼邏輯。
工作流流程
CRM 中的工作流允許您自動化 CRM 中的簡單和複雜業務流程。您可以使用 CRM 的開箱即用功能建立工作流,也可以使用 .NET 程式碼編寫自定義工作流來實現複雜的工作流。工作流流程在後臺或即時執行,可以選擇需要使用者輸入。
工作流可以根據特定條件觸發,也可以由使用者手動啟動。在內部,CRM 工作流是使用 Windows Workflow Foundation 實現的。在本章中,我們將學習配置工作流。
配置工作流包含以下主要部分(按順序):
- 配置工作流將在其上執行的實體
- 配置工作流是同步執行還是非同步執行
- 配置工作流將在其上執行的訊息(事件)
- 配置工作流將在其執行的範圍
- 配置工作流的階段和步驟(操作)
同步/非同步工作流
建立工作流時,您將看到“在後臺執行此工作流(推薦)”選項,該選項決定工作流是即時執行(同步)還是在後臺執行(非同步)。
通常,推薦的方法是在後臺執行工作流,因為它們會在可用時使用系統資源。但是,您可以隨時將即時工作流切換到後臺工作流,反之亦然。
工作流訊息
工作流可以註冊到以下特定事件:
- 建立記錄時
- 記錄狀態更改時
- 分配記錄時
- 記錄欄位值更改時
- 刪除記錄時
工作流範圍
工作流允許您設定工作流將在其執行的範圍。以下是支援的工作流範圍:
| 使用者 | 工作流僅在與工作流使用者相同的使用者擁有的記錄上執行。 |
| 業務單元 | 工作流將在與工作流使用者相同的業務單元的使用者擁有的記錄上執行。 |
| 父子業務單元 | 工作流將在與工作流使用者相同的業務單元的使用者擁有的記錄上執行,以及任何子業務單元。 |
| 組織 | 工作流將在 CRM 中任何使用者擁有的記錄上執行。 |
工作流步驟
CRM 中的工作流是一系列步驟的組合,工作流將遵循這些步驟。您甚至可以將這些步驟劃分為邏輯階段。CRM 工作流支援以下步驟:
| 條件步驟 |
|
||||||||||||||
| 等待步驟 |
|
||||||||||||||
| 操作步驟 |
|
工作流示例
在此示例中,我們將建立一個簡單的後臺執行工作流,將任何新建立的聯絡人記錄分配給特定使用者,然後向客戶傳送歡迎電子郵件。
步驟 1 − 轉到“設定”→“流程”。
步驟 2 − 點選“新建”。
步驟 3 − 在“建立流程”視窗中,輸入以下詳細資訊:
流程名稱 − 新客戶工作流(可以是您想要的任何名稱)
類別 − 工作流
實體 − 聯絡人(這將是您建立工作流的實體。在本例中為聯絡人)
在後臺執行此工作流(推薦) − 選中此選項,因為我們正在建立後臺非同步工作流。最後,單擊“確定”。
步驟 4 − 在“新建流程”視窗中輸入以下詳細資訊:
啟用為 − 流程
範圍 − 使用者
開始於 − 建立記錄時
單擊新增步驟 → 分配記錄。
步驟 5 − 您將看到一個新的步驟新增到工作流中。在此步驟中,我們將指定應將所有建立的聯絡人分配給的使用者。將步驟名稱輸入為將記錄分配給團隊。分配選項將預設為我們建立工作流的實體(在本例中為聯絡人)。單擊查詢圖示。
步驟 6 − 在查詢視窗中,選擇任何您想要的使用者。您甚至可以選擇一個特定的團隊來分配記錄。單擊“新增”。
步驟 7 − 透過單擊“新增步驟”→“傳送電子郵件”新增另一個步驟。在此步驟中,我們將配置向客戶傳送電子郵件。
步驟 8 − 將新增一個新步驟。將其名稱輸入為“向客戶傳送電子郵件”。單擊“設定屬性”。
步驟 9 − 在下一個配置電子郵件的視窗中,執行以下操作:
發件人 − 單擊“發件人”欄位。在右側面板上,選擇“擁有者使用者”和“使用者”。單擊“新增”→“確定”。
收件人 − 單擊“收件人”欄位。在右側面板上,選擇“聯絡人”和“聯絡人”。單擊“新增”→“確定”。
主題 − 輸入相關的主題。
正文 − 輸入相關的正文內容。
步驟 10 − 單擊“儲存”,然後單擊“啟用”。
步驟 11 − 在接下來的“流程啟用確認”彈出視窗中,單擊“啟用”。
步驟 12 − 轉到“聯絡人”選項卡並建立一個新的聯絡人。儲存記錄後,您將看到“所有者”欄位設定為您在工作流中配置的使用者。此外,如果您單擊“活動”選項卡,您將看到為此聯絡人建立的電子郵件活動。這確認工作流已成功執行。
工作流與外掛
工作流和外掛都可以用來擴充套件和自動化 CRM 功能。在許多情況下,這兩種方法可以互換使用。例如,如果您有向客戶傳送電子郵件的簡單要求,您可以透過外掛或工作流來實現。
那麼,如何在建立工作流和外掛之間進行選擇呢?以下列表嘗試解釋這一點:
雖然外掛和工作流都可以用於運行同步和非同步邏輯,但通常情況下,外掛更適合同步邏輯,而工作流更適合非同步邏輯。
通常,為了實現複雜的業務邏輯,外掛比工作流更受青睞。當您想要實現相對簡單的功能(例如傳送電子郵件、分配使用者等)時,更傾向於使用工作流。
外掛需要進行程式碼開發,而工作流可以直接由業務使用者配置,無需任何工作流知識。
工作流可以按需執行。因此,如果使用者需要手動執行某些邏輯,則工作流將是更好的選擇。
從效能影響來看,在請求頻率較高的場景中,同步外掛比即時工作流提供更好的效能(和吞吐量)。
結論
本章介紹了 CRM 的一個非常重要的功能——工作流。我們首先了解了同步/非同步工作流、訊息、範圍、步驟,最後查看了建立和執行工作流的實際示例。最後,我們看到了工作流和外掛之間的區別。
Microsoft Dynamics CRM - 外掛
外掛是一種自定義業務邏輯,它與 Microsoft Dynamics CRM 整合,以修改或擴充套件平臺的標準行為。外掛充當事件處理程式,並註冊在 CRM 中的特定事件上執行。外掛使用 C# 或 VB 編寫,可以在同步或非同步模式下執行。
一些您需要編寫外掛的場景:
當您建立或更新 CRM 記錄時,您希望執行某些業務邏輯,例如更新記錄的某些欄位或更新相關記錄等。
您希望在某些事件(例如儲存或更新記錄)上呼叫外部 Web 服務。
您希望在開啟任何記錄時動態計算欄位值。
您希望自動化流程,例如在 CRM 中的某些事件上向您的客戶傳送電子郵件。
事件框架
CRM 中的事件處理框架透過將其傳遞給事件執行管道來處理同步和非同步外掛請求。每當事件觸發外掛邏輯時,就會向 CRM 組織 Web 服務傳送一條訊息,其他外掛或平臺的任何核心操作都可以讀取或修改該訊息。
外掛管道階段
整個外掛管道分為多個階段,您可以在這些階段上註冊您的自定義業務邏輯。指定的管道階段指示外掛執行週期的哪個階段執行您的外掛程式碼。在以下表格中指定的所有管道階段中,您只能在預事件和後事件上註冊自定義外掛。您不能在平臺核心主要操作上註冊外掛。
| 事件 | 階段名稱 | 描述 |
|---|---|---|
| 預事件 | 預驗證 | 管道中用於在主要系統操作之前執行的外掛的階段。在此階段註冊的外掛可以在資料庫事務之外執行。 |
| 預事件 | 預操作 | 管道中用於在主要系統操作之前執行的外掛的階段。在此階段註冊的外掛在資料庫事務中執行。 |
| 平臺核心操作 | 主操作 | 在事務中,系統的主要操作,例如建立、更新、刪除等等。在此階段無法註冊自定義外掛。僅供內部使用。 |
| 後事件 | 後操作 | 管道中用於在主要操作後執行的外掛的階段。在此階段註冊的外掛在資料庫事務中執行。 |
每當 CRM 應用程式呼叫事件(例如儲存或更新記錄)時,會發生以下一系列操作:
該事件觸發 Web 服務呼叫,並且執行透過事件管道階段(預事件、平臺核心操作、後事件)傳遞。
資訊在內部打包為 OrganizationRequest 訊息,最終傳送到內部 CRM Web 服務方法和平臺核心操作。
OrganizationRequest 訊息首先由預事件外掛接收,這些外掛可以在將資訊傳遞給平臺核心操作之前修改資訊。平臺核心操作之後,訊息被打包為 OrganizationResponse 並傳遞給後操作外掛。後操作外掛可以在將資訊傳遞給非同步外掛之前選擇性地修改此資訊。
外掛以上下文物件的形式接收此資訊,該物件在隨後進行進一步處理後傳遞給 Execute 方法。
所有外掛處理完成後,執行將傳遞迴觸發事件的應用程式。
外掛訊息
訊息是註冊外掛(或業務邏輯)的事件。例如,您可以在聯絡人實體的建立訊息上註冊外掛。每當建立新的聯絡人記錄時,這都會觸發業務邏輯。
對於自定義實體,以下基於實體是使用者擁有的還是組織擁有的受支援的訊息。
| 訊息名稱 | 所有權型別 |
|---|---|
| 分配 | 僅限使用者擁有的實體 |
| 建立 | 使用者擁有的和組織擁有的實體 |
| 刪除 | 使用者擁有的和組織擁有的實體 |
| 授予訪問許可權 | 僅限使用者擁有的實體 |
| 修改訪問許可權 | 僅限使用者擁有的實體 |
| 檢索 | 使用者擁有的和組織擁有的實體 |
| 檢索多個 | 使用者擁有的和組織擁有的實體 |
| 檢索主體訪問許可權 | 僅限使用者擁有的實體 |
| 檢索共享主體和訪問許可權 | 僅限使用者擁有的實體 |
| 撤銷訪問許可權 | 僅限使用者擁有的實體 |
| 設定狀態 | 使用者擁有的和組織擁有的實體 |
| 設定動態實體狀態 | 使用者擁有的和組織擁有的實體 |
| 更新 | 使用者擁有的和組織擁有的實體 |
對於預設的開箱即用實體,有超過 100 條受支援的訊息。其中一些訊息適用於所有實體,而另一些訊息則特定於某些實體。您可以在 SDK 中的 excel 檔案中找到受支援訊息的完整列表:SDK\Message-entity support for plug-ins.xlsx
編寫外掛
在本節中,我們將學習編寫外掛的基礎知識。我們將建立一個示例外掛,每當向系統新增新客戶(即每當在 CRM 中建立新的聯絡人記錄時),它都會建立一個任務活動來跟蹤客戶。
首先,您需要包含對Microsoft.Xrm.Sdk名稱空間的引用。CRM SDK 包含所有必需的 SDK 程式集。假設您已在第 2 章中下載並安裝了 SDK,請開啟 Visual Studio。建立一個型別為類庫的新專案。您可以將專案命名為 SamplePlugins 並單擊“確定”。
將Microsoft.Xrm.Sdk程式集的引用新增到您的專案。該程式集位於SDK/Bin中。
現在,建立一個名為PostCreateContact.cs的類,並從IPlugin類擴充套件。到目前為止,您的程式碼將如下所示。
您還需要新增對System.Runtime.Serialization的引用。新增所需的引用後,將以下程式碼複製到PostCreateContact類中。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Xrm.Sdk;
namespace SamplePlugins {
public class PostCreateContact:IPlugin {
/// A plug-in that creates a follow-up task activity when a new account is created.
/// Register this plug-in on the Create message, account entity,
/// and asynchronous mode.
public void Execute(IServiceProviderserviceProvider) {
// Obtain the execution context from the service provider.
IPluginExecutionContext context =(IPluginExecutionContext)
serviceProvider.GetService(typeof(IPluginExecutionContext));
// The InputParameters collection contains all the data
passed in the message request.
if(context.InputParameters.Contains("Target")&&
context.InputParameters["Target"]isEntity) {
// Obtain the target entity from the input parameters.
Entity entity = (Entity)context.InputParameters["Target"];
try {
// Create a task activity to follow up with the account customer in 7 days
Entity followup = new Entity("task");
followup["subject"] = "Send e-mail to the new customer.";
followup["description"] =
"Follow up with the customer. Check if there are any new issues
that need resolution.";
followup["scheduledstart"] = DateTime.Now;
followup["scheduledend"] = DateTime.Now.AddDays(2);
followup["category"] = context.PrimaryEntityName;
// Refer to the contact in the task activity.
if(context.OutputParameters.Contains("id")) {
Guid regardingobjectid = new Guid(context.OutputParameter
s["id"].ToString());
string regardingobjectidType = "contact";
followup["regardingobjectid"] =
new EntityReference(rega rdingobjectidType,regardingobjectid);
}
// Obtain the organization service reference.
IOrganizationServiceFactory serviceFactory =
(IOrganizationSer viceFactory)serviceProvider.GetService
(typeof(IOrganizationServiceFactory));
IOrganizationService service =
serviceFactory.CreateOrganizationService(context.UserId);
// Create the followup activity
service.Create(followup);
} catch(Exception ex) {
throw new InvalidPluginExecutionException(ex.Message);
}
}
}
}
}
以下是這段程式碼的逐步解釋:
步驟 1 - 透過將IServiceProvider物件作為引數來實現Execute方法。服務提供程式包含您將在外掛中使用的許多有用物件的引用。
步驟 2 - 使用IServiceProvider的GetService方法獲取IPluginExecutionContext物件。
步驟 3 - 從上下文物件的InputParameters集合中獲取目標實體的物件。此Entity類物件指的是我們的外掛將註冊其上的聯絡人實體記錄。
步驟 4 - 然後,它建立一個任務實體物件,並設定適當的主題、描述、日期、類別和關聯物件 ID。regardingobjectid 指示為哪個聯絡人記錄建立此活動記錄。您可以看到程式碼使用context.OutputParameters獲取父聯絡人記錄的 ID,並將其與您建立的任務實體記錄關聯。
步驟 5 - 使用IServiceProvider物件建立IOrganizationServiceFactory物件。
步驟 6 - 使用IOrganizationServiceFactory物件建立IOrganizationService物件。
步驟 7 - 最後,使用此服務物件的Create方法。它建立儲存到 CRM 的後續活動。
簽名外掛程式集
本節僅適用於您首次註冊外掛程式集的情況。您需要使用金鑰登入程式集才能部署外掛。右鍵單擊解決方案並單擊“屬性”。
從左側選項中選擇“簽名”選項卡,然後選中“簽名程式集”選項。然後,從“選擇強名稱金鑰檔案”選項中選擇“新建”。
將金鑰檔名輸入為 sampleplugins(可以是您想要的任何其他名稱)。取消選中“使用密碼保護我的金鑰檔案”選項,然後單擊“確定”。單擊“儲存”。
最後,構建解決方案。右鍵單擊→構建。構建解決方案將生成程式集 DLL,我們將在下一章中使用它來註冊此外掛。
外掛中的異常處理
通常情況下,您的外掛邏輯需要處理執行時異常。對於同步外掛,您可以返回InvalidPluginExecutionException異常,這將向用戶顯示一個錯誤對話方塊。錯誤對話方塊將包含您傳遞給異常物件的Message物件的自定義錯誤訊息。
如果您檢視我們的程式碼,我們會在我們catch塊中丟擲InvalidPluginExecutionException異常。
throw new InvalidPluginExecutionException(ex.Message);
結論
外掛對於任何自定義 CRM 實現都至關重要。在本章中,我們重點介紹了事件框架模型、管道階段、訊息和編寫示例外掛。在下一章中,我們將在此 CRM 中註冊此外掛,並從端到端場景中看到它的工作情況。
外掛註冊
在上一章中,我們建立了一個示例外掛,用於在建立聯絡人記錄時建立後續任務活動。在本章中,我們將瞭解如何使用外掛註冊工具在 CRM 中註冊此外掛。您可以在此位置找到該工具:SDK/Tools/PluginRegistration/PluginRegistration.exe。
為方便起見,外掛註冊過程分為三個部分:
- 連線到伺服器
- 註冊程式集
- 註冊外掛
連線到伺服器
步驟 1 - 從前面指定的路徑執行PluginRegistration.exe。單擊“建立新連線”按鈕。
步驟 2 - 在登入視窗中,選擇 Office 365,因為我們使用的是 CRM 的線上版本。輸入您的憑據並單擊“登入”。
步驟 3 - 該工具將開啟,如下面的螢幕截圖所示。
註冊程式集
步驟 1 - 轉到註冊→註冊新程式集。
步驟 2 - 這將開啟“註冊新程式集”視窗。單擊“導航”圖示,找到您在上章中建立的外掛 DLL。
步驟 3 - 導航到 DLL 後,單擊“載入程式集”。這將填充 SamplePlugins 程式集及其所有外掛類。您可以看到下面突出顯示的PostCreateContact外掛類。如果您的外掛程式集有 3 個外掛類,則會顯示列出的三個外掛。
步驟 4 - 選擇隔離模式為沙箱,位置為資料庫,然後單擊“註冊選定外掛”。如果註冊成功,它將向您顯示一條成功訊息。
註冊外掛
現在,我們將註冊各個外掛將呼叫的特定步驟。
步驟 1 - 選擇 PostCreateContact 外掛。
步驟 2 - 單擊註冊→註冊新步驟。
步驟 3 - 我們將在聯絡人實體的建立、後操作階段和同步模式下注冊此外掛。
訊息 - 建立
主要實體 - 聯絡人
事件執行的管道階段 - 後操作
執行模式 - 同步
保留其餘選項的預設設定,然後單擊“註冊新步驟”。
您可以看到外掛中添加了一個新步驟。
現在,我們將轉到 CRM 並測試我們的外掛是否正常工作。請注意,這些測試步驟特定於我們的示例外掛。
外掛測試
進入“聯絡人”選項卡並建立一個新記錄。儲存記錄後,您可以看到一個新的活動被建立並與該記錄關聯。
您可以點選該活動檢視我們在程式碼中設定的詳細資訊。
這確認我們的外掛已成功執行。同樣,您可以擴充套件您的外掛以實現高度複雜的功能。
Microsoft Dynamics CRM - Web 服務
Microsoft Dynamics CRM 提供兩種重要的 Web 服務,用於從外部應用程式訪問 CRM 並呼叫 Web 方法以執行常見的業務資料操作,例如在 CRM 中建立、刪除、更新和查詢。
考慮以下場景:
您有一個外部 .NET 應用程式,需要與 CRM 通訊。例如,當您的外部應用程式中註冊新客戶時,您可能希望在 CRM 中插入一個聯絡人記錄。
或者,您可能希望在 CRM 中搜索記錄並在您的外部應用程式中顯示搜尋結果。
在這種情況下,您可以使用 CRM 公開的 Web 服務在您的應用程式中使用它們,並在 CRM 中執行建立、刪除、更新和查詢操作。
IDiscoveryService Web 服務
此 Web 服務返回指定使用者所屬的組織列表以及每個組織的 URL 端點。
IOrganizationService Web 服務
此 Web 服務是用於訪問 CRM 中的資料和元資料的主要 Web 服務。IOrganizationService 使用兩個重要的程式集 – **Microsoft.Xrm.Sdk.dll** 和 **Microsoft.Crm.Sdk.Proxy.dll**。這些程式集可以在 CRM SDK 包的 **Bin** 資料夾中找到。
Microsoft.Xrm.Sdk.dll
此程式集定義了核心 xRM 方法和型別,包括用於簡化與 Microsoft Dynamics CRM 連線的代理類、身份驗證方法和服務契約。
Microsoft.Crm.Sdk.Proxy.dll
此程式集定義了非核心訊息的請求和響應,以及與組織資料一起使用所需的列舉。以下是這兩個程式集支援的名稱空間。
每個程式集都支援某些訊息,這些訊息將用於處理儲存在任何實體中的資料。它們支援的訊息的完整列表可以在以下連結中找到:
**支援的 xRM 訊息** - https://msdn.microsoft.com/en-us/library/gg334698.aspx
**支援的 CRM 訊息** - https://msdn.microsoft.com/en-us/library/gg309482.aspx
IOrganizationService Web 服務方法
**IOrganizationService** 提供八種方法,允許您對系統和自定義實體以及組織元資料執行所有常見操作。
| 序號 | 方法和描述 |
|---|---|
| 1 | IOrganizationService.Create 建立記錄。 |
| 2 | IOrganizationService.Update 更新現有記錄。 |
| 3 | IOrganizationService.Retrieve 檢索記錄。 |
| 4 | IOrganizationService.RetrieveMultiple 檢索記錄集合。 |
| 5 | IOrganizationService.Delete 刪除記錄。 |
| 6 | IOrganizationService.Associate 建立記錄之間的連結。 |
| 7 | IOrganizationService.Disassociate 刪除記錄之間的連結。 |
| 8 | IOrganizationService.Execute 用於常見的記錄處理以及專門的處理,例如案例解決、重複檢測等。 |
Web 服務示例
為了瞭解 Web 服務在 CRM 中的工作方式,我們將檢視 CRM SDK 提供的一個示例。在這個示例中,我們將使用 CRM **IOrganizationService** Web 服務建立一個新的客戶帳戶記錄,更新它,然後最終刪除它。
**步驟 1** - 開啟您解壓縮 CRM SDK 的資料夾。現在透過瀏覽到以下位置開啟 QuickStartCS.sln 解決方案:SDK\SampleCode\CS\QuickStart
**步驟 2** - 我們將探索具有“簡化連線”專案的 **QuickStart**。開啟此專案中的 **app.config**。預設情況下,此檔案中的 **connectionStrings** 部分將被註釋。
從中取消註釋第一個連線字串鍵並編輯以下三個詳細資訊:
**Url** - 指定您的 CRM 例項的 URL。在我們的案例中,由於我們使用的是 CRM 的線上版本,您必須提及該 URL。
**Username** - 您的 CRM Online 使用者名稱。
**Password** - 您的 CRM Online 密碼。
**步驟 3** - 開啟此專案中的 **SimplifiedConnection.cs** 檔案及其中的 Run 方法。
public void Run(StringconnectionString, boolpromptforDelete) {
try {
// Establish a connection to the organization web service using CrmConnection.
Microsoft.Xrm.Client.CrmConnection connection =
CrmConnection.Parse(connectionString);
// Obtain an organization service proxy.
// The using statement assures that the service proxy will be properly disposed.
using(_orgService = new OrganizationService(connection)) {
//Create any entity records this sample requires.
CreateRequiredRecords();
// Obtain information about the logged on user from the web service.
Guid userid = ((WhoAmIResponse)_orgService.Execute(new WhoAmIRequest())).UserId;
SystemUser systemUser = (SystemUser)_orgService.Retrieve("systemuser",userid,
new ColumnSet(newstring[]{"firstname","lastname"}));
Console.WriteLine("Logged on user is {0} {1}.",
systemUser.FirstName,systemUser.LastName);
// Retrieve the version of Microsoft Dynamics CRM.
RetrieveVersionRequest versionRequest = new RetrieveVersionRequest();
RetrieveVersionResponse versionResponse =
(RetrieveVersionResponse)_orgService.Execute(versionRequest);
Console.WriteLine("Microsoft Dynamics CRM version {0}.",
versionResponse.Version);
// Instantiate an account object. Note the use of option set
enumerations defined in OptionSets.cs.
// Refer to the Entity Metadata topic in the SDK documentation to
determine which attributes must
// be set for each entity.
Account account = new Account{Name = "Fourth Coffee"};
account.AccountCategoryCode = new OptionSetValue(
(int)AccountAccountCateg oryCode.PreferredCustomer);
account.CustomerTypeCode = new OptionSetValue(
(int)AccountCustomerTypeCod e.Investor);
// Create an account record named Fourth Coffee.
_accountId = _orgService.Create(account);
Console.Write("{0} {1} created, ",account.LogicalName,account.Name);
// Retrieve the several attributes from the new account.
ColumnSet cols = new ColumnSet(
new String[]{"name","address1_postalcode","lastusedincampaign"});
Account retrievedAccount =
(Account)_orgService.Retrieve("account", _accountId, cols);
Console.Write("retrieved, ");
// Update the postal code attribute.
retrievedAccount.Address1_PostalCode = "98052";
// The address 2 postal code was set accidentally, so set it to null.
retrievedAccount.Address2_PostalCode = null;
// Shows use of a Money value.
retrievedAccount.Revenue = new Money(5000000);
// Shows use of a Boolean value.
retrievedAccount.CreditOnHold = false;
// Update the account record.
_orgService.Update(retrievedAccount);
Console.WriteLine("and updated.");
// Delete any entity records this sample created.
DeleteRequiredRecords(promptforDelete);
}
}
// Catch any service fault exceptions that Microsoft Dynamics CRM throws.
catch(FaultException<microsoft.xrm.sdk.organizationservicefault>) {
// You can handle an exception here or pass it back to the calling method.
throw;
}
}
**步驟 4** - 此方法基本上演示了使用 CRM Web 服務的所有 CRUD 操作。程式碼首先建立一個組織例項,然後建立一個客戶帳戶記錄,更新建立的記錄,然後最終刪除它。讓我們看看這段程式碼的重要組成部分。要在此程式碼執行時檢視 CRM 中的即時更改,您可以逐步除錯此程式碼(如下所述),並同時檢視 CRM 中的更改。
**步驟 4.1** - 使用我們在 **步驟 2** 中修改的連線字串建立與組織的連線。
Microsoft.Xrm.Client.CrmConnection connection = CrmConnection.Parse(connectionString);
**步驟 4.2** - 獲取 CRM 組織 Web 服務的代理例項。
_orgService = new OrganizationService(connection)
**步驟 4.3** - 建立一個新的客戶帳戶實體物件並設定其名稱、客戶帳戶類別程式碼和客戶型別程式碼。
Account account = new Account{Name = "Fifth Coffee"};
account.AccountCategoryCode = new OptionSetValue(
(int)AccountAccountCategoryCode.P referredCustomer);
account.CustomerTypeCode = new OptionSetValue(
(int)AccountCustomerTypeCode.Investor);
**步驟 4.4** - 使用組織服務的 Create 方法建立新記錄。
_accountId = _orgService.Create(account);
如果您導航到 CRM,您將看到一個新建立的客戶帳戶記錄。
**步驟 4.5** - 建立客戶帳戶後,服務將使用 Retrieve Web 服務方法從 CRM 檢索記錄。
ColumnSet cols = new ColumnSet(new String[]{
"name","address1_postalcode","lastusedincampaign"});
Account retrievedAccount =
(Account)_orgService.Retrieve("account", _accountId, cols);
**步驟 4.6** - 檢索到記錄後,您可以設定記錄的更新值。
retrievedAccount.Address1_PostalCode = "98052"; retrievedAccount.Address2_PostalCode = null; retrievedAccount.Revenue = new Money(5000000); retrievedAccount.CreditOnHold = false;
**步驟 4.7** - 設定記錄的更新值後,使用 Update Web 服務方法將記錄更新回 CRM 資料庫。
_orgService.Update(retrievedAccount);
如果您在 CRM 中開啟該記錄,您將看到這些值已在那裡更新。
**步驟 4.8** - 最後,使用 Delete Web 服務方法刪除記錄。
_orgService.Delete(Account.EntityLogicalName, _accountId);
如果您現在重新整理 CRM 中的同一記錄,您將看到該記錄不再可用,因為它已被刪除。
結論
在本章中,我們處理了 CRM 提供的兩個重要的 Web 服務,以及如何從外部應用程式使用這些 Web 服務執行各種 CRUD 操作的工作示例。
Microsoft Dynamics CRM - 解決方案
解決方案提供了一個框架,用於打包、安裝和解除安裝元件以匹配您的業務功能。解決方案允許自定義者和開發人員創作、打包和維護擴充套件 CRM 的軟體單元。在 CRM 中執行的任何自定義、擴充套件或配置都使用解決方案進行打包、管理和分發。解決方案可以從源組織匯出為 zip 檔案,然後可以匯入到目標組織。
為了理解這一點,請考慮以下示例場景:
作為開發人員或自定義者,您已在開發環境中擴充套件或自定義了 CRM。現在您想打包您的更改並將其移動到下一個環境。為此,您可以建立單個解決方案並在更高環境中釋出它們。
作為第三方 CRM 提供商,您建立了一個 CRM 模組,該模組允許使用外部 Web 服務 API 管理 Microsoft Dynamics CRM 實體中的資料。現在,您想將此模組出售給其他客戶。使用解決方案,您可以打包此模組並將其分發給其他客戶,他們將能夠安裝此解決方案並使用您的模組提供的功能。
解決方案型別
預設系統解決方案
系統解決方案包含在 Microsoft Dynamics CRM 中定義的開箱即用的解決方案元件,沒有任何自定義。系統解決方案中的許多元件都是可自定義的,並且可以在託管解決方案或非託管自定義中使用。
在本教程中,我們沒有建立任何解決方案,而是自定義了預設系統解決方案。如果您還記得,我們轉到“設定”→“自定義”→“自定義系統”。此選項直接自定義預設解決方案。
託管解決方案
託管解決方案是已完成並打算分發和安裝的解決方案。託管解決方案可以安裝在系統解決方案或其他託管解決方案之上。
**重要事項:**
如果您從一個組織匯出託管解決方案並將其匯入另一個組織,則您無法在新的組織中編輯該解決方案。
託管解決方案不會直接引用系統解決方案。
解除安裝託管解決方案會解除安裝與該解決方案關聯的所有自定義。
預設情況下,託管解決方案無法在目標組織中自定義。但是,使用託管屬性的概念,您可以定義解決方案元件是否可自定義,如果是,則一旦解決方案匯出為託管解決方案,元件的哪些特定部分可自定義。
非託管解決方案
非託管解決方案是仍在開發中且不打算分發的解決方案。非託管解決方案包含 CRM 元件的所有非託管自定義,包括任何已新增、修改、刪除或刪除的元件。預設情況下,任何新解決方案都是非託管解決方案。但是,您可以將非託管解決方案匯出為託管或非託管解決方案。
**重要事項:**
如果您從一個組織匯出非託管解決方案並將其匯入另一個組織,則您可以在新的組織中編輯該解決方案。
非託管解決方案直接引用系統解決方案。因此,對一個非託管解決方案所做的更改將應用於引用相同元件的所有非託管解決方案,包括系統解決方案。
如果您從非託管解決方案中刪除解決方案元件,則該元件將從系統中永久刪除,並且將不再可用。如果您只想從特定的非託管解決方案中刪除元件,請使用“刪除”而不是“刪除”。
解除安裝非託管解決方案不會刪除關聯的自定義。它只是從系統中刪除解決方案,但您所做的更改仍然存在。
解決方案元件
解決方案可用於打包以下元件,這些元件可以使用預設、非託管或託管解決方案進行自定義。
| 元件型別 | 元件 |
|---|---|
| 架構 | 實體 |
| Attributes | |
| 關係 | |
| 全域性選項集 | |
| 使用者介面 | 應用程式功能區 |
| 站點地圖 | |
| 窗體 | |
| 實體功能區 | |
| 網頁資源 | |
| 分析 | 儀表板 |
| 報表 | |
| 視覺化 | |
| 流程/程式碼 | 流程 |
| 對話方塊 | |
| 工作流 | |
| 外掛 | |
| 程式集 | |
| 處理步驟 | |
| 模板 | 郵件合併 |
| 電子郵件 | |
| 合同 | |
| 文章 | |
| 安全性 | 安全形色 |
| 欄位級安全配置檔案 |
建立解決方案
**步驟 1** - 導航到“設定”→“解決方案”。單擊“新建”。
**步驟 2** - 在隨後出現的視窗中,輸入以下詳細資訊並單擊“儲存並關閉”。
**顯示名稱** - 示例解決方案(可以是您想要的任何名稱)。
**名稱** - 將根據顯示名稱自動設定。但是,您可以更改此名稱。
**釋出者** - 預設釋出者。解決方案發布者提供一個通用的自定義字首和選項值字首。定義解決方案發布者可以控制分發後如何更新您的託管解決方案。但是,對於此示例和大多數一般情況,您可以將其設定為預設釋出者。
**版本** - 使用以下格式指定版本:主版本.次版本.內部版本.修訂號。例如:1.0.0.0。
預設情況下,每個解決方案都作為非託管解決方案新增。新增解決方案後,您可以透過在此解決方案的上下文中建立它們或從其他解決方案新增現有元件來新增解決方案元件。例如,您可以在此新解決方案的上下文中建立新的實體、窗體等。
匯出解決方案
一旦您擁有所有要打包為託管或非託管解決方案的更改,您可以按如下方式匯出您的解決方案。
**步驟 1** - 開啟源組織並導航到“設定”→“解決方案”。選擇要匯出的解決方案,然後單擊“匯出”按鈕。
步驟 2 − 在“釋出自定義”視窗中,單擊“釋出所有自定義”,然後單擊“下一步”。
步驟 3 − 在接下來的視窗中,您可以選擇性地選擇任何系統設定(例如自動編號、日曆設定等)與解決方案一起匯出。目前,您可以不選擇任何選項,然後單擊“下一步”。
步驟 4 − 在“程式包型別”視窗中,您可以選擇是要將程式包匯出為託管解決方案還是非託管解決方案。在本例中,我們將它匯出為非託管解決方案。完成後,單擊“下一步”。
步驟 5 − 在下一個視窗中,您可以看到您正在使用的 CRM 源版本,並可以選擇目標版本。單擊“匯出”。
步驟 6 − 單擊“匯出”後,解決方案將匯出為 zip 檔案。將此 zip 檔案儲存到系統上的所需位置。
匯入解決方案
現在,我們將把上一節中匯出的解決方案 zip 檔案匯入新的目標組織。
步驟 1 − 開啟目標組織並導航到“設定”→“解決方案”。單擊“匯入”。
步驟 2 − 瀏覽您從匯出步驟下載的 zip 檔案,然後單擊下一步。
步驟 3 − 在下一個視窗中,您可以根據需要檢視解決方案包詳細資訊。單擊“匯入”將啟動解決方案匯入過程。
步驟 4 − 匯入過程完成後,將顯示成功或失敗狀態。如果過程成功,請單擊“釋出所有自定義”。如果解決方案匯入失敗,它將提供匯入過程失敗步驟的詳細錯誤日誌。
步驟 5 − 完成。解決方案將成功匯入到目標組織。單擊“關閉”。
衝突解決
由於您可以有多個開發人員參與 CRM 的自定義和擴充套件工作,因此您將擁有多個託管和非託管解決方案。匯出和匯入這些解決方案有時會導致衝突情況。例如,假設“解決方案 A”包含表單上的欄位,而“解決方案 B”已刪除該欄位,“解決方案 C”已重新命名該欄位。在這種情況下,最終更改是什麼?在這種衝突情況下,CRM 使用兩種方法。
合併 − 此方法用於使用者介面元件,例如命令欄、功能區和站點地圖。根據此方法,解決方案元件從底部重新計算,組織的非託管自定義是最後應用的。
最後修改優先 − 此方法用於除使用者介面元件之外的所有其他衝突情況。根據此方法,最後一次更改(託管或非託管)將具有優先順序並被應用。
結論
在本章中,我們介紹瞭解決方案的概念以及不同型別的解決方案及其元件。然後,我們學習瞭如何建立、匯出和匯入解決方案。最後,我們研究了兩種衝突解決策略,當我們有多個託管和非託管解決方案影響相同的解決方案元件時,這些策略就會發生。