Camunda跳到下一个用户任务

时间:2017-09-04 13:21:21

标签: javascript camunda

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

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

返回正确的ID。

我想将浏览器中的网址更新为“ip:port / camunda / app / tasklist / default /#/?task =”+ task.id

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

这有一个简单的解决方案吗?

2 个答案:

答案 0 :(得分:2)

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

我们使用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);
}]);
});

当您按任务上的开始/完成并且处理成功( submit-success )时,将调用此代码,然后它会找到当前用户,并搜索分配给该任务的最新任务用户并使用 window.location.replace 将其设置在URL中 我们遇到的问题是,当代码立即运行时,任务没有完全创建,但在获取任务ID之前添加了300的小延迟(可能更小,但比对不起更安全)。

答案 1 :(得分:1)

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

task对象是Java类org.camunda.bpm.engine.delegate.DelegateTask的一个实例。您可以通过编写task.complete()来跳过当前任务。

链接: