当前位置:网站首页>Dynamics 365 开发协作最佳实践思考

Dynamics 365 开发协作最佳实践思考

2022-07-06 01:35:00 zcy_wxy

一、前台开发

1、首先要考虑把常用代码独立成一个公共js,然后在需要用到的时候引入。这样会更便于维护。

2、做请求聚合。如果一个页面中发请求次数太多,且不为异步,就会导致前台卡顿明显。所以为了减少请求次数,做请求聚合,把几次请求整合成一次请求,获取页面需要的数据。

常用的比如说:

锁定和释放窗体属性

    /**
     * 锁定或解锁属性
     * @param {any} attributeName
     */
    lockOrUnlockControlByAttributeName: function (attributeName,lock) {
        let controls = Xrm.Page.getAttribute(attributeName).controls.getAll();
        if (controls) {
            for (con of controls) {
                con.setDisabled(lock);
            }
        }
    }

获取选项集字段名称

    /*
     * summary:前端获取选项集字段的名称
     * author:
     * createTime:
     */
    getOptionName:function (context, attributeName, value) {
        let val = value;
        if (val == null || val == undefined) {
            val = context.getAttribute(attributeName).getValue();
        }
        let attrArray = context.getControl(attributeName).getOptions().filter(t => t.value == val);
        if (attrArray.length > 0) {
            return attrArray[0].text;
        }
        return "";
    }

判断用户是否为负责人

/*
 * summary:判断用户是否为负责人
 * author:
 * createTime:
 * returns:
 */
function currentUserIsOwner() {
    let owner = Xrm.Page.getAttribute("ownerid");
    if (owner) {
        let ownerid = owner.getValue()[0].id;
        return Xrm.Page.context.getUserId() == ownerid;
    }
    return false;
}

判断用户是否包含指定角色


/*
 * summary:判断用户是否拥有某些角色
 * author:
 * createTime:
 * returns:
 */
function currentUserContainRoles(roleNames) {
    var roleNameArray = roleNames.split(',');
    let userRoles = Xrm.Utility.getGlobalContext().userSettings.roles.getAll();
    if (roleNameArray.length > 1) {
        let nameSet = new Set();
        for (let role of userRoles) {
            nameSet.add(role.name);
        }
        for (let roleName of roleNameArray) {
            if (nameSet.has(roleName)) {
                return true;
            }
        }
        return false;
    }
    for (var role of userRoles) {
        if (role.name == roleNameArray[0]) {
            return true;
        }
    }
    return false;
}

等等。

二、插件开发

1、最好是一个实体建一个插件项目,这样既可以避免多人开发时的冲突,也能在解决方案发布时避免多发或者漏发内容。或者根据模块划分插件项目,一个插件项目中只包含单个模块所需的实体。

2、公共模块也最好提取出来,放在共享项目中。按dao、service、controller的分层概念来说,dao层和service层的公共的内容,都放在共享项目中。

原网站

版权声明
本文为[zcy_wxy]所创,转载请带上原文链接,感谢
https://blog.csdn.net/zcy_wxy/article/details/125599188