Exemple #1
0
        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);
            }
        }
Exemple #2
0
        public static void AreSame(this WfClientActivityMatrixResourceDescriptor expected, WfClientActivityMatrixResourceDescriptor actual)
        {
            AssertStringEqual(expected.ExternalMatrixID, actual.ExternalMatrixID);

            AreSame(expected.PropertyDefinitions, actual.PropertyDefinitions);
            AreSame(expected.Rows, actual.Rows);
        }
Exemple #3
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);
            }
        }
Exemple #4
0
        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);
        }
Exemple #6
0
        public void SimpleClientActivityMatrixResourceDescriptorToServer()
        {
            WfClientActivityMatrixResourceDescriptor client = ProcessDescriptorHelper.GetClientActivityMatrixResourceDescriptor();

            WfResourceDescriptor server = null;

            WfClientActivityMatrixResourceDescriptorConverter.Instance.ClientToServer(client, ref server);

            client.AreSame((WfActivityMatrixResourceDescriptor)server);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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);
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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++;
            }
        }
Exemple #12
0
        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++;
            }
        }