我正在尝试将任务串起来,我可以通过在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'可用。
这有一个简单的解决方案吗?
答案 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()
来跳过当前任务。
链接: