예제 #1
0
        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;
        }
예제 #2
0
        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;
        }
예제 #3
0
        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;
        }
예제 #4
0
        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;
        }