2017-09-04 5 views
2

Je cherche à des tâches de cordes ensemble, je suis en mesure d'obtenir la tâche ID de la tâche suivante de l'utilisateur en exécutant la commande suivante dans un TaskListener Créer script:Camunda saut à la tâche utilisateur suivante

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

qui retourne la id correct.

Je voudrais ensuite mettre à jour l'URL dans le navigateur pour "ip: port/camunda/app/tasklist/default/#/task =?" + Task.id

Mais parce que le script est TaskListener Créer ne fonctionne pas dans le navigateur lui-même (je ne sais pas pourquoi être honnête), je n'ai pas 'window.location' disponible.

Existe-t-il une solution simple à cela?

Répondre

1

Pour toute personne intéressée nous avons trouvé une solution.

Nous utilisons la commande de tâche GET REST api, le code ressemble à ceci

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); 
}]); 
}); 

Ce code est appelé lorsque vous appuyez sur start/complet sur une tâche, et le traitement est réussi (submit-succès), puis il trouve l'utilisateur actuel, et recherche la tâche la plus récente affectée à l'utilisateur et la définit dans l'URL en utilisant window.location.replace Nous avons eu le problème que la tâche n'est pas complètement créée lorsque le code est exécuté immédiatement, mais en ajoutant un petit délai de 300 (pourrait être plus petit, mais mieux vaut prévenir que guérir) avant d'obtenir l'identifiant de la tâche.

1

Tout script que vous ajoutez à votre modèle de processus est exécuté sur côté serveur (y compris les écouteurs de tâche), à ​​moins qu'il n'appartienne à un formulaire de tâche. L'objet tasktask est une instance de la classe Java org.camunda.bpm.engine.delegate.DelegateTask. Vous pouvez ignorer la tâche en cours en écrivant task.complete().

Liens:

+0

J'ai réalisé (juste après la publication) que le script était exécuté du côté serveur, mais la définition de la tâche à effectuer ne résoudrait pas mon problème. J'essaie de passer d'un masque à l'autre sans avoir à faire plusieurs clics (les tâches de l'utilisateur sont assignées automatiquement à l'utilisateur qui a lancé le processus). – NoShadowKick