网络互斥开发
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 (itemKey.equals("lago_baritemap2")) { //释放锁 try (DataMutex dataMutex = DataMutex.create()) { String groupId = "default_netctrl"; String entityKey = "bos_user"; List mutexRequireList = new ArrayList<>(1); Map requireParam = new HashMap<>(); requireParam.put(DataMutex.PARAMNAME_DATAOBJID, "1833438011606433792"); requireParam.put(DataMutex.PARAMNAME_GROUPID, groupId); requireParam.put(DataMutex.PARAMNAME_ENTITYKEY, entityKey); requireParam.put(DataMutex.PARAMNAME_OPERATIONKEY, "modify"); mutexRequireList.add(requireParam); Map mutexResult = dataMutex.batchRelease(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); } } }
5 效果图
6 源代码
网络互斥开发
1 业务背景某个业务场景,需要对某个业务表单数据进行锁定,使其他用户对该数据不可编辑2 思路可以通过网络互斥插件进行干预kd.bos.mutex...
点击下载文档
上一篇:操作校验中确认弹窗的三种实现方式下一篇:报表不用点击查询按钮,就查询数据
本文2024-09-23 00:17:33发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-138533.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf
热门文章