zoukankan      html  css  js  c++  java
  • 不借助工具在浏览器中通过Web API执行Dynamics 365操作(Action)实例

    摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复262或者20170727可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me 。

    我的上一篇文章 利用Fiddler修改请求信息通过Web API执行Dynamics 365操作(Action)实例 借助了Fiddler工具,你可能会问,如果不借助工具,我只有浏览器可行吗?这就是本文要讲述的。

    我们知道一般浏览器按F12会出来开发者工具,我们以Chrome为例来讲解,还是和前面博文一样,执行一样的操作。

    请选择开发者工具的 Console 这个页签,为了方便输入代码,请清空这个页签中的东西,然后我输入下面的JavaScript代码:

    var clientURL = Xrm.Page.context.getClientUrl();
    var req = new XMLHttpRequest()
    req.open("POST", encodeURI(clientURL + "/api/data/v8.2/workflows(6BEBC426-F722-4B64-AE5D-0DA379F8A8C4)/Microsoft.Dynamics.CRM.ExecuteWorkflow"), 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) {
          Xrm.Utility.alertDialog("执行成功!");
              console.log(this.responseText);
        }
            else {
              Xrm.Utility.alertDialog("执行出错。");
              console.log(this.responseText);
        }
         }
      };
    var requestMsg = {};
    requestMsg.EntityId = "B907DE1B-CF99-E611-8161-000D3A80C8B8";
    req.send(JSON.stringify(requestMsg));

    输完后按回车键,很快代码执行完毕提示我成功了:

    我点击确定后代码将获取到的返回内容写入了控制台(console),如下:

     这个是不是更加需要点技术活,需要你会写JavaScript代码,其中带来的好处我就不说啦,相信聪明的朋友可以猜到。

    下面补充几个实际的例子。

    1. 更新contact记录的owner为指定的团队。

    var clientURL = Xrm.Page.context.getClientUrl();
    var req = new XMLHttpRequest()
    req.open("PATCH", encodeURI(clientURL + "/api/data/v8.2/contacts(2dbe9781-3c00-e911-80f4-fb0c1b62c870)"), 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["ownerid@odata.bind"] = "/teams(C36E8B6E-44FB-E711-80F4-3863BB35BF30)"
    req.send(JSON.stringify(requestMsg));

    2. 通过 AddToQueue 消息将SR添加到指定队列:

    var actionUrl = "/api/data/v8.2/queues(CA4CB0B1-1CC8-E611-80DA-005056AA01A1)/Microsoft.Dynamics.CRM.AddToQueue";
    var addToQueueContent = {
        "Target": {
            "incidentid": "B7367B58-8C55-E811-80F6-005056AA43CC",
            "@odata.type": "Microsoft.Dynamics.CRM.incident"
        }
    };
                                         
    var req = new XMLHttpRequest();
    req.open("POST", encodeURI(Xrm.Page.context.getClientUrl() + actionUrl), 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 || this.status == 204) {
                Xrm.Utility.alertDialog("操作成功!");
            }
            else {
                alert("操作失败:" + JSON.parse(this.response).error.message)
            }
        }
    };
    req.send(JSON.stringify(addToQueueContent));

    3. 通过 CloseIncident 消息来关闭SR,注意自己指定关闭SR时候的subject和statuscode

    var clientURL = Xrm.Page.context.getClientUrl();
    var req = new XMLHttpRequest()
    req.open("POST", encodeURI(clientURL + "/api/data/v8.2/CloseIncident"), 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("将SR关闭成功!");
            }
            else {
                var error = JSON.parse(this.response).error;
                Xrm.Utility.alertDialog("将SR关闭出错." + error.message);
            }
        }
    };
    var requestmsg = {};
    requestmsg.IncidentResolution = {};
    requestmsg.IncidentResolution.subject = "Cancel Sr";
    requestmsg.IncidentResolution["incidentid@odata.bind"] = "/incidents(46704E83-F85E-E811-8135-E0071B672C21)";
    requestmsg.Status = 100000026;
    req.send(JSON.stringify(requestmsg));
  • 相关阅读:
    new Date(str)返回 Invalid date问题
    时间倒计时
    js返回上一页并刷新 代码整理
    赋值变量值在标签里
    jQuery获取select选择的文本与值
    判断div里面的子集是否含有特定的类
    卷boot仅剩余XX空间
    ubuntu16.04 anaconda3安装
    ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
    毕业设计
  • 原文地址:https://www.cnblogs.com/luoyong0201/p/Execute_Workflow_Action_By_Web_API_and_F12.html
Copyright © 2011-2022 走看看