首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

MSCRM 4.0 自動共享擴展:自定義工作流活動實現記錄級權限自動分配

     編輯:關於.NET

MSCRM 原生共享功能需手動選擇記錄 → 更多操作 → 共享 → 添加用戶/團隊 → 設置權限,無法滿足「業務規則觸發自動共享」場景。本文提供完整的 自定義工作流活動 (Custom Workflow Activity) 解決方案,安裝後在工作流設計器中直接拖拽「Share To User/Team」步驟,配置目標與權限即可實現自動化共享。

解決方案架構

  • Custom Workflow Assembly:含 ShareToUser、ShareToTeam 兩個 CodeActivity。
  • 輸入參數:目標用戶/團隊 (EntityReference)、權限掩碼 (Read/Write/Delete/Append/AppendTo/Assign/Share)。
  • 執行邏輯:調用 GrantAccessRequest / ModifyAccessRequest 服務消息。
  • 部署:註冊程序集 → 註冊步驟 → 發布工作流模板。

核心代碼結構 (ShareToUser 示例)

[CrmPluginRegistration("ShareToUser", "Automatic Sharing", "Share To User")]
public class ShareToUser : CodeActivity
{
    [Input("Target User")]
    [ReferenceTarget("systemuser")]
    public InArgument<EntityReference> TargetUser { get; set; }

    [Input("Access Rights")]
    [AttributeTarget("")]
    public InArgument<AccessRights> AccessRights { get; set; } // 位掩碼枚舉

    protected override void Execute(CodeActivityContext context)
    {
        var service = context.GetOrganizationService();
        var targetEntity = context.GetTargetEntity(); // 工作流上下文主實體
        var userRef = TargetUser.Get(context);
        var rights = AccessRights.Get(context);

        // 構建 GrantAccessRequest
        var grantRequest = new GrantAccessRequest
        {
            Target = targetEntity.ToEntityReference(),
            PrincipalAccess = new PrincipalAccess
            {
                Principal = userRef,
                AccessMask = rights
            }
        };
        service.Execute(grantRequest);
    }
}

權限枚舉定義 (旗標屬性)

[Flags]
public enum AccessRights
{
    None = 0,
    Read = 1,
    Write = 2,
    Delete = 4,
    Append = 16,
    AppendTo = 32,
    Assign = 0x80,
    Share = 0x100
}

安裝與配置步驟

  1. 下載附件解壓,運行 Install.bat (調用 PluginRegistrationTool 註冊程序集)。
  2. 打開 MSCRM → 設置 → 流程 → 新建工作流 (實體如 Account)。
  3. 添加步驟 → 「Automatic Sharing」 → 「Share To User」或「Share To Team」。
  4. 設置屬性:選擇動態值 (如「創建者」、「負責人」) 或固定用戶/團隊,勾選權限。
  5. 啟用工作流。後續符合條件的記錄創建/更新時自動共享。

進階場景:條件共享

工作流條件分支中判斷業務字段 (如 AccountType = 'VIP') → 是 → 執行「Share To Team: VIP Support Team, Rights: Read/Write」。實現細粒度權限自動化。

卸載與升級

  • 運行 Uninstall.bat 移除程序集註冊。
  • 升級時先卸載舊版,再安裝新版,工作流步驟自動更新 (需重新發布)。

注意事項

  • 共享權限為 **增量授予**,重複執行不會移除已有權限。
  • 大批量記錄共享建議使用 BulkOperation 或自定義 SQL 作業,避免工作流超時。
  • MSCRM 2011+ 建議改用 存取團隊 功能,原生支援自動共享,無需自定義代碼。

附件包含完整源碼 (C#)、簽名強名稱密鑰、安裝/卸載腳本、註冊工具配置 XML。歡迎下載集成到您的 CRM 專案中。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved