如何在通过n:n-relation分配记录时触发插件执行

时间:2016-11-25 12:49:44

标签: c# dynamics-crm crm microsoft-dynamics xrm

鉴于实体contacttopic,我创建了一个n strong n:n-relation ,它基本上表示每个联系人都可以成为"专家&#34 ;关于任何数量的主题,每个主题可以有任意数量的专家。

现在,我想快速确定联系人是否是专家(有主题),以便创建所有专家的过滤视图。

能够执行此操作的最简单方法是contact上的布尔(双选项)字段,表示它具有相关主题(true)或不具有false) ,然后我可以使用它来过滤视图等。

这是我失败的地方。我试图将该字段设置为Rollup和Calculated,但这两种方法似乎都无法解决问题。

剩下的就是创建一个插件。但这必须在自动创建的交叉实体上注册,这似乎是不可能的。我不想自己创建一个交叉实体,因为我仍然希望拥有丰富的子网格功能等等。

是否有可能实施这种行为?

1 个答案:

答案 0 :(得分:4)

您需要将插件注册为Associate message,primary和secondary entity为none。

在插件中,您需要检查context.MessageName(“关联”或“取消关联”)和context.InputParameters[“Relationship”] - 它将等于您的N:N关系的名称。

检查条件的代码就是那样

//all usual plugin stuff here

if (context.InputParameters.Contains("Relationship")) {
    relationshipName = context.InputParameters["Relationship"].ToString();
}                                   

// Check the “Relationship Name” with your intended one
if (relationshipName != "<Your relationship name>") {
    return;
} 

if (context.MessageName == "Associate") {
    //logic when role added
}
if (context.MessageName == "Disassociate") {
    //logic when role removed
}
else {
    //not interested
}

我没有编译代码,但它应该让你知道如何继续。