我正在寻找一种方法来检索特定实体的共享权限。
有没有办法通过网络API进行此操作?
我知道RetrieveSharedPrincipalsAndAccessRequest
但由于我的工具的其余部分仅依赖于网络API,我希望完全避免使用组织服务。
答案 0 :(得分:2)
此请求在9.0版(Dynamics 365 7月更新)中提供
我相信您使用的是8.x版本。在这种情况下,这不是那么简单,但也可行。只需创建自定义操作: https://msdn.microsoft.com/en-us/library/dn481600.aspx
可以从工作流,插件以及在此方案中最有用的操作中使用操作,直接从WebAPI调用: https://msdn.microsoft.com/en-us/library/mt607600.aspx
例如,您的电话会是这样的:
POST [Organization URI]/api/data/v8.2/new_RetrievePrincipalAccessAction HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"ObjectId": 3,
"ObjectType": "account"
}
现在,您需要创建一个插件并在操作的后期操作中注册它(操作会生成一个可用于注册插件的自定义消息)。例如: https://community.dynamics.com/crm/b/magnetismsolutionscrmblog/archive/2017/09/18/how-to-trigger-plugins-on-custom-messages-using-actions-in-dynamics-365
在您的插件中,您当然可以使用标准IOrganizationService调用RetrieveSharedPrincipalsAndAccessRequest,并将结果简单地放入操作的OutputParameters中。最有用的是JSON字符串:
public void Execute(IServiceProvider serviceProvider)
{
var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
//do the logic retrieve what you want
context.OutputParameters["result"] = someResultAsJsonString;
}
您的JS webAPI调用将返回
{
result: someResultAsJsonString
}
你可以在JS代码中用你想做的任何事情:)