注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

微软MVP罗勇的博客

微软MVP罗勇,www.luoyong.me

 
 
 

日志

 
 

Dynamics CRM 2015/2016新特性之二十四:使用Web API执行操作  

2016-03-16 14:11:11|  分类: 2015/2016新特性 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复207或者20160316可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!
操作(action)是可重复利用的操作,操作会改变数据,可以调用的系统自带的操作列表请参考SDK的 Web API Action Reference 章节,当然自己建立的操作(流程的一种)也是可以像系统自带的操作那样可以通过Web API调用。
操作也分绑定操作(bound action)和非绑定操作(unbound action),也是根据操作的元数据是否有IsBound="true"。这里以调用 WinOpportunity 这个非绑定操作为例来查看和调用系统自带的操作。
Dynamics CRM 2015/2016新特性之二十四:使用Web API执行操作 - 罗勇 - 微软MVP罗勇的博客

示例代码:

    var clientURL = Xrm.Page.context.getClientUrl();
    var req = new XMLHttpRequest()
    req.open("POST", encodeURI(clientURL + "/api/data/v8.0/WinOpportunity"), 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 == 204) {
                Xrm.Utility.alertDialog("将商机作为赢单关闭成功!");
            }
            else {
                var error = JSON.parse(this.response).error;
                Xrm.Utility.alertDialog("将商机作为赢单关闭出错." + error.message);
            }
        }
    };
    var requestmsg = {};
    requestmsg.Status = 3;
    requestmsg.OpportunityClose = {};
    requestmsg.OpportunityClose.subject = "罗勇结束了这个商机";
    requestmsg.OpportunityClose["opportunityid@odata.bind"] = "/opportunities(6025165A-3AA3-E511-80C7-000D3A807EC7)";
    req.send(JSON.stringify(requestmsg));

下面我们来看看调用绑定操作(bound action),我们拿 RemoveMembersTeam 这个操作来演示,先看看它的定义:
Dynamics CRM 2015/2016新特性之二十四:使用Web API执行操作 - 罗勇 - 微软MVP罗勇的博客

然后下面是我撰写的示例代码,注意调用绑定操作的话,第一个参数是在调用的URL里面指定的,而且操作的名称的前面要加上命名空间Microsoft.Dynamics.CRM,第二个参数如果是某个类型的Collection,则是一个数组,这个类型则是指定其主键的值即可,这是我猜测的,适用于当前的例子。

    var clientURL = Xrm.Page.context.getClientUrl();
    var req = new XMLHttpRequest()
    req.open("POST", encodeURI(clientURL + "/api/data/v8.0/teams(E4CC382D-02B9-E511-80DC-000D3A804C3F)/Microsoft.Dynamics.CRM.RemoveMembersTeam"), 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 == 204) {
                Xrm.Utility.alertDialog("将用户移出团队成功!");
            }
            else {
                var error = JSON.parse(this.response).error;
                Xrm.Utility.alertDialog("将用户移出团队出错." + error.message);
            }
        }
    };
    var requestmsg = {};
    requestmsg.Members = [];
    requestmsg.Members[0] = {};
    requestmsg.Members[0].systemuserid = "A576C4B5-44A9-E511-80CF-000D3A806074";
    requestmsg.Members[1] = {};
    requestmsg.Members[1].systemuserid = "CEFE67E5-44A9-E511-80CF-000D3A806074";
    req.send(JSON.stringify(requestmsg));

下面我模仿SDK上面的说明配置一个操作如下,并用代码来调用它。
Dynamics CRM 2015/2016新特性之二十四:使用Web API执行操作 - 罗勇 - 微软MVP罗勇的博客

Dynamics CRM 2015/2016新特性之二十四:使用Web API执行操作 - 罗勇 - 微软MVP罗勇的博客

发布这个操作以后,我们去元数据页面(比如我的是 http://lycrmvm.cloudapp.net:5555/Demo/api/data/v8.0/$metadata ,需要激活操作并且发布,然后刷新页面哦)可以搜索到如下的操作定义:
Dynamics CRM 2015/2016新特性之二十四:使用Web API执行操作 - 罗勇 - 微软MVP罗勇的博客

然后调用代码如下:

    var clientURL = Xrm.Page.context.getClientUrl();
    var req = new XMLHttpRequest()
    req.open("POST", encodeURI(clientURL + "/api/data/v8.0/ly_tests(A9B987FB-A4A4-E511-80CC-000D3A80CE7F)/Microsoft.Dynamics.CRM.ly_AddNoteToContact"), 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.annotationid);
            }
            else {
                var error = JSON.parse(this.response).error;
                Xrm.Utility.alertDialog("创建注释出错." + error.message);
            }
        }
    };
    var requestmsg = {};
    requestmsg.NoteTitle = "这是罗勇通过WEB API创建的注释标题";
    requestmsg.NoteText = "这是罗勇通过WEB API创建的注释内容";
    req.send(JSON.stringify(requestmsg));


素格格新疆特产店--做新疆特产的搬运工。
本店由博主的新疆老婆开设,搬运各种上等的新疆特产,是自用,送礼,年货,孝敬长辈特别是(岳)父母的首选!
Dynamics CRM 2015/2016新特性之十五:CRM On<wbr>line升级和产品计价更多选择 - 罗勇 - 微软MVP罗勇的博客
  评论这张
 
阅读(420)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017