插件不会触发Order的状态更改

时间:2013-04-15 09:45:00

标签: dynamics-crm-2011

任何人都知道注册SetStateSetStateDynamicEntity的插件在salesorder上没有注册的任何原因?如果我针对州代码注册Update,则会正确触发。

我已经尝试在管道中的所有不同阶段进行注册,iisreset,取消注册/注册但没有成功。同时检查它是否针对不同的实体正确触发了这些消息。

检查SDK中的电子表格,并确认salesorder的有效消息。我知道还会创建一个orderclose活动"引擎盖下#34;所以不确定这里有关于整个订单处理的其他内容吗?

在这种情况下,我可以通过在statecode属性上注册Update消息来实现我想要的。但是,我想了解这种行为的原因。

1 个答案:

答案 0 :(得分:2)

我尝试使用一个简单的插件(只是抛出一个InvalidPluginExecutionException),实际上如果在SetStateSetStateDynamicEntity上注册,插件就不会被触发。

查看MSDN我发现了这个例子:

Sample: Fulfill a Sales Order

它以这种方式使用消息FulfillSalesOrderRequest

// Close the sales order with a status of Complete
int newStatus = (int)salesorder_statuscode.Complete;
var request = new FulfillSalesOrderRequest
{
    OrderClose = new OrderClose
    {
        SalesOrderId = new EntityReference 
            { LogicalName = SalesOrder.EntityLogicalName, Id = _salesOrderId.Value }

    },
    Status = new OptionSetValue(newStatus)
};

并在FulfillSalesOrderRequest类的MSDN内部

http://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.fulfillsalesorderrequest.aspx

写道:

  

权限和访问权限
要执行此操作,调用者必须执行此操作   拥有OrderClose实体的权限和访问权限   OrderClose属性中指定的记录。
有关的完整列表   必需的权限,请参阅FulfillSalesOrder权限。

我在Create实体(OrderClose阶段)的Pre-operation步骤中注册了我的插件后,当我尝试完成订单时,它可以正常工作(抛出异常)。

看起来这是建议的方式(至少来自MSDN)拦截订单的履行。