public List<TasksItem> GetTasksItems(string k2User, int? page, int? pageSize, out int totalCount, string procInstID = null, string folio = null, DateTime? startDate = null, DateTime? endDate = null, string[] processNames = null, Dictionary<string, string> sorting = null) { k2User = K2User.ApplySecurityLabel(k2User); totalCount = 0; Client.WorklistCriteria filter = new Client.WorklistCriteria(); filter.Platform = "ASP"; filter.Count = (pageSize == null || pageSize <= 0) ? -1 : pageSize.Value; filter.StartIndex = (page == null || page <= 0) ? 0 : (page.Value - 1) * filter.Count; filter.AddFilterField(Client.WCField.WorklistItemStatus, Client.WCCompare.Equal, Client.WorklistStatus.Available); filter.AddFilterField(Client.WCLogical.Or, Client.WCField.WorklistItemStatus, Client.WCCompare.Equal, Client.WorklistStatus.Open); filter.AddFilterField(Client.WCLogical.And, Client.WCField.WorklistItemOwner, "Me", Client.WCCompare.Equal, Client.WCWorklistItemOwner.Me); //This will return all the user’s items filter.AddFilterField(Client.WCLogical.Or, Client.WCField.WorklistItemOwner, "Other", Client.WCCompare.Equal, Client.WCWorklistItemOwner.Other); //This will return all the user’s shared items if (startDate != null) filter.AddFilterField(Client.WCLogical.And, Client.WCField.ProcessStartDate, Client.WCCompare.GreaterOrEqual, startDate); if (endDate != null) filter.AddFilterField(Client.WCLogical.And, Client.WCField.ProcessStartDate, Client.WCCompare.LessOrEqual, endDate); if (!string.IsNullOrEmpty(folio)) filter.AddFilterField(Client.WCLogical.And, Client.WCField.ProcessFolio, Client.WCCompare.Like, string.Format("%{0}%", folio)); if (!string.IsNullOrEmpty(procInstID)) filter.AddFilterField(Client.WCLogical.And, Client.WCField.ProcessID, Client.WCCompare.Equal, procInstID); if (processNames != null && processNames.Any()) { int index = 0; foreach (var processName in processNames) { index++; if (index == 1) filter.AddFilterField(Client.WCLogical.And, Client.WCField.ProcessFullName, Client.WCCompare.Equal, processName); else filter.AddFilterField(Client.WCLogical.Or, Client.WCField.ProcessFullName, Client.WCCompare.Equal, processName); } } if (sorting == null || !sorting.Any()) filter.AddSortField(Client.WCField.EventStartDate, Client.WCSortOrder.Descending); else { foreach (var field in sorting.Keys) { filter.AddSortField((Client.WCField)Enum.Parse(typeof(Client.WCField), field), (Client.WCSortOrder)Enum.Parse(typeof(Client.WCSortOrder), sorting[field])); } } var worklit = Runtime.Worklist.OpenWorklist(_k2ConnectionString, k2User, new ArrayList(), filter, false, false, 0, null); List<TasksItem> tasks = new List<TasksItem>(); foreach (Client.WorklistItem item in worklit) { Actions actions = new Actions(); foreach (Client.Action act in item.Actions) { var action = new ApproveAction(); action.Name = act.Name; action.MetaData = act.MetaData; actions.Add(action); } TasksItem task = new TasksItem() { ProcInstID = item.ProcessInstance.ID, ActivityName = item.ActivityInstanceDestination.Name, Destination = K2User.DelApplySecurityLabel(k2User), Folio = item.ProcessInstance.Folio, Originator = item.ProcessInstance.Originator.FQN, //OriginatorDisName = item.ProcessInstance.Originator.DisplayName, SN = item.SerialNumber, StartDate = item.ProcessInstance.StartDate.ToString("yyyy-MM-dd HH:mm"), SharedUser = item.AllocatedUser.Equals(k2User, StringComparison.OrdinalIgnoreCase) ? null : K2User.DelApplySecurityLabel(item.AllocatedUser), //判断是否SharedUser Actions = actions }; tasks.Add(task); } return tasks; }
public static WorklistItem ConvertToWFWorklistItem(Client.WorklistItem origObj) { if (origObj == null) { return null; } WorklistItem wlItem = new WorklistItem(); wlItem.ID = origObj.ID; wlItem.ProcInstID = origObj.ProcessInstance.ID; wlItem.ActInstDestID = origObj.ActivityInstanceDestination.ID; wlItem.ActInstID = origObj.ActivityInstanceDestination.ActInstID; //wlItem.ProcID = origObj.ProcID; wlItem.ActID = origObj.ActivityInstanceDestination.ActID; wlItem.EventID = origObj.EventInstance.ID; wlItem.Destination = origObj.AllocatedUser; wlItem.AssignedDate = origObj.ActivityInstanceDestination.StartDate.ToString("yyyy-MM-dd HH:mm"); wlItem.StartDate = origObj.ProcessInstance.StartDate.ToString("yyyy-MM-dd HH:mm"); //wlItem.FinishDate = origObj.FinishDate; wlItem.Status = (WorklistStatus)(int)origObj.Status; //wlItem.ProfileID = origObj.ProfileID; //wlItem.TenantID = origObj.TenantID; wlItem.ActivityName = origObj.ActivityInstanceDestination.Name; wlItem.ActivityDispName = origObj.ActivityInstanceDestination.Name; wlItem.FullName = origObj.ProcessInstance.FullName; wlItem.ProcDispName = origObj.ProcessInstance.Name; //wlItem.Originator = origObj.; wlItem.Folio = origObj.ProcessInstance.Folio; //wlItem.FlowNumber = origObj.ProcessInstance.; wlItem.ProcInstStatus = (ProcInstStatus)(int)origObj.ProcessInstance.Status1; wlItem.ProcStartDate = origObj.ProcessInstance.StartDate.ToString("yyyy-MM-dd HH:mm"); wlItem.SN = origObj.SerialNumber; wlItem.Data = origObj.Data; if (origObj.ProcessInstance != null) { wlItem.ProcessInstance = ConvertToWFProcessInstance(origObj.ProcessInstance, true); } foreach (Client.Action origAction in origObj.Actions) { ApproveAction action = new ApproveAction(); action.Name = origAction.Name; action.MetaData = origAction.MetaData; //action.WorklistItem = wlItem; wlItem.Actions.Add(action); } return wlItem; }
private WorklistItem ToWorklistItem(string k2User, Client.WorklistItem item, bool includeInstanceDataFields = false, bool includeActivityDataFields = false, bool includeItemActions = false) { if (item == null) return null; var wlItem = new Tasks.Service.Dto.WorklistItem(); wlItem.ID = item.ID; wlItem.ProcInstID = item.ProcessInstance.ID; wlItem.ActInstDestID = item.ActivityInstanceDestination.ID; wlItem.ActInstID = item.ActivityInstanceDestination.ActInstID; wlItem.ActID = item.ActivityInstanceDestination.ActID; wlItem.EventID = item.EventInstance.ID; wlItem.Destination = K2User.DelApplySecurityLabel(item.AllocatedUser); wlItem.AssignedDate = item.ActivityInstanceDestination.StartDate.ToString("yyyy-MM-dd HH:mm"); wlItem.StartDate = item.EventInstance.StartDate.ToString("yyyy-MM-dd HH:mm"); wlItem.Status = (Tasks.Service.Dto.WorklistStatus)(int)item.Status; wlItem.ActivityName = item.ActivityInstanceDestination.Name; wlItem.ActivityDispName = item.ActivityInstanceDestination.Name; wlItem.FullName = item.ProcessInstance.FullName; wlItem.ProcDispName = item.ProcessInstance.Name; wlItem.Folio = item.ProcessInstance.Folio; wlItem.ProcInstStatus = (ProcInstStatus)(int)item.ProcessInstance.Status1; wlItem.ProcStartDate = item.ProcessInstance.StartDate.ToString("yyyy-MM-dd HH:mm"); wlItem.SN = item.SerialNumber; wlItem.Data = item.Data; wlItem.Originator = K2User.DelApplySecurityLabel(item.ProcessInstance.Originator.FQN); if (!item.AllocatedUser.Equals(k2User, StringComparison.OrdinalIgnoreCase)) { wlItem.Data += "&SharedUser=" + item.AllocatedUser; } if (item.ProcessInstance != null) { wlItem.ProcessInstance = ToProcessInstance(item.ProcessInstance, includeInstanceDataFields); } if (includeActivityDataFields) { var actDataFields = new Dictionary<string, object>(); foreach (Client.DataField field in item.ActivityInstanceDestination.DataFields) { try { if (actDataFields.ContainsKey(field.Name)) actDataFields[field.Name] = field.Value; else actDataFields.Add(field.Name, field.Value); } catch (Exception) { continue; } } wlItem.ActivityDataFields = actDataFields; } if (includeItemActions) { foreach (Client.Action act in item.Actions) { var action = new ApproveAction(); action.Name = act.Name; action.MetaData = act.MetaData; //action.WorklistItem = wlItem; wlItem.Actions.Add(action); } } return wlItem; }
public static WorklistItem ConvertToWFWorklistItem(ServiceContext context, Client.WorklistItem origObj) { if (origObj == null) { return null; } WorklistItem wlItem = new WorklistItem(); wlItem.ID = origObj.ID; wlItem.ProcInstID = origObj.ProcessInstance.ID; wlItem.ActInstDestID = origObj.ActivityInstanceDestination.ID; wlItem.ActInstID = origObj.ActivityInstanceDestination.ActInstID; //wlItem.ProcID = origObj.ProcID; wlItem.ActID = origObj.ActivityInstanceDestination.ActID; wlItem.EventID = origObj.EventInstance.ID; wlItem.Destination = origObj.AllocatedUser; wlItem.AssignedDate = origObj.ActivityInstanceDestination.StartDate.ToString("yyyy-MM-dd HH:mm"); wlItem.StartDate = origObj.ProcessInstance.StartDate.ToString("yyyy-MM-dd HH:mm"); //wlItem.FinishDate = origObj.FinishDate; wlItem.Status = (WorklistStatus)(int)origObj.Status; //wlItem.ProfileID = origObj.ProfileID; //wlItem.TenantID = origObj.TenantID; wlItem.ActivityName = origObj.ActivityInstanceDestination.Name; wlItem.ActivityDispName = origObj.ActivityInstanceDestination.Name; wlItem.FullName = origObj.ProcessInstance.FullName; wlItem.ProcDispName = origObj.ProcessInstance.Name; //Added By:BingYi 2014-07-17 Fixed:The Originator should be included in worklist item. wlItem.Originator = origObj.ProcessInstance.Originator.Name; wlItem.Folio = origObj.ProcessInstance.Folio; //wlItem.FlowNumber = origObj.ProcessInstance.; wlItem.ProcInstStatus = (ProcInstStatus)(int)origObj.ProcessInstance.Status1; wlItem.ProcStartDate = origObj.ProcessInstance.StartDate.ToString("yyyy-MM-dd HH:mm"); wlItem.SN = origObj.SerialNumber; wlItem.Data = origObj.Data; if (origObj.AllocatedUser.ToLower() != (K2User.ApplySecurityLabel(context.UserName)).ToLower()) { wlItem.Data += "&SharedUser=" + origObj.AllocatedUser; } if (origObj.ProcessInstance != null) { wlItem.ProcessInstance = ConvertToWFProcessInstance(origObj.ProcessInstance, true); } var activityDataFields = new Dictionary<string, object>(); foreach (Client.DataField item in origObj.ActivityInstanceDestination.DataFields) { if (activityDataFields.ContainsKey(item.Name)) activityDataFields[item.Name] = item.Value; else activityDataFields.Add(item.Name, item.Value); } wlItem.ActivityDataFields = activityDataFields; foreach (Client.Action origAction in origObj.Actions) { ApproveAction action = new ApproveAction(); action.Name = origAction.Name; action.MetaData = origAction.MetaData; //action.WorklistItem = wlItem; wlItem.Actions.Add(action); } return wlItem; }