Class WorkflowTransitionHelper
- java.lang.Object
-
- com.broadleafcommerce.data.tracking.core.transition.WorkflowTransitionHelper
-
- All Implemented Interfaces:
WorkflowTransitionService
public class WorkflowTransitionHelper extends Object implements WorkflowTransitionService
Helper class for executing aTrackableentity promotion and persisting state after.- Author:
- Jeff Fischer
-
-
Field Summary
Fields Modifier and Type Field Description static StringLOCK_CONCEPT_KEY
-
Constructor Summary
Constructors Constructor Description WorkflowTransitionHelper(TrackableRepository<Trackable> repository, WorkflowMapper mapper, com.broadleafcommerce.common.messaging.repository.ResourceLockRepository<?,?> resourceLockRepository, com.broadleafcommerce.common.messaging.notification.NotificationManager notificationManager, WorkflowRequestCompletionNotifier completionNotifier, com.broadleafcommerce.common.messaging.notification.NotificationStateService notificationStateService, com.broadleafcommerce.common.messaging.notification.MessageSerializationHelper helper)WorkflowTransitionHelper(TrackableRepository<Trackable> repository, WorkflowMapper mapper, CommonCatalogService<Catalog> catalogService, com.broadleafcommerce.common.messaging.repository.ResourceLockRepository<?,?> resourceLockRepository, com.broadleafcommerce.common.messaging.notification.NotificationManager notificationManager, WorkflowRequestCompletionNotifier completionNotifier, com.broadleafcommerce.common.messaging.notification.NotificationStateService notificationStateService, com.broadleafcommerce.common.messaging.notification.MessageSerializationHelper helper)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected voidapplyDeployment(WorkflowDeployRequest request, Trackable target, Trackable original)Apply changes from an "original" entity to a target production entity (if any).protected voidapplyPromotion(WorkflowPromoteRequest request, Trackable target, Trackable original)Apply changes from an "original" entity to a target sandbox entity (if any).protected voidapplyReject(WorkflowRejectRequest request, Trackable target, Trackable original)Apply one or more changes related to a promotion from an "original" entity to a target user sandbox entity (if any).voiddeploy(WorkflowDeployRequest request)Perform the deployment, moving the requested item forward to production state.protected TempOverrideMapResponseevaluateForTemporaryOverride(WorkflowDeployRequest request, Trackable target, Trackable original)In the case where a change was propagated after deployment viaVendorSandboxPropagationHandler, temporary override state for an application can be created.protected booleanhandleRecordFailure(TransitionRequest request, Exception e)Handle failure to find the target record for the transitionprotected voidhandleTransitionFailure(TransitionRequest request, Trackable original, Exception e)Handle failure of a transition request and notify the messaging system of the failureprotected voidnotifyOfCompletion(Trackable domain)Inform the system via a message of typeWorkflowRequestCompletionProducer.TYPEthat transition processing is complete.protected voidnotifyOfPersistence(Trackable domain)Inform the system via a message of typePersistenceProducer.TYPEthat an entity has been persisted.voidpromote(WorkflowPromoteRequest request)Perform the promotion, moving the requested item forward in the workflowprotected voidpropagate(Trackable deployed, String parentCatalog, boolean isDelete, String propagationId)Deprecated.Only supportsDefaultPropagationHandler.protected voidpropagate(Trackable deployed, String parentCatalog, OperationType changeType, String propagationId)Given a deployed catalog discriminated change, recurse through versions of the entity in child catalogs and transfer the deployed changes using the process defined implementations ofPropagationHandler.voidrebase(WorkflowRebaseRequest request)Perform the rebase, bringing an original item up-to-date with missing changes from the target that were created by another user.voidreject(WorkflowRejectRequest request)Perform the reversal, move the requested changes backward in the workflow to the originating author's user state.voidrevert(WorkflowRevertRequest request)Perform the reversal, archiving the user state sandbox entity.protected voidupdateCompletionState(Trackable originalTrackable, Tracking advancedTracking, TransitionRequest transitionRequest, boolean success, Exception e)Setup the initialNotificationStateon aTrackableentity in regard to the sending status of theWorkflowRequestCompletionProducer.TYPEmessage for transition completion.protected voidupdatePersistenceState(Trackable trackable)Setup the initialNotificationStateon aTrackableentity in regard to the sending status of thePersistenceProducer.TYPEmessage for a persistence event.WorkflowTransitionHelperwithPropagationManager(PropagationManager propagationManager)WorkflowTransitionHelperwithSingleIndexRequestMessageFactory(SingleIndexRequestMessageFactory factory)WorkflowTransitionHelperwithTypeFactory(com.broadleafcommerce.common.extension.TypeFactory typeFactory)
-
-
-
Field Detail
-
LOCK_CONCEPT_KEY
public static final String LOCK_CONCEPT_KEY
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
WorkflowTransitionHelper
public WorkflowTransitionHelper(TrackableRepository<Trackable> repository, WorkflowMapper mapper, CommonCatalogService<Catalog> catalogService, com.broadleafcommerce.common.messaging.repository.ResourceLockRepository<?,?> resourceLockRepository, com.broadleafcommerce.common.messaging.notification.NotificationManager notificationManager, WorkflowRequestCompletionNotifier completionNotifier, com.broadleafcommerce.common.messaging.notification.NotificationStateService notificationStateService, com.broadleafcommerce.common.messaging.notification.MessageSerializationHelper helper)
-
WorkflowTransitionHelper
public WorkflowTransitionHelper(TrackableRepository<Trackable> repository, WorkflowMapper mapper, com.broadleafcommerce.common.messaging.repository.ResourceLockRepository<?,?> resourceLockRepository, com.broadleafcommerce.common.messaging.notification.NotificationManager notificationManager, WorkflowRequestCompletionNotifier completionNotifier, com.broadleafcommerce.common.messaging.notification.NotificationStateService notificationStateService, com.broadleafcommerce.common.messaging.notification.MessageSerializationHelper helper)
-
-
Method Detail
-
withSingleIndexRequestMessageFactory
public WorkflowTransitionHelper withSingleIndexRequestMessageFactory(SingleIndexRequestMessageFactory factory)
-
withPropagationManager
public WorkflowTransitionHelper withPropagationManager(PropagationManager propagationManager)
-
withTypeFactory
public WorkflowTransitionHelper withTypeFactory(com.broadleafcommerce.common.extension.TypeFactory typeFactory)
-
promote
@SuppressNotification("SINGLE_INDEX_REQUEST") public void promote(WorkflowPromoteRequest request)Description copied from interface:WorkflowTransitionServicePerform the promotion, moving the requested item forward in the workflow- Specified by:
promotein interfaceWorkflowTransitionService- Parameters:
request- The request for aTrackableentity promotion
-
updatePersistenceState
protected void updatePersistenceState(Trackable trackable)
Setup the initialNotificationStateon aTrackableentity in regard to the sending status of thePersistenceProducer.TYPEmessage for a persistence event.- Parameters:
trackable-Trackablethe entity which experienced a persistence event
-
notifyOfPersistence
protected void notifyOfPersistence(Trackable domain)
Inform the system via a message of typePersistenceProducer.TYPEthat an entity has been persisted.- Parameters:
domain- the entity that was persisted
-
rebase
@SuppressNotification("SINGLE_INDEX_REQUEST") public void rebase(WorkflowRebaseRequest request)Description copied from interface:WorkflowTransitionServicePerform the rebase, bringing an original item up-to-date with missing changes from the target that were created by another user. If the original has conflicting changes, those changes win.- Specified by:
rebasein interfaceWorkflowTransitionService- Parameters:
request- Perform the rebase, bringing an original item up-to-date with missing changes
-
deploy
@SuppressNotification("SINGLE_INDEX_REQUEST") public void deploy(WorkflowDeployRequest request)Description copied from interface:WorkflowTransitionServicePerform the deployment, moving the requested item forward to production state.- Specified by:
deployin interfaceWorkflowTransitionService- Parameters:
request- The request for aTrackableentity deployment
-
reject
@SuppressNotification("SINGLE_INDEX_REQUEST") public void reject(WorkflowRejectRequest request)Description copied from interface:WorkflowTransitionServicePerform the reversal, move the requested changes backward in the workflow to the originating author's user state.- Specified by:
rejectin interfaceWorkflowTransitionService- Parameters:
request- The request for aTrackableentity change rejection
-
revert
@SuppressNotification("SINGLE_INDEX_REQUEST") public void revert(WorkflowRevertRequest request)Description copied from interface:WorkflowTransitionServicePerform the reversal, archiving the user state sandbox entity.- Specified by:
revertin interfaceWorkflowTransitionService- Parameters:
request- The request for aTrackableentity change reversion
-
notifyOfCompletion
protected void notifyOfCompletion(Trackable domain)
Inform the system via a message of typeWorkflowRequestCompletionProducer.TYPEthat transition processing is complete.- Parameters:
domain- The entity that was transitioned
-
updateCompletionState
protected void updateCompletionState(Trackable originalTrackable, Tracking advancedTracking, TransitionRequest transitionRequest, boolean success, @Nullable Exception e)
Setup the initial
NotificationStateon aTrackableentity in regard to the sending status of theWorkflowRequestCompletionProducer.TYPEmessage for transition completion.NotificationStates are ack'ed on theoriginalTracking.- Parameters:
originalTrackable- The original item that was promoted in. This receives NotificationStatesadvancedTracking- the most updatedTrackingavailable. In the case of a promotion, this represents the promoted state. In the case of rebases, this is the same asoriginalTracking. Can be null if not available (like in a revert)transitionRequest- The initial request driving the transitionsuccess- Whether or not the transition was successful (or failed with an error)e- The exception that caused a failed transition, if applicable
-
handleTransitionFailure
protected void handleTransitionFailure(TransitionRequest request, Trackable original, Exception e)
Handle failure of a transition request and notify the messaging system of the failure- Parameters:
request- The transition requestoriginal- The entity targeted for transitione- The exception that occurred during the transition
-
applyReject
protected void applyReject(WorkflowRejectRequest request, Trackable target, Trackable original)
Apply one or more changes related to a promotion from an "original" entity to a target user sandbox entity (if any). In the case of no target, then clone and update the original to establish target state.- Parameters:
request- The request for aTrackableentity rejectiontarget- any available pre-existing target stateoriginal- The entity containing changes to reject
-
applyPromotion
protected void applyPromotion(WorkflowPromoteRequest request, Trackable target, Trackable original)
Apply changes from an "original" entity to a target sandbox entity (if any). In the case of no target (i.e. create flow), then clone and update the original to establish target state.Will emit
PersistenceProducer.TYPEandWorkflowRequestCompletionProducer.TYPEmessages after performing changes.- Parameters:
request- The request for aTrackableentity promotiontarget- any available pre-existing target stateoriginal- The entity containing changes to promote
-
applyDeployment
protected void applyDeployment(WorkflowDeployRequest request, Trackable target, Trackable original)
Apply changes from an "original" entity to a target production entity (if any). In the case of no target (i.e. create flow), then clone and update the original to establish target state.Will emit
PersistenceProducer.TYPEandWorkflowRequestCompletionProducer.TYPEmessages after performing changes.- Parameters:
request- The request for aTrackableentity deploymenttarget- any available pre-existing target stateoriginal- The entity to deploy
-
evaluateForTemporaryOverride
protected TempOverrideMapResponse evaluateForTemporaryOverride(WorkflowDeployRequest request, Trackable target, Trackable original)
In the case where a change was propagated after deployment viaVendorSandboxPropagationHandler, temporary override state for an application can be created. During subsequent deployment of that propagated application state, it is necessary to cleanup any temporary state that was introduced byVendorSandboxPropagationHandler. This method checks the request (specifically,WorkflowDeployRequest.isRemoveTemporaryOverride(), and also evaluates entity state to make a final determination viaTempOverrideMapResponse.- Parameters:
request- The deployment requesttarget- The state receiving deployment, if applicableoriginal- The state being transitioned from earlier promoted status- Returns:
- The evaluation results
-
propagate
protected void propagate(Trackable deployed, String parentCatalog, OperationType changeType, String propagationId)
Given a deployed catalog discriminated change, recurse through versions of the entity in child catalogs and transfer the deployed changes using the process defined implementations ofPropagationHandler.PropagationHandlerinstances are registered with Spring and ordered. The first instance capable of handling is used and others are ignored. This process is controlled by thePropagationManager.- Parameters:
deployed- The deployed item containing changes to propagateparentCatalog- The catalog whose children will be checked for propagation itemschangeType- The type of operation to be propagated (CREATE,UPDATE,DELETE)propagationId- An id that identifies changes as part of this propagation. SeeChangeDetail.getPropagationId().
-
propagate
@Deprecated protected void propagate(Trackable deployed, String parentCatalog, boolean isDelete, String propagationId)
Deprecated.Only supportsDefaultPropagationHandler. Usepropagate(Trackable, String, OperationType, String)instead for full propagation support.propagate(Trackable, String, OperationType, String)usage requiresbroadleaf.sandbox.propagation.enabledproperty be set to true.Given a deployed catalog discriminated change, recurse through versions of the entity in child catalogs and transfer the deployed changes using the process defined inWorkflowMapper.propagateMap(Trackable, Trackable, boolean, String).- Parameters:
deployed- The deployed item containing changes to propagateparentCatalog- The catalog whose children will be checked for propagation itemsisDelete- Whether or not the change is a deletionpropagationId- An id that identifies changes as part of this propagation. SeeChangeDetail.getPropagationId().
-
handleRecordFailure
protected boolean handleRecordFailure(TransitionRequest request, Exception e)
Handle failure to find the target record for the transition- Parameters:
request- The transition requeste- The exception that occurred during the fetch- Returns:
- Whether or not the message was successfully sent to the broker
-
-