0

任何人都知道插件注册但没有启动的SetState任何SetStateDynamicEntity原因salesorder?如果我Update针对状态码注册它会正确触发。

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

检查了 SDK 中的电子表格,它们是salesorder. 我知道orderclose“幕后”也创建了一项活动,所以不确定在整个订单过程中是否还有其他事情在起作用?

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

4

1 回答 1

2

我尝试了一个简单的插件(只是抛出一个InvalidPluginExecutionException),实际上如果在SetStateor上注册,插件不会被触发SetStateDynamicEntity

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

示例:履行销售订单

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 权限。

在我CreateOrderClose实体(Pre-operation阶段)注册我的插件之后,当我尝试履行订单时它可以工作(向我抛出异常)。

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

于 2013-04-15T12:30:00.613 回答