Tuesday, 31 March 2015

Sitecore Explore Mode - Configuration

This post give's an overview of the configuration associated with Explore Mode (formerly the Experience Explorer) in Sitecore 8. It's the first in an ongoing series taking a deep dive into this feature. For more general information, read my introductory post.

Post Last updated for Sitecore 8.0 (rev. 141212)

The configuration for Explore mode is supplied (as far as I can tell) from 2 files, Sitecore.ExperienceExplorer.config and Sitecore.ExperienceExplorer.Speak.Requests.config.


Settings


ExperienceModePipeline.Enabled 
This is a global setting for for enabling/disabling Explore Mode. You can use to this to ensure that Sitecore does not needlessly run processors related to this feature in content delivery environments. By default, Explore Mode is enabled.

ExperienceExplorer.GeoTestingIp
This setting specifies an IP address to use when testing Maxmind connectivity.

ExperienceExplorer.ModelPopulationThreshold
This setting specifies number of milliseconds that Sitecore will allow before logging a "Long running operation" warning when populating a model.

Query String Settings
As part of the experience editor, Explore mode makes heavy use of query string parameters, and the keys used for these parameters can be specified via configuration settings. Right now, I'm struggling to think of a reason why I would ever need to change the defaults, but I'm all for configurability!

  • ExperienceExplorer.AddOnQueryStringKey - Default value is "sc_expview",
  • ExperienceExplorer.ContextDeviceIdQueryStringKey - Default value is "sc_exp_deviceid"
  • ExperienceExplorer.ContextItemIdQueryStringKey - Default value is "sc_exp_itemid".
  • ExperienceExplorer.PresetQueryStringKey - Default value is "sc_preset".
  • ExperienceExplorer.PreviewDateQueryStringKey - Default value is "sc_preview".
  • ExperienceExplorer.VisitorIdQueryStringKey - Default value is "sc_visitorid".


Pipelines


Explore mode has to put a lot of effort in to circumventing the normal course of a request. So as you might expect, it inject its own processors in to a number of different pipelines. (Note, I've documented some of these already, and will complete the rest as this blog series progresses).

httpRequestBegin
  • EnableExperienceModePipeline
  • PresetResolverPipeline
  • DevicePipeline
  • PreviewResolverPipeline
  • ContextItemPipeline
  • ExecuteRequest

httpRequestEnd
  • LoginVirtualUser
  • RetrieveRenderingsPipeline

renderLayout
  • InjectExperienceExplorerControlPipeline

getContentEditorWarnings
  • GetMultiVariantWarnings

getItemPersonalizationVisibility
  • ResolveExplorerPresetsRoot

processItem
  • InteractionValuePipeline
  • ProfilesPipeline

commitSession
  • PreventSessionCommitPipeline

startTracking

getPageEditorNotifications
  • GetExperienceExplorerNotification


Commands


One command, experienceexplorer:expview is defined for Explore Mode, which is fired when you click the "Explore" button in the Experience Editor. It the reloads the current page in Explore Mode if the following criteria are met:

  • The ExperienceModePipeline.Enabled configuration setting must be set to true;
  • The context definition must not specifiy the enableExperienceExplorer property as false (if the property isn't present, it's assumed value is true).


Watchers


Sitecore.ExperienceExplorer.config adds a xaml file watcher to the path "/sitecore/shell/override". I have to say I'm a little confused about this one. There's nothing about the file types or path in the configuration that is specific to Explore Mode. My guess is that it has a more generic purpose and somehow ended up in this file mistakenly. If you know better, let me know.



Speak Request Processors


The Sitecore.ExperienceExplorer.Speak.Requests.config include file contains 2 declarations of Speak request processors used within Explore mode.

ExperienceExplorer.ExplorerMode.CanExplore 
This request processor supplies a boolean value to indicate whether or not the current request is eligible to use explore mode. To return true, it has the following requirements.

  • The user must be an administrator.
  • The user must be a member of the role "sitecore\\Experience Explorer".
  • Explore mode must be enabled for the site.
  • The Explore Mode pipeline must be enabled.

ExperienceExplorer.ExplorerMode.Explore
The request processor activates Explore Mode and converts the current request's URL in to one that can be used while in that mode. The steps involved in activation are:

  • Apply the current user to the Experience Explorer model (ModuleManager.SetRealUser).
  • Activate the experience editor's Preview mode (WebEditCommand.ActivatePreview).
  • Set a flag indicating that the Explore button was clicked (ModuleManager.IsExpButtonClicked).
  • Append the following querystring paramters to the URL: "sc_expview=1", "sc_mode=normal", "sc_usesitestartpath=true"


This details within this post will be more fleshed out as my own understanding of the system improves.