网络互斥开发

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格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



