电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

网络互斥开发

来源:金蝶云社区作者:金蝶2024-09-234

网络互斥开发

1 业务背景

某个业务场景,需要对某个业务表单数据进行锁定,使其他用户对该数据不可编辑

2 思路

可以通过网络互斥插件进行干预

kd.bos.mutex.DataMutex#batchrequire  批量申请锁

kd.bos.mutex.DataMutex#batchRelease 批量释放锁


3 案例环境准备

模拟创建一个业务表单,添加两个按钮(加锁,解锁)


4 实例代码(对人员(bos_user)数据进行锁定)

1、加锁

   public void itemClick(ItemClickEvent evt) {
    super.itemClick(evt);
    String itemKey = evt.getItemKey();
    if(itemKey.equals("lago_baritemap")){
        //加锁
        try (DataMutex dataMutex = DataMutex.create()) {
            //如果需要和标准操作(如保存、提交、审核...)互斥,则可使用default_netctrl(默认分组),不需要和标准操作互斥则需要用自定义的groupId
            String groupId = "default_netctrl";
            String entityKey = "bos_user";
            List mutexRequireList = new ArrayList<>(1);

            Map requireParam = new HashMap<>();
            requireParam.put(DataMutex.PARAMNAME_DATAOBJID, "1833438011606433792");//数据id
            requireParam.put(DataMutex.PARAMNAME_GROUPID, groupId);
            requireParam.put(DataMutex.PARAMNAME_ENTITYKEY, entityKey);
            requireParam.put(DataMutex.PARAMNAME_OPERATIONKEY, "modify");
            requireParam.put(DataMutex.PARAMNAME_ISSTRICT, true);
            //建议设置自定义标识,用于后续区分标准操作和自定义申请的网控
            requireParam.put(DataMutex.PARAMNAME_DATA_CALL_SOURCE, "test");
            mutexRequireList.add(requireParam);
            Map mutexResult = dataMutex.batchrequire(mutexRequireList);
            Set set = mutexResult.entrySet();
            Iterator it = set.iterator();
            while(it.hasNext()){
                Map.Entry next = (Map.Entry) it.next();
                String key = (String) next.getKey();
                Boolean value = (Boolean) next.getValue();

                if (value) {
                    //申请互斥成功的
                } else {
                    Map lockInfo = dataMutex.getLockInfo(key, groupId, entityKey);
                    if (lockInfo != null) {
                        //申请锁失败,提示已经存在的锁信息
                    }
                }

            }

        } catch (Exception e) {
            Log.error(e);
        }
    }
}

2、解锁

public void itemClick(ItemClickEvent evt) {
    super.itemClick(evt);
    String itemKey = evt.getItemKey();
     if (it

网络互斥开发

1 业务背景某个业务场景,需要对某个业务表单数据进行锁定,使其他用户对该数据不可编辑2 思路可以通过网络互斥插件进行干预kd.bos.mutex...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信