zoukankan      html  css  js  c++  java
  • Dynamics CRM 2015/2016新特性之二十三:使用Web API执行函数

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复206或者20160315可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!
    函数分为函数(function)和查询函数(query function),是不是有点儿绕口?函数的列表请参考SDK的 Web API Function Reference 章节,每个函数都有一个消息和它对应,函数不会改变数据,一般是查询数据,返回一个复杂类型或者集合。查询函数的列表请参考SDK的Web API Query Function Reference 章节,每个函数对应的是一个FetchXML的操作符,用来判断是否符合条件。
    下面举例子来说明下,调用 RetrieveAllChildUsersSystemUser 这个函数吧,它说起来是绑定函数(bound function),所有绑定函数都有一个属性值是IsBound="true" 。这个必须点赞,现在执行消息方便多了,以前版本执行消息很麻烦,可以参考我的博客:通过JavaScript调用SOAP终结点执行实体消息
    下面这个是函数的相关元数据信息:
     
    示例调用代码如下:
    var clientURL = Xrm.Page.context.getClientUrl();
    var req = new XMLHttpRequest()
    req.open("GET", encodeURI(clientURL + "/api/data/v8.0/systemusers(4C6A6247-43A9-E511-80CF-000D3A806074)/Microsoft.Dynamics.CRM.RetrieveAllChildUsersSystemUser()?$select=fullname"), true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("OData-MaxVersion", "4.0");
    req.setRequestHeader("OData-Version", "4.0");
    req.onreadystatechange = function () {
        if (this.readyState == 4 /* complete */) {
            req.onreadystatechange = null;
            if (this.status == 200) {
                var responseJSON = JSON.parse(this.responseText);
                var popstr = "";
                if (responseJSON.value != null && responseJSON.value.length >= 1) {
                    for (var i = 0; i < responseJSON.value.length; i++) {
                        popstr += responseJSON.value[i].fullname + ";";
                    }
                }
                Xrm.Utility.alertDialog("这个人下属(含直接下属和非直接下属)包括:" + popstr);
            }
            else {
                var error = JSON.parse(this.response).error;
                Xrm.Utility.alertDialog("调用函数出错." + error.message);
            }
        }
    };
    req.send();
    非绑定函数(unbound function)就是不是和实体绑定的函数,所有的查询函数都是非绑定函数,还有部分函数,他们没有IsBound属性。
    下图是非绑定函数 WhoAmI 定义的元数据。
     
    下面是调用非绑定函数的示例代码:
    var clientURL = Xrm.Page.context.getClientUrl();
    var req = new XMLHttpRequest()
    req.open("GET", encodeURI(clientURL + "/api/data/v8.0/WhoAmI()"), true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("OData-MaxVersion", "4.0");
    req.setRequestHeader("OData-Version", "4.0");
    req.onreadystatechange = function () {
        if (this.readyState == 4 /* complete */) {
            req.onreadystatechange = null;
            if (this.status == 200) {
                var responseJSON = JSON.parse(this.responseText);
                Xrm.Utility.alertDialog("当前用户的ID是:" + responseJSON.UserId + ";所属业务部门ID是" + responseJSON.BusinessUnitId);
            }
            else {
                var error = JSON.parse(this.response).error;
                Xrm.Utility.alertDialog("调用函数出错." + error.message);
            }
        }
    };
    req.send();
     
    从Dynamics 365 V9版本开始提供了新的客户端API来方便编程,请参考 Xrm.WebApi.online.execute (Client API reference) ,还可以参考我的博文 Dynamics 365 V9版本新的客户端API Xrm.WebApi.online.execute 使用实例
    更多信息请参考官方文档: Use Web API functions
  • 相关阅读:
    搬家
    围棋程序
    图论----基础知识
    贪心算法
    944. 删列造序
    1221. 分割平衡字符串
    面试题 01.01. 判定字符是否唯一
    剑指 Offer 10- II. 青蛙跳台阶问题
    面试题 16.11. 跳水板
    1137. 第 N 个泰波那契数
  • 原文地址:https://www.cnblogs.com/luoyong0201/p/Dynamics_365_Web_API_Use_Function.html
Copyright © 2011-2022 走看看