2017-02-01 6 views
0

Il semble que les activités de workflow intégrées sont exécutées deux fois. Je suis en train de tester le workflow Checkout et le DecrementInventoryActivity enlève deux fois la quantité du sku.Broadleaf Commerce - Mes activités de workflow sont en cours d'exécution deux fois

Est-ce un bug connu ou est-ce que je fais quelque chose de mal?

J'ai créé le flux de travail comme ceci:

<!-- Checkout Workflow Configuration --> 
<bean id="blCheckoutWorkflow" class="org.broadleafcommerce.core.workflow.SequenceProcessor"> 
    <property name="processContextFactory"> 
     <bean class="org.broadleafcommerce.core.checkout.service.workflow.CheckoutProcessContextFactory"/> 
    </property> 
    <property name="activities"> 
     <list> 
     <bean p:order="6000" id="blDecrementInventoryActivity" class="org.broadleafcommerce.core.checkout.service.workflow.DecrementInventoryActivity"> 
      <property name="rollbackHandler" ref="blDecrementInventoryRollbackHandler" /> 
     </bean> 
     <bean p:order="7000" id="blCompleteOrderActivity" class="org.broadleafcommerce.core.checkout.service.workflow.CompleteOrderActivity"> 
      <property name="rollbackHandler" ref="blCompleteOrderRollbackHandler" /> 
     </bean> 
     <bean p:order="9999999" class="com.mycompany.workflow.checkout.NotifyExternalInventorySystem" /> 
     </list> 
    </property> 
    <property name="defaultErrorHandler"> 
     <bean class="org.broadleafcommerce.core.workflow.DefaultErrorHandler"> 
     <property name="unloggedExceptionClasses"> 
      <list> 
       <value>org.broadleafcommerce.core.inventory.service.InventoryUnavailableException</value> 
      </list> 
     </property> 
     </bean> 
    </property> 
</bean> 

Répondre

1

A partir de Feuillu 4.0, le DecrementInventoryActivity a été ajouté par défaut à la blCheckoutWorkflow. Voir les notes de migration 3.1.10-4.0.0 au http://www.broadleafcommerce.com/docs/core/4.0/migration-notes/3.1-to-4.0-migration/3.1.10-to-4.0-migration, dans la section "Gestion des stocks".

Cela vaut également pour le defaultErrorHandler, et vous pouvez supprimer le blCompleteOrderActivity (qui a toujours été géré dans le cadre). En gros, votre grain de blCheckoutWorkflow personnalisé devrait changer:

<bean id="blCheckoutWorkflow" class="org.broadleafcommerce.core.workflow.SequenceProcessor"> 
    <property name="activities"> 
     <list> 
     <bean p:order="9999999" class="com.mycompany.workflow.checkout.NotifyExternalInventorySystem" /> 
     </list> 
    </property> 
</bean> 

A partir de Feuillu 3.0, toute modification du haricot blCheckoutWorkflow subissent le traitement fusion XML Feuillu (qui fusionne ids de haricots comme liste de blCheckoutWorkflow de activities). Dans votre cas, puisque le DecrementInventoryActivity est déjà défini dans le fichier XML du framework principal et que votre définition de blCheckoutWorkflow est fusionnée, le résultat final est 2 instances du DecrementInventoryActivity.