Camunda 跳转到下一个用户任务

Camunda jump to next user task

我正在尝试将任务串在一起,我能够通过 运行 TaskListener 创建脚本中的以下内容获取下一个用户任务的任务 ID:

var system = java.lang.System;
system.out.println(task.id);

哪个 returns 是正确的 id。

然后我想将浏览器中的 url 更新为 "ip:port/camunda/app/tasklist/default/#/?task=" + task.id

但是因为 TaskListener Create 脚本不在浏览器本身中 运行(说实话不知道为什么),我没有 'window.location' 可用。

有没有简单的解决方法?

添加到流程模型的任何脚本都在服务器端(包括任务侦听器)执行,除非它属于任务表单。

task 对象是 Java class org.camunda.bpm.engine.delegate.DelegateTask 的实例。您可以通过编写 task.complete().

来跳过当前任务

链接:

对于任何感兴趣的人,我们找到了解决方案。

我们使用 REST api 的 GET 任务命令,代码如下所示

camForm.on('submit-success', function() {
inject(['$rootScope', function($rootScope) {
  var user = $rootScope.authentication.name;
  setTimeout(function(){  
    $.get("/engine-rest/task?sortBy=created&sortOrder=desc&assignee=" + user, function(data) {
      window.location.replace("http://is-company.intelligentsystems.lan:8080/camunda/app/tasklist/default/#/?task="+ data[0].id);
   });
  }, 300);
}]);
});

当你在一个任务上按start/complete时调用这段代码,处理成功(提交成功),然后找到当前用户,并且搜索分配给用户的最新任务并使用 window.location.replace 在 url 中设置它 我们遇到的问题是当代码立即 运行 时任务没有完全创建,但是在获取任务 ID 之前添加了 300 的小延迟(可能更小,但比抱歉更安全)。