2017-09-12 4 views
0

Je dois créer des tâches de service en parallèle dans mon processus.wso2bps 3.6.0 Tâches asynchrones

Essayez de créer le flux simple avec l'utilisation de la propriété async:

enter image description here

Avec boucle cardinalité = 5 (par exemple)

J'ai trouvé que dans activiti.xml configuration, il est nécessaire d'ajouter cette propriété:

<property name="asyncExecutorActivate" value="true" /> 

Mais le flux s'exécute toujours dans un thread.

Qu'est-ce qui me manque?

Comment activer async correctement?

Répondre

1
  1. pour activer async exécution en parallèle dans l'exemple ci-dessus - nécessité de mettre async sur Call Service et non sur Sub Process

  2. dès que nous utilisons async nous devons configurer le moteur de processus pour être async

    sinon vous rencontrerez ce roi d'exception:

    org.activiti.engine.ActivitiOptimisticLockingException: VariableInstanceEntity [id = 15317, name = nrOfActiveInstances, type = entier, LongValue = 1, textValue = 1] a été mis à jour par une autre transaction en même temps

    les paramètres du moteur Activiti sur wso2bps stockés ici: conf/activiti.xml

    juste ajouter les propriétés suivantes haricots id = "processEngineConfiguration"

    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> 
        ... 
        <property name="asyncExecutorActivate" value="true" /> 
        <property name="asyncExecutorEnabled" value="true" /> 
        ... 
    </bean> 
    

    mettent en garde: ne sais pas si elle est fonction ou bug. sera correctement subprocess attraper toutes les terminaisons de fil que si vous définissez async sur end events de ... subprocess

après ces changements, le processus de la question fonctionne très bien en mode multithread.