Dynamics 365Online 使用Xrm.WebApi.online.execute執行自定義Action

     D365V9以後引入了新的API,其中比較Nice的是給我們封裝了WebApi,不需要我們再去寫request了,本篇要分享的是如何使用SDK中的Xrm.WebApi.online.execute來執行自定義的Entity類型的Action。

     Docs中對execute執行Action是有示例的,比如下面的sample,但是這是global的Action,可以看到紅框中的boundParameter(關於參數的含義可以自己看docs,很簡單,這裏就不做闡述了)是null

     那Entity的類型的該怎麼構建,docs的示例中沒有,那隻能自己琢磨了。

     先來看下我定義的Action,很簡單就一個參數

   再來看下這條Action在metadata中的顯示,會發現多了一個Name爲entity的輸入參數,因爲這是Entity類型的Action,所以得把Entity傳入

     看下具體的代碼,getMetadata中的boundParameter的值是entity,parameterTypes即是你的輸入參數,在我定義的projectId的基礎上增加了一個entity,而這個entity的賦值方式搞對了就很簡單了,entityType的值即是上面metadata中紅框中的,其他的參數的說明還是看docs吧

var projectJs = window.ProjectJs || {};
(
    function () {
    this.SendSurvey = function (executionContext) {
            var projectId = executionContext.data.entity.getId().replace('{', '').replace('}', '');
            var sendSurvey = new projectJs.sendSurveyMail(projectId);
            Xrm.WebApi.online.execute(sendSurvey).then(function (res) {
                if (res.ok) {
                    Xrm.Navigation.openAlertDialog({ text: "Send Successfully"});
                }
            }, function (res) {

            });
        };
        projectJs.sendSurveyMail = function (projectId) {
            this.projectId = projectId;
            this.entity = { entityType: "msdyn_project", id: this.projectId};
        };
        projectJs.sendSurveyMail.prototype.getMetadata = function () {
           return{
                boundParameter: "entity",
                parameterTypes: {
                    "entity": {
                        typeName: "mscrm.msdyn_project",
                        structuralProperty: 5
                    },
                    "projectId": {
                        "typeName": "Edm.String",
                        "structuralProperty": 1 // Primitive  Type
                    }
                },
                operationType: 0, // This is an action. Use '1' for functions and '2' for CRUD
                operationName: "sfdhl_ProjectServiceSendSurveyEmail"
};
};
    }
).call(projectJs);

   最後看下執行的結果,成功調用

    

發佈了379 篇原創文章 · 獲贊 66 · 訪問量 93萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章