public override void ServerToClient(WfResourceDescriptor server, ref WfClientResourceDescriptor client) { server.NullCheck("server"); if (client == null) { client = new WfClientActivityMatrixResourceDescriptor(); } WfClientActivityMatrixResourceDescriptor cmr = (WfClientActivityMatrixResourceDescriptor)client; WfActivityMatrixResourceDescriptor amr = (WfActivityMatrixResourceDescriptor)server; cmr.ExternalMatrixID = amr.ExternalMatrixID; foreach (SOARolePropertyDefinition spd in amr.PropertyDefinitions) { WfClientRolePropertyDefinition cpd = null; WfClientRolePropertyDefinitionConverter.Instance.ServerToClient(spd, ref cpd); cmr.PropertyDefinitions.Add(cpd); } foreach (SOARolePropertyRow sRow in amr.Rows) { WfClientRolePropertyRow cRow = null; WfClientRolePropertyRowConverter.Instance.ServerToClient(sRow, cmr.PropertyDefinitions, ref cRow); cmr.Rows.Add(cRow); } }
public void FilterAndMergeNotMatchedActivityMatrixAndApprovalMatrixTest() { SOARolePropertiesQueryParam queryParam = new SOARolePropertiesQueryParam(); queryParam.QueryName = "CostCenter"; queryParam.QueryValue = "1001"; WfActivityMatrixResourceDescriptor resource = ActivityMatrixHelper.PrepareActivityMatrixResourceDescriptor(); resource.Rows.ForEach(row => row.Values.FindByColumnName(SOARolePropertyDefinition.ActivityCodeColumn).Value = "NotMatched"); SOARolePropertyRowCollection activityRows = resource.Rows.Query(queryParam); int originalActivityCount = activityRows.Count; WfApprovalMatrix approvalMatrix = ApprovalMatrixHelper.PrepareApprovalMatrix(); SOARolePropertyRowCollection approvalRows = approvalMatrix.Rows.Query(queryParam); int originalApprovalCount = approvalMatrix.PropertyDefinitions.Count - 1; activityRows.MergeApprovalMatrix(resource.PropertyDefinitions, approvalRows, approvalMatrix.PropertyDefinitions); activityRows.AssertAndOutputMatrixOperators(); Assert.AreEqual(originalActivityCount + originalApprovalCount, activityRows.Count); }
public void ActivityMatrixWithNotifierTest() { WfActivityMatrixResourceDescriptor resource = ActivityMatrixHelper.PrepareActivityMatrixResourceDescriptor(); IWfProcessDescriptor processDesp = ProcessHelper.GetDynamicProcessDesp(resource); IWfProcess process = ProcessHelper.StartupProcess(processDesp, new Dictionary <string, object>() { { "CostCenter", "1001" }, { "PayMethod", "1" }, { "Age", 30 } }); Console.WriteLine(process.Activities.Count); WfOutputHelper.OutputMainStream(process); WfOutputHelper.OutputEveryActivities(process); Assert.AreEqual(5, process.Activities.Count); Assert.IsTrue(process.Descriptor.Activities["ND10"].EnterEventReceivers.Count > 0); Assert.IsTrue(process.Descriptor.Activities["ND20"].EnterEventReceivers.Count > 0); Assert.IsTrue(process.Descriptor.Activities["ND10"].LeaveEventReceivers.Count > 0); Assert.IsTrue(process.Descriptor.Activities["ND20"].LeaveEventReceivers.Count > 0); }
public override void ClientToServer(WfClientResourceDescriptor client, ref WfResourceDescriptor server) { client.NullCheck("client"); if (server == null) { server = new WfActivityMatrixResourceDescriptor(); } WfActivityMatrixResourceDescriptor amr = (WfActivityMatrixResourceDescriptor)server; WfClientActivityMatrixResourceDescriptor cmr = (WfClientActivityMatrixResourceDescriptor)client; amr.ExternalMatrixID = cmr.ExternalMatrixID; foreach (WfClientRolePropertyDefinition cpd in cmr.PropertyDefinitions) { SOARolePropertyDefinition spd = null; WfClientRolePropertyDefinitionConverter.Instance.ClientToServer(cpd, ref spd); amr.PropertyDefinitions.Add(spd); } foreach (WfClientRolePropertyRow cRow in cmr.Rows) { SOARolePropertyRow sRow = null; WfClientRolePropertyRowConverter.Instance.ClientToServer(cRow, amr.PropertyDefinitions, ref sRow); amr.Rows.Add(sRow); } }
public static WfActivityMatrixResourceDescriptor PrepareReservedActivityMatrixResourceDescriptor() { WfActivityMatrixResourceDescriptor resource = new WfActivityMatrixResourceDescriptor(); resource.PropertyDefinitions.CopyFrom(PrepareReservedPropertiesDefinition()); resource.Rows.CopyFrom(PrepareReservedRows(resource.PropertyDefinitions)); return(resource); }
private static WfActivityMatrixResourceDescriptor PrepareSampleActivityMatrixResourceDescriptor() { WfActivityMatrixResourceDescriptor resource = new WfActivityMatrixResourceDescriptor(); resource.PropertyDefinitions.CopyFrom(PrepareSamplePropertiesDefinition()); resource.Rows.CopyFrom(PrepareSampleRows(resource.PropertyDefinitions)); return(resource); }
public void SimpleServerActivityMatrixResourceDescriptorToClient() { WfActivityMatrixResourceDescriptor server = ProcessDescriptorHelper.GetServerActivityMatrixResourceDescriptor(); WfClientResourceDescriptor client = null; WfClientActivityMatrixResourceDescriptorConverter.Instance.ServerToClient(server, ref client); ((WfClientActivityMatrixResourceDescriptor)client).AreSame(server); }
public static WfActivityMatrixResourceDescriptor GetServerActivityMatrixResourceDescriptor() { WfActivityMatrixResourceDescriptor resource = new WfActivityMatrixResourceDescriptor(); resource.ExternalMatrixID = UuidHelper.NewUuidString(); resource.PropertyDefinitions.CopyFrom(PrepareServerPropertiesDefinition()); resource.Rows.CopyFrom(PrepareServerRows(resource.PropertyDefinitions)); return(resource); }
public void MergeMatchedOneActivityMatrixAndApprovalMatrixTest() { WfActivityMatrixResourceDescriptor resource = ActivityMatrixHelper.PrepareOneRowActivityMatrixResourceDescriptor(); WfApprovalMatrix approvalMatrix = ApprovalMatrixHelper.PrepareOneRowApprovalMatrixResourceDescriptor(); resource.MergeApprovalMatrix(approvalMatrix); Assert.AreEqual(approvalMatrix.PropertyDefinitions.Count - 1, resource.Rows.Count); resource.AssertAndOutputMatrixOperators(); }
/// <summary> /// 准备一个一行的内部包含动态资源的矩阵 /// </summary> /// <returns></returns> public static WfActivityMatrixResourceDescriptor PrepareDynamicActivityMatrixResourceDescriptor() { WfActivityMatrixResourceDescriptor resource = new WfActivityMatrixResourceDescriptor(); resource.PropertyDefinitions.CopyFrom(PreparePropertiesDefinition()); resource.Rows.Add(PrepareOneDynamicRow(resource.PropertyDefinitions)); resource.Rows.Add(PrepareTwoUsersDynamicRow(resource.PropertyDefinitions)); resource.Rows.Add(PrepareInvalidUserDynamicRow(resource.PropertyDefinitions)); return(resource); }
public static WfActivityMatrixResourceDescriptor PrepareEmptyActivityMatrixResourceDescriptorWithExternal() { WfActivityMatrixResourceDescriptor resource = PrepareActivityMatrixResourceDescriptor(); WfApprovalMatrix externalMatrix = ApprovalMatrixHelper.PrepareApprovalMatrix(); WfApprovalMatrixAdapter.Instance.Update(externalMatrix); resource.ExternalMatrixID = externalMatrix.ID; return(resource); }
public void ActiveMatrixResourceSerializationTest() { WfActivityMatrixResourceDescriptor expected = ActivityMatrixHelper.PrepareDynamicActivityMatrixResourceDescriptor(); string serializedData = SerializationHelper.SerializeObjectToString(expected, SerializationFormatterType.Binary); WfActivityMatrixResourceDescriptor actual = SerializationHelper.DeserializeStringToObject <WfActivityMatrixResourceDescriptor>(serializedData, SerializationFormatterType.Binary); Assert.AreEqual(expected.PropertyDefinitions.Count, actual.PropertyDefinitions.Count); Assert.AreEqual(expected.Rows.Count, actual.Rows.Count); Assert.AreEqual(expected.PropertyDefinitions.GetAllKeys().Count(), actual.PropertyDefinitions.GetAllKeys().Count()); }
public void AllReservedColumnsActivityMatrixQueryParamTest() { IWfProcessDescriptor processDesp = ProcessHelper.GetDynamicProcessDesp(ActivityMatrixHelper.PrepareReservedActivityMatrixResourceDescriptor()); IWfProcess process = ProcessHelper.StartupProcess(processDesp, new Dictionary <string, object>()); IWfActivityDescriptor normalActDesp = processDesp.Activities["NormalActivity"]; WfActivityMatrixResourceDescriptor resource = (WfActivityMatrixResourceDescriptor)normalActDesp.Resources[0]; SOARoleContext context = SOARoleContext.CreateContext(resource.PropertyDefinitions, process); context.QueryParams.Output(); }
public void MergeMatchedActivityMatrixAndApprovalMatrixTest() { WfActivityMatrixResourceDescriptor resource = ActivityMatrixHelper.PrepareActivityMatrixResourceDescriptor(); int originalCount = resource.Rows.Count; WfApprovalMatrix approvalMatrix = ApprovalMatrixHelper.PrepareApprovalMatrix(); resource.MergeApprovalMatrix(approvalMatrix); Assert.AreEqual(originalCount, resource.Rows.Count); resource.AssertAndOutputMatrixOperators(); }
private void ResponseExcelWorkBook(WfActivityMatrixResourceDescriptor activityMatrix, string fileName) { WorkBook workBook = WorkBook.CreateNew(); workBook.Sheets.Clear(); workBook.FillActivityMatrixResourceDescriptor(activityMatrix); Response.AppendExcelOpenXmlHeader(fileName); workBook.Save(Response.OutputStream); Response.End(); }
public static IWfProcessDescriptor GetDynamicProcessDesp() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor(); IWfActivityDescriptor normalActDesp = processDesp.Activities["NormalActivity"]; normalActDesp.Properties.SetValue("IsDynamic", true); WfActivityMatrixResourceDescriptor resource = PrepareActivityMatrixResourceDescriptor(); normalActDesp.Resources.Add(resource); return(processDesp); }
public void MergeNotMatchedOneActivityMatrixAndApprovalMatrixTest() { WfActivityMatrixResourceDescriptor resource = ActivityMatrixHelper.PrepareOneRowActivityMatrixResourceDescriptor(); int originalCount = resource.Rows.Count; resource.Rows[0].Values.FindByColumnName(SOARolePropertyDefinition.ActivityCodeColumn).Value = "NotMatched"; WfApprovalMatrix approvalMatrix = ApprovalMatrixHelper.PrepareOneRowApprovalMatrixResourceDescriptor(); resource.MergeApprovalMatrix(approvalMatrix); Assert.AreEqual(approvalMatrix.PropertyDefinitions.Count, resource.Rows.Count); resource.AssertAndOutputMatrixOperators(); }
public static IWfProcessDescriptor GetDynamicProcessDesp(WfActivityMatrixResourceDescriptor activityMatrixResource, string externalMatrixID = null) { IWfProcessDescriptor processDesp = CreateSimpleProcessDescriptor(); IWfActivityDescriptor normalActDesp = processDesp.Activities["NormalActivity"]; normalActDesp.Properties.SetValue("IsDynamic", true); WfActivityMatrixResourceDescriptor resource = activityMatrixResource; normalActDesp.Resources.Add(resource); resource.ExternalMatrixID = externalMatrixID; return(processDesp); }
public void ActiveMatrixResourceJsonSerializationTest() { WfActivityMatrixResourceDescriptor expected = ActivityMatrixHelper.PrepareActivityMatrixResourceDescriptor(); WfConverterHelper.RegisterConverters(); string serializedData = JSONSerializerExecute.Serialize(expected); Console.WriteLine(serializedData); WfActivityMatrixResourceDescriptor actual = JSONSerializerExecute.Deserialize <WfActivityMatrixResourceDescriptor>(serializedData); Assert.AreEqual(expected.PropertyDefinitions.Count, actual.PropertyDefinitions.Count); Assert.AreEqual(expected.Rows.Count, actual.Rows.Count); Assert.AreEqual(expected.PropertyDefinitions.GetAllKeys().Count(), actual.PropertyDefinitions.GetAllKeys().Count()); }
protected void UploadActivityMatrixProgress(HttpPostedFile file, UploadProgressResult result) { var fileType = Path.GetExtension(file.FileName).ToLower(); if (fileType != ".xlsx") { throw new SystemSupportException("'{0}' 必须是xlsx文件。"); } WorkBook workBook = WorkBook.Load(file.InputStream); WfActivityMatrixResourceDescriptor matrix = workBook.ToActivityMatrixResourceDescriptor("Matrix", "A3"); result.Data = JSONSerializerExecute.Serialize(matrix); result.DataChanged = true; result.CloseWindow = true; }
public void ActivityMatrixQueryParamMismatchProcessTest() { IWfProcessDescriptor processDesp = ProcessHelper.GetDynamicProcessDesp(); IWfProcess process = ProcessHelper.StartupProcess(processDesp, new Dictionary <string, object>()); IWfActivityDescriptor normalActDesp = processDesp.Activities["NormalActivity"]; WfActivityMatrixResourceDescriptor resource = (WfActivityMatrixResourceDescriptor)normalActDesp.Resources[0]; SOARoleContext context = SOARoleContext.CreateContext(resource.PropertyDefinitions, process); context.QueryParams.Output(); Assert.AreEqual(3, context.QueryParams.Count); Assert.IsNull(context.QueryParams[0].QueryValue); Assert.IsNull(context.QueryParams[1].QueryValue); Assert.IsNull(context.QueryParams[2].QueryValue); }
public void SameActivitySNActivityMatrixTest() { WfActivityMatrixResourceDescriptor resource = ActivityMatrixHelper.PrepareSameSNActivityMatrixResourceDescriptor(); IWfProcessDescriptor processDesp = ProcessHelper.GetDynamicProcessDesp(resource, string.Empty); IWfProcess process = ProcessHelper.StartupProcess(processDesp, new Dictionary <string, object>() { { "CostCenter", "1001" }, { "PayMethod", "1" }, { "Age", 30 } }); Console.WriteLine(process.Activities.Count); WfOutputHelper.OutputMainStream(process); WfOutputHelper.OutputEveryActivities(process); Assert.AreEqual(4, process.Activities.Count); }
public void FilterAndMergeEmptyActivityMatrixAndApprovalMatrixTest() { WfActivityMatrixResourceDescriptor resource = new WfActivityMatrixResourceDescriptor(); SOARolePropertiesQueryParam queryParam = new SOARolePropertiesQueryParam(); queryParam.QueryName = "CostCenter"; queryParam.QueryValue = "1001"; WfApprovalMatrix approvalMatrix = ApprovalMatrixHelper.PrepareApprovalMatrix(); SOARolePropertyRowCollection approvalRows = approvalMatrix.Rows.Query(queryParam); resource.Rows.MergeApprovalMatrix(resource.PropertyDefinitions, approvalRows, approvalMatrix.PropertyDefinitions); //输出的只有RowNumber。因为活动矩阵没有列 resource.Rows.AssertAndOutputMatrixOperators(); Assert.AreEqual(3, resource.Rows.Count); }
public void ActivityMatrixWithDynamicActivityTest() { WfActivityMatrixResourceDescriptor resource = ActivityMatrixHelper.PrepareDynamicActivityMatrixResourceDescriptor(); IWfProcessDescriptor processDesp = ProcessHelper.GetDynamicProcessDesp(resource, string.Empty); IWfProcess process = ProcessHelper.StartupProcess(processDesp, new Dictionary <string, object>() { { "CostCenter", "1001" }, { "PayMethod", "1" }, { "Age", 30 }, { "ReportLine", new IUser[] { OguObjectSettings.GetConfig().Objects["approver1"].User, OguObjectSettings.GetConfig().Objects["cfo"].User } } }); Console.WriteLine(process.Activities.Count); WfOutputHelper.OutputMainStream(process); WfOutputHelper.OutputEveryActivities(process); Assert.AreEqual(7, process.Activities.Count); }
protected void Page_Load(object sender, EventArgs e) { WfConverterHelper.RegisterConverters(); WfActivityMatrixResourceDescriptor activityMatrix = null; string fileName = "ActivityMatrix"; if (Request.Form["matrixData"] != null) { activityMatrix = JSONSerializerExecute.Deserialize <WfActivityMatrixResourceDescriptor>(Request.Form["matrixData"]); fileName = "SampleMatrix"; } else { activityMatrix = PrepareSampleActivityMatrixResourceDescriptor(); } ResponseExcelWorkBook(activityMatrix, fileName); }
public void WfActivityMatrixResourceSerializationTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.GetDynamicProcessDesp(); XElementFormatter formatter = new XElementFormatter(); XElement rootProc = formatter.Serialize(processDesp); IWfProcessDescriptor clonedProcessDesp = (IWfProcessDescriptor)formatter.Deserialize(rootProc); IWfActivityDescriptor normalActDesp = processDesp.Activities["NormalActivity"]; IWfActivityDescriptor clonedNormalActDesp = clonedProcessDesp.Activities["NormalActivity"]; Assert.IsNotNull(normalActDesp); Assert.IsNotNull(clonedNormalActDesp); WfActivityMatrixResourceDescriptor matrixResource = (WfActivityMatrixResourceDescriptor)normalActDesp.Resources[0]; WfActivityMatrixResourceDescriptor clonedMatrixResource = (WfActivityMatrixResourceDescriptor)clonedNormalActDesp.Resources[0]; Assert.AreEqual(matrixResource.PropertyDefinitions.Count, clonedMatrixResource.PropertyDefinitions.Count); Assert.AreEqual(matrixResource.Rows.Count, clonedMatrixResource.Rows.Count); }
public void MergeNotMatchedActivityMatrixAndApprovalMatrixProcessTest() { WfApprovalMatrix approvalMatrix = ApprovalMatrixHelper.PrepareApprovalMatrix(); WfApprovalMatrixAdapter.Instance.Update(approvalMatrix); WfActivityMatrixResourceDescriptor resource = ActivityMatrixHelper.PrepareActivityMatrixResourceDescriptor(); resource.Rows.ForEach(row => row.Values.FindByColumnName(SOARolePropertyDefinition.ActivityCodeColumn).Value = "NotMatched"); IWfProcessDescriptor processDesp = ProcessHelper.GetDynamicProcessDesp(resource, approvalMatrix.ID); IWfProcess process = ProcessHelper.StartupProcess(processDesp, new Dictionary <string, object>() { { "CostCenter", "1001" }, { "PayMethod", "1" }, { "Age", 30 } }); Console.WriteLine(process.Activities.Count); WfOutputHelper.OutputMainStream(process); WfOutputHelper.OutputEveryActivities(process); process.Activities.ForEach(act => { if (act.Descriptor.ActivityType == WfActivityType.NormalActivity) { if (act.Descriptor.Properties.GetValue("IsDynamic", false) == false) { Console.WriteLine(act.Descriptor.Name); Assert.IsTrue(act.Descriptor.Name.IndexOf("审批") >= 0); } } }); Assert.AreEqual(8, process.Activities.Count); }
public void MergeActivityMatrixWithDynamicActivityAndApprovalMatrixTest() { WfActivityMatrixResourceDescriptor resource = ActivityMatrixHelper.PrepareDynamicActivityMatrixResourceDescriptor(); WfApprovalMatrix approvalMatrix = ApprovalMatrixHelper.PrepareApprovalMatrix(); WfApprovalMatrixAdapter.Instance.Update(approvalMatrix); IWfProcessDescriptor processDesp = ProcessHelper.GetDynamicProcessDesp(resource, approvalMatrix.ID); IWfProcess process = ProcessHelper.StartupProcess(processDesp, new Dictionary <string, object>() { { "CostCenter", "1001" }, { "PayMethod", "1" }, { "Age", 30 }, { "ReportLine", new IUser[] { OguObjectSettings.GetConfig().Objects["approver1"].User, OguObjectSettings.GetConfig().Objects["cfo"].User } } }); Console.WriteLine(process.Activities.Count); WfOutputHelper.OutputMainStream(process); WfOutputHelper.OutputEveryActivities(process); }
public void FilterAndMergeMatchedActiveMatrixWithRoleAndApprovalMatrixTest() { SOARolePropertiesQueryParam queryParam = new SOARolePropertiesQueryParam(); queryParam.QueryName = "CostCenter"; queryParam.QueryValue = "1002"; WfActivityMatrixResourceDescriptor resource = ActivityMatrixHelper.PrepareActivityMatrixResourceDescriptor(); SOARolePropertyRowCollection activityRows = resource.Rows.Query(queryParam); int originalCount = activityRows.Count; WfApprovalMatrix approvalMatrix = ApprovalMatrixHelper.PrepareApprovalMatrix(); SOARolePropertyRowCollection approvalRows = approvalMatrix.Rows.Query(queryParam); activityRows.MergeApprovalMatrix(resource.PropertyDefinitions, approvalRows, approvalMatrix.PropertyDefinitions); activityRows.AssertAndOutputMatrixOperators(); Assert.AreEqual(3, activityRows.Count); }
public static void AreSame(this WfClientActivityMatrixResourceDescriptor expected, WfActivityMatrixResourceDescriptor actual) { AssertStringEqual(expected.ExternalMatrixID, actual.ExternalMatrixID); AreSame(expected.PropertyDefinitions, actual.PropertyDefinitions); AreSame(expected.Rows, actual.Rows); }