我知道为预验证注册的插件在数据库事务之外执行,但我不确定我能想到一个比预操作更可取的场景。有人可以举个例子说明预验证注册可能有用吗?
最佳答案
我们在 'PreValidation' 事件上注册了一些插件,尽管这是内部部署,而不是在线。
我自己没有编写这些特定的插件,但我可以描述一个并给出使用“PreValidation”而不是“PreOperation”的理由。
实体:账户
事件:删除
逻辑:插件运行预验证。检查是否没有联系人引用任何帐户的地址。如果找到,则停止执行。如果没有,请删除帐户。
例如
帐户“Stackoverflow”的地址为“Jeff Attwood's House”,联系人为“glosrob”。 'glosrob' 通过定制引用了'Jeff Attwood's House'。如果用户选择删除“StackOverflow”,我们应该检测到“glosrob”正在引用一个地址并阻止删除。
这背后的原因是开发人员发现在 PreOperation 阶段,删除的某些方面已经发生,即级联删除。插件的逻辑要求我们检查所有联系人 - 通过在 PreOperation 注册,帐户下的联系人已被删除,从而使检查过时。
在我们之前的场景中,当用户选择删除“StackOverflow”帐户时,将在插件运行之前删除“glosrob”联系人。因此,当插件之后运行时,它会允许删除。
与 CRM 中的大多数事情一样,这一切都归结为需求和解决方案,但我认为这可以让您了解为什么/何时可以使用预验证阶段。我们还有其他一些具有类似推理的人在“删除”事件上运行。
关于dynamics-crm - 我什么时候为预验证阶段注册 crm 2011 在线插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8336038/