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 static void AreSame(this WfClientActivityMatrixResourceDescriptor expected, WfClientActivityMatrixResourceDescriptor actual) { AssertStringEqual(expected.ExternalMatrixID, actual.ExternalMatrixID); AreSame(expected.PropertyDefinitions, actual.PropertyDefinitions); AreSame(expected.Rows, actual.Rows); }
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 WorkBook ClientDynamicProcessToExcel(WfClientProcessDescriptor client) { bool isDynamic = client.Variables.GetValue("ClientDynamicProcess", false); ExceptionHelper.TrueThrow <ArgumentException>(isDynamic == false, Translator.Translate(Define.DefaultCulture, "非动态活动流程不能导出{0}", client.Key)); WorkBook wb = WorkBook.CreateNew(); wb.Sheets.Clear(); WorkSheet workSheet = null; Row titleRow = null; #region 流程定义信息 workSheet = new WorkSheet(wb, "Process"); titleRow = new Row(1) { Height = 30d }; titleRow.Style.Fill.SetBackgroundColor(Color.LightGray, ExcelFillStyle.Solid); titleRow.Style.Font.Size = 20; workSheet.Rows.Add(titleRow); workSheet.Cells[titleRow.Index, 1].Value = "流程属性"; CreateCommonHeaderRow(client, workSheet); FillCommonSheetData(client, workSheet); wb.Sheets.Add(workSheet); #endregion #region 矩阵信息 WfClientActivityDescriptor activity = client.Activities.Find(w => w.Resources.Count > 0 && w.Resources[0] is WfClientActivityMatrixResourceDescriptor); if (activity == null) { return(wb); } WfClientActivityMatrixResourceDescriptor matrix = activity.Resources[0] as WfClientActivityMatrixResourceDescriptor; workSheet = new WorkSheet(wb, "Matrix"); titleRow = new Row(1) { Height = 30d }; titleRow.Style.Fill.SetBackgroundColor(Color.LightGray, ExcelFillStyle.Solid); titleRow.Style.Font.Size = 20; workSheet.Rows.Add(titleRow); workSheet.Cells[titleRow.Index, 1].Value = "角色属性"; CreateMatrixHeaderRow(matrix, workSheet); FillMatrixSheetData(matrix, workSheet); wb.Sheets.Add(workSheet); #endregion return(wb); }
public static WfClientActivityMatrixResourceDescriptor GetClientActivityMatrixResourceDescriptor() { WfClientActivityMatrixResourceDescriptor resource = new WfClientActivityMatrixResourceDescriptor(); resource.PropertyDefinitions.CopyFrom(PrepareClientPropertiesDefinition()); resource.Rows.CopyFrom(PrepareClientRows(resource.PropertyDefinitions)); return(resource); }
public void SimpleClientActivityMatrixResourceDescriptorToServer() { WfClientActivityMatrixResourceDescriptor client = ProcessDescriptorHelper.GetClientActivityMatrixResourceDescriptor(); WfResourceDescriptor server = null; WfClientActivityMatrixResourceDescriptorConverter.Instance.ClientToServer(client, ref server); client.AreSame((WfActivityMatrixResourceDescriptor)server); }
public override object Deserialize(IDictionary <string, object> dictionary, Type type, JavaScriptSerializer serializer) { WfClientActivityMatrixResourceDescriptor resource = (WfClientActivityMatrixResourceDescriptor)base.Deserialize(dictionary, type, serializer); resource.ExternalMatrixID = dictionary.GetValue("externalMatrixID", string.Empty); JSONSerializerExecute.FillDeserializedCollection(dictionary["definitions"], resource.PropertyDefinitions); JSONSerializerExecute.FillDeserializedCollection(dictionary["rows"], resource.Rows); return(resource); }
private static WfClientActivityDescriptor CreateDynamicActivityDescriptor(WfClientActivityMatrixResourceDescriptor activityMatrix) { WfClientActivityDescriptor dynamicActivityDesp = new WfClientActivityDescriptor(WfClientActivityType.NormalActivity) { Key = "N1", Name = "审批" }; dynamicActivityDesp.Properties.AddOrSetValue("IsDynamic", "True"); dynamicActivityDesp.Resources.Add(activityMatrix); return(dynamicActivityDesp); }
public void ClientActivityMatrixResourceDescriptorSerializationTest() { WfClientJsonConverterHelper.Instance.RegisterConverters(); WfClientActivityMatrixResourceDescriptor resource = ProcessDescriptorHelper.GetClientActivityMatrixResourceDescriptor(); string data = JSONSerializerExecute.Serialize(resource); Console.WriteLine(data); WfClientActivityMatrixResourceDescriptor deserializedResource = JSONSerializerExecute.Deserialize <WfClientActivityMatrixResourceDescriptor>(data); resource.AreSame(deserializedResource); }
public override IDictionary <string, object> Serialize(object obj, JavaScriptSerializer serializer) { IDictionary <string, object> dictionary = base.Serialize(obj, serializer); WfClientActivityMatrixResourceDescriptor resource = (WfClientActivityMatrixResourceDescriptor)obj; dictionary["externalMatrixID"] = resource.ExternalMatrixID; dictionary["definitions"] = resource.PropertyDefinitions; dictionary["rows"] = resource.Rows; resource.Rows.FillColumnInfoToRowValues(resource.PropertyDefinitions); return(dictionary); }
private static void FillMatrixSheetData(WfClientActivityMatrixResourceDescriptor matrix, WorkSheet ws) { int rowIndex = 4; WfClientRolePropertyRowCollection rows = matrix.Rows; foreach (WfClientRolePropertyRow row in rows) { foreach (DefinedName name in ws.Names) { var propertyValue = row.Values.FindByColumnName(name.Name); object dataValue = null; if (propertyValue != null) { if (propertyValue.Column.DataType != Data.DataObjects.ColumnDataType.String) { dataValue = DataConverter.ChangeType(typeof(string) , propertyValue.Value , propertyValue.Column.RealDataType); } else { dataValue = propertyValue.Value; } } else { switch (name.Name.ToLower()) { case "operatortype": dataValue = row.OperatorType.ToString(); break; case "operator": dataValue = row.Operator; break; } } if (dataValue != null) { ws.Cells[rowIndex, name.Address.StartColumn].Value = dataValue; } } rowIndex++; } }
private static void CreateMatrixHeaderRow(WfClientActivityMatrixResourceDescriptor matrix, WorkSheet ws) { Row headRow = new Row(3); headRow.Style.Fill.SetBackgroundColor(Color.Gold, ExcelFillStyle.Solid); headRow.Style.Border.Top.Style = ExcelBorderStyle.Thin; headRow.Style.Border.Top.Color.SetColor(Color.Black); headRow.Style.Border.Bottom.Style = ExcelBorderStyle.Thin; headRow.Style.Border.Bottom.Color.SetColor(Color.Black); headRow.Style.Border.Left.Style = ExcelBorderStyle.Thin; headRow.Style.Border.Left.Color.SetColor(Color.Black); headRow.Style.Font.Bold = true; ws.Rows.Add(headRow); int columnIndex = 1; foreach (WfClientRolePropertyDefinition dimension in matrix.PropertyDefinitions) { ws.Cells[headRow.Index, columnIndex].Value = dimension.Description.IsNotEmpty() ? dimension.Description : dimension.Name; ws.Names.Add(CellAddress.Parse(columnIndex, headRow.Index).ToString(), dimension.Name); columnIndex++; } }