alfresco - LockService 或 JobLockService 锁定节点

标签 alfresco

露天中的 LockService 和 JobLockService 之间有什么区别?如果我已经存在一个节点,表示创建的其他节点的序列,并且该节点必须在 getNextSequence() 之前锁定,那么我可以在哪里使用它们?

例如:

Node sequenceNode = getSequenceNode();
LockService(sequenceNode);
Node aNode = new Node(new NodeRef(...));
Map<QName,serialzable> props = new HashMap<QName,Serializable>();
props.put(...,sequenceNode.getNextSequence()); 
nodeService.setProperty(..,..,..,props);

现在,LockService 是否足以满足这一点,知道序列节点无法通过 alfresco Web 客户端编辑,只能通过这行代码进行编辑。

非常感谢您的回复。 穆罕默德·阿米尔 高级系统开发人员 数字系列公司

最佳答案

tl;dr:使用 LockService 并感到高兴,在这种情况下这对您来说就足够了。

LockService 用于获取特定节点上的锁,而 JobLockService 用于处理特定任务上的并发。更具体地说:

  • 只要您想要对特定节点或一组节点进行独占访问,就可以使用LockService。您必须指定要锁定哪些节点以及哪些 type of lock你想申请。一旦您获得了一个或多个节点上的锁定,系统将禁止其他用户访问这些节点,并且将继续这样做,直到您删除锁定或锁定过期

  • 当您需要一次仅执行一次特定任务(例如,为了避免并发运行)时,可以使用 JobLockService。此服务处理的锁不绑定(bind)到特定节点,并由 QName 标识。因此,JobLockService 不会阻止任何节点被访问或修改,而是禁止其他线程或外部应用程序执行相同的任务(前提是它们首先尝试获取相同的锁)。假设您有多个访问存储库的远程系统。 JobLockService 允许您在整个系统网络上强制串行执行相同的任务。

如果我正确理解您的问题,您有一个节点保存序列号或类似的内容,并且您需要 getNextSequence 可靠地提供下一个标识符。虽然您可以在这里使用这两种服务,但由于关键操作实际上绑定(bind)到单个节点(保存序列的节点),因此我宁愿在这里使用 LockService

关于alfresco - LockService 或 JobLockService 锁定节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6840016/

相关文章:

Alfresco - 安装后无法登录

tomcat - 使用 HTTPS 和共享点协议(protocol)配置 alfresco

java - 如何通过自定义 Web 应用程序连接到 Alfresco 文档

alfresco - 如何读取 freemarker 中的复选框/单选值?

workflow - 需要有关 Alfresco 工作流程的帮助

java - 用于上传文件的WebScript : during the first upload one extra version created

docker - 使用 Docker 运行时如何备份和恢复 Alfresco Community

mysql - Alfresco 4.0 社区和 Solr 在 Mysql 5.1 上产生太多查询

solr - 如何在 Alfresco Solr 搜索中查询不区分大小写?

java - Alfresco 如何安装附加 jar 文件?例如。我必须在 :fme-datalist-extension-share. jar 上安装 add