public override void Execute() { bool isBrowseMode; string screenName; Guid currentWorkflowState; if (!GetRootState(out screenName, out isBrowseMode, out currentWorkflowState)) { return; } string oldScreen = null; if (isBrowseMode) { NavigationData.LoadScreenHierarchy(screenName + "_OLD", out oldScreen); } NavigationData.SaveScreenHierarchy(screenName, isBrowseMode ? oldScreen : Consts.USE_BROWSE_MODE, !isBrowseMode /* backup when switching to browse mode */); IWorkflowManager workflowManager = ServiceRegistration.Get <IWorkflowManager>(); workflowManager.StartBatchUpdate(); workflowManager.NavigatePopToState(currentWorkflowState, true); workflowManager.NavigatePush(currentWorkflowState); workflowManager.EndBatchUpdate(); }