​s-HR互斥锁使用案例之单据编辑互斥

栏目:s-hr cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

​s-HR互斥锁使用案例之单据编辑互斥

案例场景:工作流自定义了审批界面,其中一个节点同时两个人填写,后提交的人会把先提交人填的信息覆盖掉,此时可以通过二开单据互斥,保证同时只能一个人编辑单据。 效果如下:

image.webp


解决思路: 1.在单据编辑时申请互斥锁,如果没有申请到就给出友好提示信息  2.在单据保存时释放互斥锁。


二开参考代码,在二开单据handler中重写父类(EditHandler)的editActionafterSave方法

/**

* 编辑

*/

public String editAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {

     String billId = this.getBillId(request); 

     try {

         if (billId != null) {

             //申请互斥锁,成功返回true

             boolean requestObjIDForUpdate = NetCtrlHelper.requestObjIDForUpdate(billId);

             if(!requestObjIDForUpdate){

                 IMutexServiceControl mutexService = MutexServiceControlFactory.getRemoteInstance();

                 ObjectUpdateLock objectUpdateLock = mutexService.getObjectUpdateLock(billId);

                 String userName = objectUpdateLock.getUserName();

                 throw new ShrWebBizException("当前单据正在被"+userName+"编辑,需等待"+userName+"提交或保存之后才能编辑!!");

             }

     }

     } catch (BOSException e) {

         throw new SHRWebException(e);

     }

         return super.editAction(request, response, modelMap);

}


/**

* 描述:保存值对象之后的操作

* @param request

* @param response

* @param model

* @throws ShrWebBizException

*/

protected void afterSave(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo model) throws SHRWebException {

     try {

        //释放互斥锁

         NetCtrlHelper.releaseObjIDForUpdate(model.getId().toString());

     } catch (BOSException e) {

         e.printStackTrace();

     }

}


​s-HR互斥锁使用案例之单据编辑互斥

案例场景:工作流自定义了审批界面,其中一个节点同时两个人填写,后提交的人会把先提交人填的信息覆盖掉,此时可以通过二开单据互斥,保证...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息