cancel
Showing results for 
Search instead for 
Did you mean: 

Starting workflow in interceptor

0 Kudos

I'm trying to start workflow from interceptor and it start's but the change i've made in model (the change that interceptor intercept) is not saved and hybris throws error:

 Caused by: de.hybris.platform.servicelayer.exceptions.ModelSavingException: already got modification listener de.hybris.platform.servicelayer.internal.converter
 .impl.ItemModelConverter$MyHistoryListenerAdapter@7891a582 - cannot set de.hybris.platform.servicelayer.internal.converter.impl.ItemModelConverter$MyHistoryList
 enerAdapter@220937a5
         at de.hybris.platform.servicelayer.internal.model.impl.DefaultModelService.saveAll(DefaultModelService.java:606)
         at de.hybris.platform.servicelayer.internal.model.impl.DefaultModelService.save(DefaultModelService.java:545)
         at de.hybris.platform.cockpit.services.impl.NewItemServiceImpl.createNewItemServiceLayer(NewItemServiceImpl.java:361)
         ... 46 more
 Caused by: java.lang.IllegalStateException: already got modification listener de.hybris.platform.servicelayer.internal.converter.impl.ItemModelConverter$MyHisto
 ryListenerAdapter@7891a582 - cannot set de.hybris.platform.servicelayer.internal.converter.impl.ItemModelConverter$MyHistoryListenerAdapter@220937a5
         at de.hybris.platform.servicelayer.internal.model.impl.ModelValueHistory.setListener(ModelValueHistory.java:177)
         at de.hybris.platform.servicelayer.internal.converter.impl.ItemModelConverter.addModelModificationListener(ItemModelConverter.java:408)
         at de.hybris.platform.servicelayer.internal.model.impl.DefaultModelContext.afterPersist(DefaultModelContext.java:99)
         at de.hybris.platform.servicelayer.internal.model.impl.ModelContextProxy.afterPersist(ModelContextProxy.java:105)
         at de.hybris.platform.servicelayer.internal.model.impl.DefaultModelService.postProcessJaloSavedItems(DefaultModelService.java:1033)
         at de.hybris.platform.servicelayer.internal.model.impl.DefaultModelService.doJaloPersistence(DefaultModelService.java:643)
         at de.hybris.platform.servicelayer.internal.model.impl.DefaultModelService.persistWrappers(DefaultModelService.java:970)
         at de.hybris.platform.servicelayer.internal.model.impl.DefaultModelService.performPersistenceOperations(DefaultModelService.java:623)
         at de.hybris.platform.servicelayer.internal.model.impl.DefaultModelService.saveAllInternal(DefaultModelService.java:617)
         at de.hybris.platform.servicelayer.internal.model.impl.DefaultModelService.saveAll(DefaultModelService.java:597)
         ... 48 more
 

And when i remove start of workflow from interceptor everything goes fine. Has anyone run into the same problem?

Accepted Solutions (1)

Accepted Solutions (1)

Former Member

Hi Michael,

I think this is because the two operations (workflow processing and model save) have to be asynchronuous and independent.

It would be better in your case to use events to trigger your workflow. Send an asynch event in the interceptor, an eventListener would listen to it and triggers the workflow.

Hope that helps.

Best Regards,

Amel.

0 Kudos

Thank you, that worked. It's still looks like bug, if you ask me.

Answers (0)