J'ai essayé une petite expérience:
<fork name="fork1" >
<transition to="right" />
<transition to="left" />
</fork>
<node name="left">
<event type="node-enter">
<script>
<expression >
left="left";
shared = left;
</expression>
<variable name='left' access='write' />
<variable name='shared' access='write' />
</script>
</event>
<transition to="join" />
</node>
<node name="right">
<event type="node-enter">
<script>
<expression >
right="right";
token.parent.processInstance.contextInstance.setVariable("fromRight", "woot!");
shared = right;
</expression>
<variable name='right' access='write' />
<variable name='shared' access='write' />
</script>
</event>
<transition to="join" />
</node>
<join name="join" >
<transition to="done"></transition>
</join>
<end-state name="done"/>
A la fin, j'ai eu accès à trois variables, partagées, à droite et « fromRight » qui a été créé par le script contre le parent explicitement.
La variable partagée a pris sa valeur dans la fourchette de droite, les changements effectués sur la gauche semblaient disparaître.
Notez que les transitions ne sont pas réellement asynchrones pour moi, et toute l'expérience auront courir dans une transaction, ces facteurs peuvent influer sur le résultat
Je pense que cela est la bonne réponse. En utilisant jBPM, vous écrivez un "programme de workflow" et il doit résoudre ses propres problèmes, car aucune synchronisation générale des variables ne peut être parfaite. –