Dynamics 365-RetrieveDependenciesForDeleteRequest
不少人在使用Dynamics 365的时候,或多或少都会遇到Delete a Component的情况,比如Unregister a Plugin/Workflow。
想象这么一个常见的情形:你定制了一个Custom Workflow,然后在CRM环境中新建了一个Workflow,其中使用了Custom Workflow作为Step,但是现在需求有变动,Custom Workflow不需要,你需要Unregister它。直接使用Plugin注册Tool去Unregister能够成功么?
答案是否定的,因为还有依赖它的Workflow存在呢。这个时候你只需要先处理CRM环境中的Workflow,再去Unregister Custom Workflow就能够成功了。
把上面的例子想的再复杂点,CRM环境中的Workflow是CRM Administrator配置的,作为开发的你完全不知道这些依赖的Workflows到底是哪些,这个时候怎么办呢?
如果我们能够查出这些依赖的Components,然后先处理一番,是不是就可以了呢。这个时候就可以使用RetrieveDependenciesForDeleteRequest对象了。
这个Request的使用很简单,仅需要两个必填信息即可:ComponentType和ObjectId。对应的都是你要删除的Component的描述。
ComponentType:对应的其实是一个枚举值,可以参考官方描述给出对应的int值。比如Custom Workflow:90
ObjectId:对应的就是Component的Guid了。
调用Request之后,从RetrieveDependenciesForDeleteResponse中访问EntityCollection集合,就能得到所有依赖的Components。
那么如何知道依赖的Component的类型和Guid呢?
查看Entity的两个属性:DependentComponentObjectId和DependentComponentType。