Executer une tâche en utilisant la ProcessApi

1
0
-1

Bonjour.

J'ai lu dans la doc (http://documentation.bonitasoft.com/execute-task) et on m'a confirmé sur le forum que pour executer une tâche/activité, il faut utiliser :

apiAccessor.getProcessAPI().executeFlowNode(task.getId());

J'ai tenté de faire cela dans un processus mais j'ai droit à une erreur :

AVERTISSEMENT: THREAD_ID=79 | HOSTNAME=W28323 | TENANT_ID=1 | org.bonitasoft.engine.core.process.instance.api.exceptions.SActivityStateExecutionException : "PROCESS_DEFINITION_ID=9143045452633727436 | PROCESS_NAME=testManageProcess | PROCESS_VERSION=1.0 | PROCESS_INSTANCE_ID=45 | ROOT_PROCESS_INSTANCE_ID=45 | FLOW_NODE_DEFINITION_ID=-7192980310351336998 | FLOW_NODE_INSTANCE_ID=140 | FLOW_NODE_NAME=Step1 | org.bonitasoft.engine.core.operation.exception.SOperationExecutionException: org.bonitasoft.engine.expression.exception.SExpressionEvaluationException: Groovy script throws an exception of type class org.bonitasoft.engine.bpm.flownode.FlowNodeExecutionException with message = org.bonitasoft.engine.transaction.STransactionCreationException: We do not support nested calls to the transaction service.

Voilà mon script Groovy :

List<ProcessInstance> listeP = apiAccessor.getProcessAPI().getProcessInstances(0, 1000, ProcessInstanceCriterion.CREATION_DATE_DESC);
for (ProcessInstance p : listeP) {
        List<HumanTaskInstance> listeTask = apiAccessor.getProcessAPI().getHumanTaskInstances(p.getId(), "Etape 1", 0, 5);
        for (HumanTaskInstance task : listeTask) {
                apiAccessor.getProcessAPI().executeFlowNode(task.getId());
        }
}

J'ai bien vérifié que la liste des tâches correspond bien à ce que je souhaitais en affichant leurs noms. Il y a bien une Etape 2 après l'étape 1. Je ne comprend pas pourquoi j'ai donc cette erreur.

Quelqu'un a une idée ?

Merci d'avance.

No answers yet.
Notifications