public override DataUri[] GetItemsInWorkflowState(Sitecore.Workflows.WorkflowInfo info, CallContext context) { Guid workflowStateId = Guid.Empty; if (Guid.TryParse(info.StateID, out workflowStateId)) { var items = Provider.GetItemsInWorkflowState(workflowStateId); var result = items.Select( x => x.FieldValues.Where(y => y.Id == FieldIDs.WorkflowState.Guid) .Select(y => new DataUri(new ID(x.Id), LanguageManager.GetLanguage(y.Language), new Version(y.Version ?? 1))) ); if (result.Any()) { return(result.Aggregate((x, y) => (x ?? new DataUri[] {}).Concat(y ?? new DataUri[] {})).ToArray()); } else { return new DataUri[] { } }; } else { return new DataUri[] {} }; } }
/// <summary> /// Retrieve the current workflow state for the Sitecore item /// </summary> /// <param name="item"></param> /// <returns></returns> private static string GetWorkflowState(Item item) { Sitecore.Workflows.WorkflowInfo info = item.Database.DataManager.GetWorkflowInfo(item); return((info != null) ? info.StateID : String.Empty); }