网络资源一旦发布总是发布吗?

时间:2014-06-13 17:35:03

标签: dynamics-crm-2011 dynamics-crm dynamics-crm-2013

考虑以下插件...为简洁省略了基础设施构建。

protected override void Execute()
{
    //Not all Targets are of entity so let's check first
    if (Context.InputParameters.Contains("Target") && Context.InputParameters["Target"] is Entity)
    {
        if (Message == EMessage.Create)
        {
           throw new InvalidPluginExecutionException("InCreate");
        }
        else if (Message == EMessage.Update)
        {
            //I don't think this is right way to do this.
            if (PreEntityImage.GetAttributeValue<OptionSetValue>("componentstate").Value == new OptionSetValue(0).Value)
            {
               throw new InvalidPluginExecutionException("UpdatePublishedMessage");
            }
            else
            {
                throw new InvalidPluginExecutionException("UpdateMessageOnly");
            }
        }

     }
}

此插件已注册为Create&amp;在webresource上更新消息。

因此,当创建webresource时,我的插件将触发并分支到Create message部分。

当更新网络资源时,我将分支到更新部分 AND ,直接进入componentstate ==已发布部分!! ??

我认为在我选择发布或发布之前,任何更改都会被标记为未发布?

可能相关的其他一些细节:

我正在使用的网络资源是一个js文件。也许这不是其他webresource类型的行为,如png?

我在更新网络资源时采取的步骤是:

开放测试解决方案 打开webresource js文件 用文本编辑器打开 做编辑 单击OK ---然后插件触发。

思想,提示,edjumakation等非常感谢

谢谢

1 个答案:

答案 0 :(得分:0)

保存并发布后,Crm会在webresources表中创建另一条记录。因此,对于未发布的资源,您有两个条目:一个记录的componentstate = 0,另一个记录的componentstate = 1.

我猜插件适用于0值的插件。您可以尝试使用查询表来检查是否存在值为1以确定是否已发布。或者查看传递给插件的任何内容。