Class WorkflowTransitionHelper
java.lang.Object
com.broadleafcommerce.data.tracking.core.transition.WorkflowTransitionHelper
- All Implemented Interfaces:
WorkflowTransitionService
Helper class for executing a
Trackable entity promotion and persisting state after.- Author:
- Jeff Fischer
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final longstatic final intstatic final Stringprotected longprotected long -
Constructor Summary
ConstructorsConstructorDescriptionWorkflowTransitionHelper(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
Modifier and TypeMethodDescriptionprotected 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 failurelockTemporarily(TransitionRequest transitionRequest, String type) Attempt to temporarily lock on the entity identified in the transition requestprotected 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 voidDeprecated.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.withEventPublisher(org.springframework.context.ApplicationEventPublisher publisher) withPropagationManager(PropagationManager propagationManager) withTypeFactory(com.broadleafcommerce.common.extension.TypeFactory typeFactory)
-
Field Details
-
LOCK_CONCEPT_KEY
- See Also:
-
DEFAULT_LOCK_RETRY_INTERVAL
public static final long DEFAULT_LOCK_RETRY_INTERVAL- See Also:
-
DEFAULT_LOCK_RETRY_MAX_ATTEMPTS
public static final int DEFAULT_LOCK_RETRY_MAX_ATTEMPTS- See Also:
-
lockRetryInterval
protected long lockRetryInterval -
lockRetryMaxAttempts
protected long lockRetryMaxAttempts
-
-
Constructor Details
-
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 Details
-
withSingleIndexRequestMessageFactory
public WorkflowTransitionHelper withSingleIndexRequestMessageFactory(SingleIndexRequestMessageFactory factory) -
withPropagationManager
-
withTypeFactory
public WorkflowTransitionHelper withTypeFactory(com.broadleafcommerce.common.extension.TypeFactory typeFactory) -
withEventPublisher
public WorkflowTransitionHelper withEventPublisher(org.springframework.context.ApplicationEventPublisher publisher) -
promote
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
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
Inform the system via a message of typePersistenceProducer.TYPEthat an entity has been persisted.- Parameters:
domain- the entity that was persisted
-
rebase
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
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
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
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
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
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
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
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
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
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
-
lockTemporarily
Attempt to temporarily lock on the entity identified in the transition request- Parameters:
transitionRequest- The transition request whose targeted entity should be locked ontype- The type of transition- Returns:
- The lock token, if the lock is successful
-
DefaultPropagationHandler.