2013-04-13 71 views
2

我需要能夠讓一個用戶臨時鏡像另一個需求。鏡像用戶應該獲得與目標用戶相同的業務部門,團隊和角色。現在它是手動完成的,但這是一個痛苦。我寫了一個自定義工作流活動來完成它,如果我以系統管理員身份運行它並選擇一個鏡像用戶和目標用戶,它就可以工作。如何以特權用戶身份運行CRM 2011自定義工作流程活動?

但最終目標是能夠讓某些用戶自己運行對話框。如果我嘗試以自己的身份運行它作爲鏡像用戶,我會收到一條錯誤消息,說我沒有權限分配角色,這很有意義,因爲工作流會取走我的角色,然後嘗試將目標用戶的角色分配給我。

我想讓工作流活動作爲特權用戶運行,但迄今爲止還沒有任何運氣。我試圖創建IOrganizationService這樣的:

var context = executionContext.GetExtension<IWorkflowContext>(); 
var serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>(); 
var service = serviceFactory.CreateOrganizationService(null); 

根據該文件調用CreateOrganizationServicenull作爲參數應強制系統用戶的用戶,但它似乎仍在運行作爲主叫用戶。

我也嘗試呼叫CreateOrganizationService,並將具有系統管理員角色的其他用戶的Guid傳遞給他人,但獲得了相同的結果。

回答

2

工作流程具有特殊的條件,並被設計爲忽略您傳遞給CreateOrganizationService的guid。

我從這個article下一個段落:

對於自動工作流的情況下,工作流的所有者也是 人誰激活它,誰選擇的觸發機制和 工作流程的步驟,以便如果工作流程在該用戶的 上下文中執行,則可以。對於按需案例,用戶具體請求由工作流代表他執行的一些動作,以便用戶 完全知道工作流定義並且它將執行; 因此,在該用戶的上下文中執行工作流程是安全的,而不是工作流程所有者(他們可能不知道用戶 請求按需執行)。

+0

記錄的東西(自定義字段)哇,我覺得沒有意識到這一點愚蠢,謝謝。 –

2
  1. 定製工作流活動可以轉換爲一個插件註冊到CRM服務的上下文或管理員自動運行
  2. 工作流可以是,而不是手動觸發
    • 如果最終用戶明確啓動工作流程,它將在其用戶環境中運行
    • 個對話框始終在啓動用戶的上下文中運行
    • 由事件觸發,而不是由用戶會在誰開始的用戶的上下文中運行明確地啓動的工作流程,並擁有,工作流 - 在這種情況下,管理員
    • 對話框或自定義功能區按鈕可以改變你的自定義工作流活動登記執行上變化
相關問題