/// <summary>
        /// Executes the logic for this workflow activity
        /// </summary>
        protected override void InternalExecute()
        {
            var itemUri = this.ItemUri.Get(ActivityContext);
            var itemId  = this.ItemId.Get(ActivityContext);

            System.Uri result;
            switch (this.Action)
            {
            case GetWebAccessUrlAction.BuildDetails:
                result = WebAccess.GetBuildDetailsUri(this.ProjectCollection, itemUri);
                break;

            case GetWebAccessUrlAction.WorkItemEditor:
                result = WebAccess.GetWorkItemEditorUri(this.ProjectCollection, itemId);
                break;

            default:
                throw new ArgumentException("Action not supported");
            }

            this.Result.Set(this.ActivityContext, result);
        }