Attaching elements
Step 12 – Implementing IActionExecutor Interface
The MyUrlActionExecutor implements the IActionExecutor interface.
public sealed class MyUrlActionExecutor : IActionExecutor { public FlowToken Execute( EntityToken entityToken, ActionToken actionToken, FlowControllerServicesContainer flowControllerServicesContainer) { string currentConsoleId = flowControllerServicesContainer. GetService<IManagementConsoleMessageService>().CurrentConsoleId; DataEntityToken dataEntityToken = entityToken as DataEntityToken; IPage page = dataEntityToken.Data as IPage; string url = string.Format("/MyUrlAction.aspx?pageId={0}", page.Id); ConsoleMessageQueueFacade.Enqueue(new OpenViewMessageQueueItem { Url = url, ViewId = Guid.NewGuid().ToString(), ViewType = ViewType.Main, Label = "My URL Action" }, currentConsoleId); return null; } }
And it only contains one method: Execute. We know that pages under our children are only going to have this action, so it’s pretty safe to get the page from the passed-on entity token. Then we enqueue a new message on the message queue and tell the client to open the given URL in a new document tab. We pass on the Id of the page to this aspx page in the query string.