/// <summary> /// Builds the work item. /// </summary> /// <param name="projectName">The project name.</param> /// <param name="workItemTypeName">Name of the work item type.</param> /// <param name="fieldValues">The field values.</param> /// <returns>IWorkItem.</returns> public IWorkItem BuildWorkItem(string projectName, string workItemTypeName, IReadOnlyList <KeyValuePair <string, object> > fieldValues) { Dictionary <string, object> dictionary = fieldValues.ToDictionary(field => field.Key, field => field.Value); IWorkItemStore workItemStore = WorkItemStore(); IProject project = workItemStore.Projects[projectName]; IWorkItemTypeCollection workItemTypes = project.WorkItemTypes; IWorkItemType workItemType = null; foreach (IWorkItemType entry in workItemTypes) { if (entry.Name == workItemTypeName) { workItemType = entry; } } var workItem = new WorkItem(WorkItemTypeWrapper.GetInstance(workItemType)); foreach (KeyValuePair <string, object> pair in dictionary) { string fieldName = pair.Key; object fieldValue = pair.Value; workItem[fieldName] = fieldValue; } return(WorkItemWrapper.GetWrapper(workItem)); }
public void ReadAllProperties_UnitTest() { IWorkItem workItem = GetTestWorkItem(); FieldCollection real = WorkItemWrapper.GetInstance(workItem).Fields; IFieldCollection instance = FieldCollectionWrapper.GetWrapper(real); ReadAllProperties(typeof(IFieldCollection), instance); }
public void ObjectProperties_UnitTest() { WorkItemWrapper workItem = GetTargetWorkItem(194); ILinkCollection links1 = ((IWorkItem)workItem).Links; ILinkCollection links2 = ((IWorkItem)workItem).Links; Assert.AreEqual(links1.GetType(), links2.GetType()); }
/// <summary> /// Gets the test instance. /// </summary> /// <returns>IWorkItem.</returns> internal static IWorkItem GetTestWorkItem() { WorkItemType workItemType = FindWorkItemType("Task"); var realInstance = new WorkItem(workItemType); IWorkItem instance = WorkItemWrapper.GetWrapper(realInstance); instance.Title = "Dummy Work IItem Created by Unit Tests of WorkItemWrapper"; return(instance); }
partial void SyncWorkItem_PreCondition(IWorkItem instance, ref IWorkItemSyncData syncData) { IWorkItemRowSets rowSets = new MockIWorkItemRowSets(); int dataVersions = instance.InternalVersion; WorkItem realWorkItem = WorkItemWrapper.GetInstance(instance); var realSyncData = new WorkItemSyncData(rowSets, dataVersions, realWorkItem); syncData = WorkItemSyncDataWrapper.GetWrapper(realSyncData); }
static partial void InstanceFactory(ref WorkItemWrapper instance, string callerName) { if (callerName == "SyncWorkItem_UnitTest") { var store = WorkItemStoreWrapper_UnitTests.GetRealInstance(); const string wiql = "SELECT * FROM WorkItems WHERE [System.TeamProject] = 'RestPlaypen' ORDER BY [System.Id] "; var workItems = store.Query(wiql); var workItem = workItems[0]; instance = (WorkItemWrapper)WorkItemWrapper.GetWrapper(workItem); } }
internal static WorkItemWrapper GetInstance([CallerMemberName] string callerName = "") { WorkItem real = default(WorkItem); RealInstanceFactory(ref real); var instance = (WorkItemWrapper)WorkItemWrapper.GetWrapper(real); InstanceFactory(ref instance, callerName); if (instance == null) { Assert.Inconclusive("Could not Create Test Instance"); } return(instance); }
public void UpdateWorkItem(SysWorkItem wi, SysProcessInstance pi, SysActivityInstance ai) { this.UpdateWorkItemBaseState(wi); this.Context.Update(wi); if (wi.Status == 1) { CustomWorkItemHandler handler = new CustomWorkItemHandler(this.Context); int wiBaseId = wi.WorkItemBaseId.Value; int workItemId = wi.WorkItemId; string wwfBookmarkId = wi.WwfBookmarkId; handler.OnWorkItemCompleted(wiBaseId, workItemId, wwfBookmarkId); if (ai.Activity.ActivityType == 6) { WorkItemWrapper wrapper = new WorkItemWrapper(this, wi, pi); int? result = new int?(CompleteWorkItemMessage_Approve.ConvertBoolToApproveResult(wrapper.ApproveResult.Value)); new ActivityRemindHandler(this, pi, ai, ActivityRemindUseTimeType.WorkItemFinished, wi, result).Execute(); } else { new ActivityRemindHandler(this, pi, ai, ActivityRemindUseTimeType.WorkItemFinished, wi, null).Execute(); } } }
static partial void InstanceFactory(ref WorkItemWrapper instance, [CallerMemberName] string callerName = "");
/// <summary> /// Gets the work item. /// </summary> /// <param name="id">The identifier.</param> /// <returns>WorkItemWrapper.</returns> internal IWorkItem GetWorkItem(int id) { return(WorkItemWrapper.GetWrapper(r_Instance.GetWorkItem(id))); }
private bool TryCompleteGroup(SysWorkItemApproveGroup group, out bool approve_result) { approve_result = false; ICollection <SysWorkItem> workItems = group.WorkItems; Dictionary <int, WorkItemWrapper> dictionary = new Dictionary <int, WorkItemWrapper>(workItems.Count + 10); foreach (SysWorkItem item in workItems) { WorkItemWrapper wrapper = new WorkItemWrapper(base.PICacheFactory, item, base.PI); dictionary.Add(item.WorkItemId, wrapper); } List <WorkItemWrapper> source = new List <WorkItemWrapper>(workItems.Count); foreach (KeyValuePair <int, WorkItemWrapper> pair in dictionary) { WorkItemWrapper wrapper2 = pair.Value; bool? isAdded = wrapper2.WorkItem.IsAdded; if (isAdded.HasValue ? isAdded.GetValueOrDefault() : false) { if (!wrapper2.WorkItem.ProxyWorkItemId.HasValue) { throw new ApplicationException("加签未设置代理工作项"); } wrapper2.Parent = dictionary[wrapper2.WorkItem.ProxyWorkItemId.Value]; wrapper2.Parent.AddItems.Add(wrapper2); } else { bool?isProxy = wrapper2.WorkItem.IsProxy; if (isProxy.HasValue ? isProxy.GetValueOrDefault() : false) { if (!wrapper2.WorkItem.ProxyWorkItemId.HasValue) { throw new ApplicationException("代理未设置代理工作项"); } wrapper2.Parent = dictionary[wrapper2.WorkItem.ProxyWorkItemId.Value]; wrapper2.Parent.ProxyItems.Add(wrapper2); } else { source.Add(wrapper2); } } } foreach (WorkItemWrapper wrapper3 in source) { wrapper3.TryCompleteDeeply(); } foreach (WorkItemWrapper wrapper5 in source) { wrapper5.CalResultDeeply(); } SysActivityParticipant participant = base.AI.Activity.ActivityParticipants.FirstOrDefault <SysActivityParticipant>(p => p.ActivityParticipantId == group.ActivityParticipantId); if (participant == null) { throw new ApplicationException("根据群组实例查找【活动参与人】失败"); } bool flag = false; if (participant.PassType == 1) { if (!participant.MinPassNum.HasValue) { participant.MinPassNum = 1; } if (participant.MinPassNum.Value <= 0) { participant.MinPassNum = 1; } int num = 0; int num2 = 0; int num3 = 0; foreach (WorkItemWrapper wrapper7 in source) { if (wrapper7.IsCompleted) { num3++; bool?approveResult = wrapper7.ApproveResult; if (approveResult.HasValue ? approveResult.GetValueOrDefault() : false) { num++; } if (wrapper7.ApproveResult.HasValue && !wrapper7.ApproveResult.Value) { num2++; } } } int num4 = participant.MinPassNum.Value; if (num3 >= source.Count) { flag = true; approve_result = num >= num4; return(flag); } bool?sumAfterAllComplete = base.AI.Activity.SumAfterAllComplete; if (sumAfterAllComplete.HasValue ? sumAfterAllComplete.GetValueOrDefault() : false) { return(false); } if (num >= num4) { flag = true; approve_result = true; return(flag); } if (num2 > (source.Count - num4)) { flag = true; approve_result = false; } return(flag); } if (participant.PassType == 2) { if (!participant.MinPassRatio.HasValue) { throw new ApplicationException("未指定最小通过率"); } if (participant.MinPassRatio <= 0.0) { throw new ApplicationException("最小通过率<=0, 它必须介于0-100之间(大于0,小于等于100"); } if (participant.MinPassRatio > 100.0) { throw new ApplicationException("最小通过率>100, 它必须介于0-100之间(大于0,小于等于100"); } int num5 = 0; int num6 = 0; int num7 = 0; int count = source.Count; foreach (WorkItemWrapper wrapper8 in source) { if (wrapper8.IsCompleted) { num7++; bool?nullable17 = wrapper8.ApproveResult; if (nullable17.HasValue ? nullable17.GetValueOrDefault() : false) { num5++; } if (wrapper8.ApproveResult.HasValue && !wrapper8.ApproveResult.Value) { num6++; } } } double num9 = participant.MinPassRatio.Value; if (num7 >= source.Count) { flag = true; approve_result = (num5 * 100.0) >= (count * num9); return(flag); } bool?nullable19 = base.AI.Activity.SumAfterAllComplete; if (nullable19.HasValue ? nullable19.GetValueOrDefault() : false) { return(false); } double num10 = 100.0; if ((num5 * num10) >= (count * num9)) { flag = true; approve_result = true; return(flag); } if (((1.0 * num6) / ((double)count)) > ((100.0 - num9) / 100.0)) { flag = true; approve_result = true; } return(flag); } WorkItemWrapper wrapper9 = source.FirstOrDefault <WorkItemWrapper>(p => p.IsCompleted && p.ApproveResult.HasValue); if (wrapper9 != null) { flag = true; approve_result = wrapper9.ApproveResult.Value; } return(flag); }