在我的应用程序中,我想阻止任何其他用户打开特定客户端的记录,而有人已经打开它。并向他展示一些错误或警告。
我该怎么做?我感谢任何答案或建议。
谢谢,
答案 0 :(得分:2)
没有简单的方法可以做到这一点,但你可以做我之前提到的GCATNM。不过,我会补充一点。
如果这是内部部署安装,则可以设置接受entityid和用户名的asmx服务。这将使用当前日期更新属性的lockedOn日期。然后,让一个脚本在每分钟调用此asmx的实体记录上运行,以更新lockedOn日期。这告诉系统您仍在使用此记录。
然后,在检查是否有人锁定实体的代码中,忽略任何lockOn日期超过5分钟前的锁。
答案 1 :(得分:1)
您可以向实体添加查找systemuser
(“当前打开方式”),并在打开表单时检查它是否有值。如果是,则显示一条消息并关闭表单或转发到只读表单。如果没有,请通过webservice调用将查找设置为当前用户(以便它在同一时刻实际存在于数据库中),以便其他人在打开表单时收到通知。保存或以其他方式关闭表单(onbeforeunload
事件)时,请执行另一个Web服务调用(或者,在保存时,只需将空查找的ForceSubmit
属性设置为true
)以清除查找。 / p>
请注意,这不会捕获某些事情,例如崩溃的客户端(这会使记录“锁定”),因此您需要某种故障保护,例如工作流在设置后清除查找并且记录在一段时间内未被再次修改。
此外,任何其他可能修改记录的逻辑(如插件,导入,任何自定义开发)都必须以避免与此“锁定”功能冲突的方式完成。