Ejemplo n.º 1
0
        private static SOARolePropertyDefinitionCollection PreparePropertiesDefinition(IRole role)
        {
            SOARolePropertyDefinitionCollection propertiesDefinition = new SOARolePropertyDefinitionCollection();

            propertiesDefinition.Add(new SOARolePropertyDefinition(role)
            {
                Name = "CostCenter", SortOrder = 0
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition(role)
            {
                Name = "Condition", SortOrder = 3
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition(role)
            {
                Name = "ActivitySN", SortOrder = 4
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition(role)
            {
                Name = "ActivityProperties", SortOrder = 5
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition(role)
            {
                Name = "IsMergeable", SortOrder = 6, DataType = ColumnDataType.Boolean
            });

            return(propertiesDefinition);
        }
Ejemplo n.º 2
0
        private static SOARolePropertyRow AddSOARoleRow(SOARole role, SOARoleOperatorType operatorType, string opUser, string constCenter, string activitySN, Action <SOARolePropertyRow, SOARolePropertyDefinitionCollection> action = null)
        {
            SOARolePropertyRow row = new SOARolePropertyRow(role)
            {
                RowNumber = role.Rows.Count + 1, OperatorType = operatorType, Operator = opUser
            };

            SOARolePropertyDefinitionCollection pds = role.PropertyDefinitions;

            row.Values.Add(new SOARolePropertyValue(pds["CostCenter"])
            {
                Value = constCenter
            });
            row.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.ActivitySNColumn])
            {
                Value = activitySN
            });
            row.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.OperatorTypeColumn])
            {
                Value = operatorType.ToString()
            });
            row.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.OperatorColumn])
            {
                Value = opUser
            });

            if (action != null)
            {
                action(row, pds);
            }

            role.Rows.Add(row);

            return(row);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 将活动矩阵与审批矩阵进行合并,以第一个矩阵的列定义为准
        /// </summary>
        /// <param name="amRows"></param>
        /// <param name="amDefinitions"></param>
        /// <param name="apRows"></param>
        /// <param name="apDefinitions"></param>
        public static void MergeActivityMatrix(this SOARolePropertyRowCollection amRows, SOARolePropertyDefinitionCollection amDefinitions, IEnumerable<SOARolePropertyRow> apRows, SOARolePropertyDefinitionCollection apDefinitions)
        {
            amDefinitions.NullCheck("amDefinitions");
            amRows.NullCheck("amRows");
            apDefinitions.NullCheck("apDefinitions");
            apRows.NullCheck("apRows");

            int maxRowNumber = GetMaxRowNumber(amRows);

            foreach (SOARolePropertyRow apRow in apRows)
            {
                SOARolePropertyRow newRow = new SOARolePropertyRow(amRows.Role);

                newRow.RowNumber = ++maxRowNumber;
                newRow.OperatorType = apRow.OperatorType;
                newRow.Operator = apRow.Operator;

                foreach (SOARolePropertyValue srv in apRow.Values)
                {
                    if (amDefinitions.ContainsKey(srv.Column.Name))
                    {
                        SOARolePropertyValue newValue = new SOARolePropertyValue(amDefinitions[srv.Column.Name]);

                        newValue.Value = srv.Value;

                        newRow.Values.Add(newValue);
                    }
                }
            }
        }
Ejemplo n.º 4
0
        private static SOARolePropertyDefinitionCollection PrepareActivityMatrixPropertiesDefinition(string definitionID)
        {
            SOARole role = new SOARole();

            role.ID = definitionID;

            SOARolePropertyDefinitionCollection propertiesDefinition = new SOARolePropertyDefinitionCollection();

            propertiesDefinition.Add(new SOARolePropertyDefinition(role)
            {
                Name = "AdministrativeUnit", SortOrder = 0
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition(role)
            {
                Name = "ActivitySN", SortOrder = 0, DataType = ColumnDataType.Integer
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition(role)
            {
                Name = "OperatorType", SortOrder = 1, DataType = ColumnDataType.String
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition(role)
            {
                Name = "Operator", SortOrder = 2, DataType = ColumnDataType.String
            });

            return(propertiesDefinition);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 根据管理单元的ID得到SOARole。
        /// </summary>
        /// <param name="auCodeName"></param>
        /// <returns></returns>
        public SOARole GetSOARole(string auCodeName)
        {
            SOARole role = null;

            if (this.ClientSchemaRoleObject != null)
            {
                string definitionID = this.ClientSchemaRoleObject.ID;
                string roleID       = definitionID;

                ClientAURole auRole = GetAURoleObject(auCodeName);

                if (auRole != null)
                {
                    roleID = auRole.ID;
                }

                SOARolePropertyDefinitionCollection definition = SOARolePropertyDefinitionAdapter.Instance.GetByRoleID(definitionID);

                role    = new SOARole(definition);
                role.ID = roleID;

                //如果矩阵的行数为零
                if (role.Rows.Count == 0)
                {
                    role    = new SOARole(definition);
                    role.ID = definitionID;
                }
            }

            return(role);
        }
        private static SOARolePropertyDefinitionCollection PrepareSamplePropertiesDefinition()
        {
            SOARolePropertyDefinitionCollection propertiesDefinition = new SOARolePropertyDefinitionCollection();

            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = "CostCenter", SortOrder = 0, Description = "成本中心"
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = "ActivitySN", SortOrder = 1, Description = "活动序号"
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = "ActivityProperties", SortOrder = 2, Description = "活动属性"
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = "OperatorType", SortOrder = 3, DataType = ColumnDataType.String, Description = "操作人类型"
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = "Operator", SortOrder = 4, DataType = ColumnDataType.String, Description = "操作人"
            });

            return(propertiesDefinition);
        }
Ejemplo n.º 7
0
        public static void ExportToExcelXml(WorkbookNode workbook, SOARolePropertyDefinitionCollection definition, string propertySheetName)
        {
            workbook.NullCheck("workbook");
            propertySheetName.NullCheck("propertySheetName");

            FillWorkSheetTitle(workbook, definition, propertySheetName);
        }
        private static SOARolePropertyRowCollection PrepareSampleRows(SOARolePropertyDefinitionCollection pds)
        {
            SOARolePropertyRowCollection rows = new SOARolePropertyRowCollection();

            SOARolePropertyRow row1 = new SOARolePropertyRow() { RowNumber = 1, OperatorType = SOARoleOperatorType.User, Operator = "fanhy" };

            row1.Values.Add(new SOARolePropertyValue(pds["CostCenter"]) { Value = "1001" });
            row1.Values.Add(new SOARolePropertyValue(pds["ActivitySN"]) { Value = "10" });
            row1.Values.Add(new SOARolePropertyValue(pds["ActivityProperties"]) { Value = "{Name:\"部门领导\"}" });

            SOARolePropertyRow row2 = new SOARolePropertyRow() { RowNumber = 2, OperatorType = SOARoleOperatorType.User, Operator = "liming" };

            row2.Values.Add(new SOARolePropertyValue(pds["CostCenter"]) { Value = "1001" });
            row2.Values.Add(new SOARolePropertyValue(pds["ActivitySN"]) { Value = "20" });
            row2.Values.Add(new SOARolePropertyValue(pds["ActivityProperties"]) { Value = "{Name:\"公司领导\"}" });

            SOARolePropertyRow row3 = new SOARolePropertyRow() { RowNumber = 3, OperatorType = SOARoleOperatorType.User, Operator = "quym" };

            row3.Values.Add(new SOARolePropertyValue(pds["CostCenter"]) { Value = "1002" });
            row3.Values.Add(new SOARolePropertyValue(pds["ActivitySN"]) { Value = "10" });
            row3.Values.Add(new SOARolePropertyValue(pds["ActivityProperties"]) { Value = "{Name:\"部门领导\"}" });

            SOARolePropertyRow row4 = new SOARolePropertyRow() { RowNumber = 4, OperatorType = SOARoleOperatorType.User, Operator = "liming" };

            row4.Values.Add(new SOARolePropertyValue(pds["CostCenter"]) { Value = "1002" });
            row4.Values.Add(new SOARolePropertyValue(pds["ActivitySN"]) { Value = "20" });
            row4.Values.Add(new SOARolePropertyValue(pds["ActivityProperties"]) { Value = "{Name:\"公司领导\"}" });

            rows.Add(row1);
            rows.Add(row2);
            rows.Add(row3);
            rows.Add(row4);

            return rows;
        }
Ejemplo n.º 9
0
        private static SOARolePropertyDefinitionCollection PrepareServerPropertiesDefinition()
        {
            SOARolePropertyDefinitionCollection propertiesDefinition = new SOARolePropertyDefinitionCollection();

            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = "CostCenter", SortOrder = 0
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = "PayMethod", SortOrder = 1
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = "Age", SortOrder = 2, DataType = ColumnDataType.Integer
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = "OperatorType", SortOrder = 3, DataType = ColumnDataType.String
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = "Operator", SortOrder = 4, DataType = ColumnDataType.String
            });

            return(propertiesDefinition);
        }
Ejemplo n.º 10
0
        private static SOARolePropertyRow PrepareOneRow(SOARolePropertyDefinitionCollection pds)
        {
            SOARolePropertyRow row = new SOARolePropertyRow()
            {
                RowNumber = 1, OperatorType = SOARoleOperatorType.User, Operator = string.Empty
            };

            row.Values.Add(new SOARolePropertyValue(pds["CostCenter"])
            {
                Value = "1001"
            });
            row.Values.Add(new SOARolePropertyValue(pds["Approver1"])
            {
                Value = "yangrui1"
            });
            row.Values.Add(new SOARolePropertyValue(pds["Approver2"])
            {
                Value = "quym"
            });
            row.Values.Add(new SOARolePropertyValue(pds["Approver3"])
            {
                Value = "liming"
            });

            return(row);
        }
Ejemplo n.º 11
0
        private static void AppendOperator(SOARolePropertyRow row, SOARolePropertyDefinitionCollection columns, string apUser)
        {
            string columnName = SOARolePropertyDefinition.OperatorColumn;

            if (columns.ContainsKey(columnName))
            {
                SOARolePropertyValue pValue = row.Values.FindByColumnName(columnName);

                if (pValue == null)
                {
                    pValue = new SOARolePropertyValue(columns[columnName]);
                    row.Values.Add(pValue);
                }

                if (apUser.IsNotEmpty())
                {
                    pValue.Value = pValue.Value.NullOrEmptyIs(row.Operator);

                    if (pValue.Value.IsNotEmpty())
                    {
                        pValue.Value += ",";
                    }
                    else
                    {
                        pValue.Value = string.Empty;
                    }

                    pValue.Value += apUser;

                    row.Operator = pValue.Value;
                }
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 创建一个都是预定义列的属性集合
        /// </summary>
        /// <returns></returns>
        public static SOARolePropertyDefinitionCollection PrepareReservedPropertiesDefinition()
        {
            SOARolePropertyDefinitionCollection propertiesDefinition = new SOARolePropertyDefinitionCollection();

            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = SOARolePropertyDefinition.ActivitySNColumn, SortOrder = 1
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = SOARolePropertyDefinition.ConditionColumn, SortOrder = 3, DefaultValue = "RowOperators.Count > 0"
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = SOARolePropertyDefinition.ActivityCodeColumn, SortOrder = 4
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = SOARolePropertyDefinition.ActivityNameColumn, SortOrder = 6, DefaultValue = "审批"
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = SOARolePropertyDefinition.AutoExtractColumn, SortOrder = 6, DataType = ColumnDataType.Boolean, DefaultValue = "False"
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = SOARolePropertyDefinition.OperatorTypeColumn, SortOrder = 8, DataType = ColumnDataType.String
            });
            propertiesDefinition.Add(new SOARolePropertyDefinition()
            {
                Name = SOARolePropertyDefinition.OperatorColumn, SortOrder = 9, DataType = ColumnDataType.String
            });

            return(propertiesDefinition);
        }
        public SOARolePropertyDefinitionCollection LoadByRoleID(string roleID)
        {
            roleID.CheckStringIsNullOrEmpty("roleID");

            string sql = string.Format("SELECT * FROM WF.ROLE_PROPERTIES_DEFINITIONS WHERE {0} ORDER BY SORT_ORDER",
                roleID.ToRoleIDCriteria());

            using (TransactionScope scope = TransactionScopeFactory.Create(TransactionScopeOption.Suppress))
            {
                DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0];

                SOARolePropertyDefinitionCollection result = new SOARolePropertyDefinitionCollection();

                foreach (DataRow row in table.Rows)
                {
                    SOARolePropertyDefinition property = new SOARolePropertyDefinition();

                    ORMapping.DataRowToObject(row, property);

                    result.Add(property);
                }

                return result;
            }
        }
Ejemplo n.º 14
0
        private static SOARolePropertyDefinitionCollection UpdateRolePropertiesDefinition(IRole role)
        {
            SOARolePropertyDefinitionCollection propertiesDefinition = PreparePropertiesDefinition(role);

            SOARolePropertyDefinitionAdapter.Instance.Update(role, propertiesDefinition);

            return(propertiesDefinition);
        }
Ejemplo n.º 15
0
        private static SOARole PrepareRole(string roleID, string definitionID)
        {
            SOARolePropertyDefinitionCollection definition = SOARolePropertyDefinitionAdapter.Instance.LoadByRoleID(definitionID);

            return(new SOARole(definition)
            {
                ID = roleID
            });
        }
Ejemplo n.º 16
0
        public static void AreSame(this SOARolePropertyDefinitionCollection expected, SOARolePropertyDefinitionCollection actual)
        {
            Assert.AreEqual(expected.Count, actual.Count);

            for (int i = 0; i < expected.Count; i++)
            {
                AreSame(expected[i], actual[i]);
            }
        }
Ejemplo n.º 17
0
        private static void MergeToActivityMatrixRow(
            SOARolePropertyRow amRow,
            SOARolePropertyDefinitionCollection amDefinitions,
            string apUser)
        {
            SetCellValue(amRow, amDefinitions, SOARolePropertyDefinition.OperatorTypeColumn, SOARoleOperatorType.User.ToString());

            AppendOperator(amRow, amDefinitions, apUser);
        }
Ejemplo n.º 18
0
        public void UpdateRolePropertyDefinitionTest()
        {
            IRole role = GetTestRole();

            SOARolePropertyDefinitionCollection propertiesDefinition = UpdateRolePropertiesDefinition(role);

            SOARolePropertyDefinitionCollection loadedPropertiesDefinition = SOARolePropertyDefinitionAdapter.Instance.LoadByRole(role);

            Assert.AreEqual(propertiesDefinition.Count, loadedPropertiesDefinition.Count);
        }
Ejemplo n.º 19
0
        private static SOARolePropertyRow PrepareOneRow(SOARolePropertyDefinitionCollection pds)
        {
            SOARolePropertyRow row = new SOARolePropertyRow() { RowNumber = 1, OperatorType = SOARoleOperatorType.User, Operator = string.Empty };

            row.Values.Add(new SOARolePropertyValue(pds["CostCenter"]) { Value = "1001" });
            row.Values.Add(new SOARolePropertyValue(pds["Approver1"]) { Value = "yangrui1" });
            row.Values.Add(new SOARolePropertyValue(pds["Approver2"]) { Value = "quym" });
            row.Values.Add(new SOARolePropertyValue(pds["Approver3"]) { Value = "liming" });

            return row;
        }
Ejemplo n.º 20
0
        /// <summary>
        /// 导出到Excel Xml中,非OpenXml
        /// </summary>
        /// <param name="coll"></param>
        /// <param name="propertySheetName"></param>
        /// <returns></returns>
        public static WorkbookNode ExportToExcelXml(SOARolePropertyDefinitionCollection definition, string propertySheetName)
        {
            WorkbookNode workbook = new WorkbookNode();
            string       filePath = HttpContext.Current.Server.MapPath("RolePropertyTemplate.xml");

            workbook.Load(filePath);

            ExportToExcelXml(workbook, definition, propertySheetName);

            return(workbook);
        }
Ejemplo n.º 21
0
        private static SOARolePropertyDefinitionCollection PreparePropertiesDefinition()
        {
            SOARolePropertyDefinitionCollection propertiesDefinition = new SOARolePropertyDefinitionCollection();

            propertiesDefinition.Add(new SOARolePropertyDefinition() { Name = "CostCenter", SortOrder = 0 });
            propertiesDefinition.Add(new SOARolePropertyDefinition() { Name = "Approver1", SortOrder = 1 });
            propertiesDefinition.Add(new SOARolePropertyDefinition() { Name = "Approver2", SortOrder = 2 });
            propertiesDefinition.Add(new SOARolePropertyDefinition() { Name = "Approver3", SortOrder = 3 });

            return propertiesDefinition;
        }
        private static void FillColumnInfoToRowValues(SOARolePropertyDefinitionCollection columns, SOARolePropertyRowCollection rows)
        {
            foreach (SOARolePropertyRow row in rows)
            {
                foreach (SOARolePropertyValue pv in row.Values)
                {
                    SOARolePropertyDefinition column = columns[pv.Column.Name];

                    pv.SetColumnInfo(column);
                }
            }
        }
        private static SOARolePropertyDefinitionCollection PrepareSamplePropertiesDefinition()
        {
            SOARolePropertyDefinitionCollection propertiesDefinition = new SOARolePropertyDefinitionCollection();

            propertiesDefinition.Add(new SOARolePropertyDefinition() { Name = "CostCenter", SortOrder = 0, Description = "成本中心" });
            propertiesDefinition.Add(new SOARolePropertyDefinition() { Name = "ActivitySN", SortOrder = 1, Description = "活动序号" });
            propertiesDefinition.Add(new SOARolePropertyDefinition() { Name = "ActivityProperties", SortOrder = 2, Description = "活动属性" });
            propertiesDefinition.Add(new SOARolePropertyDefinition() { Name = "OperatorType", SortOrder = 3, DataType = ColumnDataType.String, Description = "操作人类型" });
            propertiesDefinition.Add(new SOARolePropertyDefinition() { Name = "Operator", SortOrder = 4, DataType = ColumnDataType.String, Description = "操作人" });

            return propertiesDefinition;
        }
Ejemplo n.º 24
0
        public static SOARoleContext CreateContext(SOARolePropertyDefinitionCollection propertyDefines, IWfProcess process)
        {
            propertyDefines.NullCheck("propertyDefines");

            SOARolePropertiesQueryParamCollection queryParams = CreateQueryParams(propertyDefines, process);

            SOARoleContext context = SOARoleContext.CreateContext(queryParams, process);

            context.PropertyDefinitions = propertyDefines;

            return context;
        }
        private static void FillColumnInfoToRowValues(SOARolePropertyDefinitionCollection columns, SOARolePropertyRowCollection rows)
        {
            foreach (SOARolePropertyRow row in rows)
            {
                foreach (SOARolePropertyValue pv in row.Values)
                {
                    SOARolePropertyDefinition column = columns[pv.Column.Name];

                    pv.SetColumnInfo(column);
                }
            }
        }
Ejemplo n.º 26
0
        /// <summary>
        /// 创建一个与活动矩阵不匹配列的审批矩阵
        /// </summary>
        /// <returns></returns>
        public static WfApprovalMatrix PrepareExtrApprovalMatrix()
        {
            WfApprovalMatrix matrix = new WfApprovalMatrix()
            {
                ID = UuidHelper.NewUuidString()
            };

            matrix.PropertyDefinitions.Add(new SOARolePropertyDefinition()
            {
                Name = "CostCenter", SortOrder = 0
            });
            matrix.PropertyDefinitions.Add(new SOARolePropertyDefinition()
            {
                Name = "ExtraApprover", SortOrder = 1
            });

            SOARolePropertyDefinitionCollection pds = matrix.PropertyDefinitions;

            SOARolePropertyRow row1 = new SOARolePropertyRow()
            {
                RowNumber = 1, OperatorType = SOARoleOperatorType.User, Operator = string.Empty
            };

            row1.Values.Add(new SOARolePropertyValue(pds["CostCenter"])
            {
                Value = "1001"
            });
            row1.Values.Add(new SOARolePropertyValue(pds["ExtraApprover"])
            {
                Value = "wangli5"
            });

            matrix.Rows.Add(row1);

            SOARolePropertyRow row2 = new SOARolePropertyRow()
            {
                RowNumber = 2, OperatorType = SOARoleOperatorType.User, Operator = string.Empty
            };

            row2.Values.Add(new SOARolePropertyValue(pds["CostCenter"])
            {
                Value = "1001"
            });
            row2.Values.Add(new SOARolePropertyValue(pds["ExtraApprover"])
            {
                Value = "InvalidUser"
            });

            matrix.Rows.Add(row2);

            return(matrix);
        }
        public void ProcessRequest(HttpContext context)
        {
            string roleID = context.Request["roleID"];

            if (string.IsNullOrEmpty(context.Request["roleID"]) == false)
            {
                SOARole role = new SOARole()
                {
                    ID = roleID
                };

                SOARolePropertyDefinitionCollection rowsColl = SOARolePropertyDefinitionAdapter.Instance.LoadByRole(role);

                XDocument rolePropertiesDoc = new XDocument(new XDeclaration("1.0", "utf-8", "true"), new XElement("SOARoleProperties"));

                XElementFormatter formatter = new XElementFormatter();

                formatter.OutputShortType = false;

                XElement xeRoleProperties = formatter.Serialize(rowsColl);

                rolePropertiesDoc.Element("SOARoleProperties").Add(xeRoleProperties);

                context.Response.Clear();
                context.Response.ContentType     = "text/xml";
                context.Response.ContentEncoding = Encoding.UTF8;

                string fileName = string.Empty;

                if (context.Request["roleName"].IsNotEmpty())
                {
                    fileName = string.Format("{0}", context.Request["roleName"]);
                }

                if (fileName.IsNullOrEmpty() && context.Request["roleCode"].IsNotEmpty())
                {
                    fileName = string.Format("{0}", context.Request["roleCode"]);
                }

                if (fileName.IsNullOrEmpty())
                {
                    fileName = roleID;
                }

                fileName += "_Properties";

                context.Response.AppendHeader("content-disposition", string.Format("attachment;fileName={0}.xml", context.Response.EncodeFileNameInContentDisposition(fileName)));
                rolePropertiesDoc.Save(context.Response.OutputStream);
                context.Response.End();
            }
        }
Ejemplo n.º 28
0
        private static SOARolePropertyRow PrepareTwoUsersDynamicRow(SOARolePropertyDefinitionCollection pds)
        {
            SOARolePropertyRow row1 = new SOARolePropertyRow()
            {
                RowNumber = 1, OperatorType = SOARoleOperatorType.User, Operator = "liming,liming,yangrui1"
            };

            row1.Values.Add(new SOARolePropertyValue(pds["CostCenter"])
            {
                Value = "1001"
            });
            row1.Values.Add(new SOARolePropertyValue(pds["PayMethod"])
            {
                Value = "1"
            });
            row1.Values.Add(new SOARolePropertyValue(pds["Age"])
            {
                Value = "30"
            });
            row1.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.ActivitySNColumn])
            {
                Value = "20"
            });
            row1.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.ConditionColumn])
            {
                Value = "RowOperators.Count > 0"
            });
            row1.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.ActivityCodeColumn])
            {
                Value = "Approver1"
            });
            row1.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.ActivityNameColumn])
            {
                Value = "二级审批"
            });
            row1.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.AutoExtractColumn])
            {
                Value = "True"
            });
            row1.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.OperatorTypeColumn])
            {
                Value = "User"
            });
            row1.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.OperatorColumn])
            {
                Value = "liming,liming,yangrui1"
            });

            return(row1);
        }
Ejemplo n.º 29
0
        /// <summary>
        /// 上传属性定义
        /// </summary>
        /// <param name="file"></param>
        /// <param name="result"></param>
        protected void ImportSOARole_DoUploadProgress(HttpPostedFile file, UploadProgressResult result)
        {
            var fileType = Path.GetExtension(file.FileName).ToLower();

            if (string.Compare(fileType, ".xml", true) == 0)
            {
                StringBuilder logger = new StringBuilder();
                try
                {
                    CheckEditMode();

                    var xmlDoc      = XDocument.Load(file.InputStream);
                    var wfProcesses = xmlDoc.Descendants("Root");
                    XElementFormatter    formatter = new XElementFormatter();
                    UploadProgressStatus status    = new UploadProgressStatus();

                    status.CurrentStep = 1;
                    status.MinStep     = 0;
                    status.MaxStep     = wfProcesses.Count() + 1;
                    logger.AppendFormat("开始导入角色属性定义...\n", file.FileName, status.MaxStep);

                    SOARole role = new SOARole {
                        ID = this.DefinitionID
                    };

                    SOARolePropertyDefinitionAdapter.Instance.Delete(role);

                    foreach (var wfProcess in wfProcesses)
                    {
                        SOARolePropertyDefinitionCollection rowsColl = (SOARolePropertyDefinitionCollection)formatter.Deserialize(wfProcess);

                        SOARolePropertyDefinitionAdapter.Instance.Update(role, rowsColl);

                        logger.Append("保存成功...\n");

                        status.CurrentStep++;
                        status.Response();
                    }
                    logger.AppendFormat("导入完成!", file.FileName);
                }
                catch (Exception ex)
                {
                    logger.AppendFormat("导入错误,{0},错误堆栈:{1}", ex.Message, ex.StackTrace);
                }

                result.DataChanged = true;
                result.CloseWindow = false;
                result.ProcessLog  = logger.ToString();
            }
        }
Ejemplo n.º 30
0
        private static void SetCellValue(SOARolePropertyRow row, SOARolePropertyDefinitionCollection columns, string columnName, string cellValue)
        {
            if (columns.ContainsKey(columnName))
            {
                SOARolePropertyValue pValue = row.Values.FindByColumnName(columnName);

                if (pValue == null)
                {
                    pValue = new SOARolePropertyValue(columns[columnName]);
                    row.Values.Add(pValue);
                }

                pValue.Value = cellValue;
            }
        }
Ejemplo n.º 31
0
        private static SOARolePropertyRow PrepareOneRow(SOARolePropertyDefinitionCollection pds)
        {
            SOARolePropertyRow row1 = new SOARolePropertyRow()
            {
                RowNumber = 1, OperatorType = SOARoleOperatorType.User, Operator = "fanhy"
            };

            row1.Values.Add(new SOARolePropertyValue(pds["CostCenter"])
            {
                Value = "1001"
            });
            row1.Values.Add(new SOARolePropertyValue(pds["PayMethod"])
            {
                Value = "1"
            });
            row1.Values.Add(new SOARolePropertyValue(pds["Age"])
            {
                Value = "30"
            });
            row1.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.ActivitySNColumn])
            {
                Value = "10"
            });
            row1.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.ConditionColumn])
            {
                Value = "RowOperators.Count > 0"
            });
            row1.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.ActivityCodeColumn])
            {
                Value = "Approver1"
            });
            row1.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.ActivityNameColumn])
            {
                Value = "一级审批"
            });
            row1.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.OperatorTypeColumn])
            {
                Value = "User"
            });
            row1.Values.Add(new SOARolePropertyValue(pds[SOARolePropertyDefinition.OperatorColumn])
            {
                Value = "fanhy"
            });

            return(row1);
        }
        public SOARolePropertyRowCollection GetByRole(IRole role, SOARolePropertyDefinitionCollection definition)
        {
            role.NullCheck("role");

            SOARolePropertyRowCollection result = SOARolePropertiesCache.Instance.GetOrAddNewValue(role.ID.ToRoleIDCacheKey(), (cache, key) =>
            {
                SOARolePropertyRowCollection properties = LoadByRole(role, definition);

                MixedDependency dependency = new MixedDependency(new UdpNotifierCacheDependency(), new MemoryMappedFileNotifierCacheDependency());

                cache.Add(key, properties, dependency);

                return properties;
            });

            return result;
        }
Ejemplo n.º 33
0
        private static SOARolePropertyRowCollection PrepareServerRows(SOARolePropertyDefinitionCollection pds)
        {
            SOARolePropertyRowCollection rows = new SOARolePropertyRowCollection();

            SOARolePropertyRow row1 = new SOARolePropertyRow()
            {
                RowNumber = 1, OperatorType = SOARoleOperatorType.User, Operator = "fanhy"
            };

            row1.Values.Add(new SOARolePropertyValue(pds["CostCenter"])
            {
                Value = "1001"
            });
            row1.Values.Add(new SOARolePropertyValue(pds["PayMethod"])
            {
                Value = "1"
            });
            row1.Values.Add(new SOARolePropertyValue(pds["Age"])
            {
                Value = "30"
            });

            SOARolePropertyRow row2 = new SOARolePropertyRow()
            {
                RowNumber = 2, OperatorType = SOARoleOperatorType.User, Operator = "wangli5"
            };

            row2.Values.Add(new SOARolePropertyValue(pds["CostCenter"])
            {
                Value = "1002"
            });
            row2.Values.Add(new SOARolePropertyValue(pds["PayMethod"])
            {
                Value = "2"
            });
            row2.Values.Add(new SOARolePropertyValue(pds["Age"])
            {
                Value = "40"
            });

            rows.Add(row1);
            rows.Add(row2);

            return(rows);
        }
		public SOARolePropertyValue ClientToServer(WfClientRolePropertyValue client, SOARolePropertyDefinitionCollection serverColumns, ref SOARolePropertyValue server)
		{
			client.NullCheck("client");
			serverColumns.NullCheck("serverColumns");

			if (server == null)
			{
				SOARolePropertyDefinition serverColumn = serverColumns[client.Column.Name];

				serverColumn.NullCheck("serverColumn");

				server = new SOARolePropertyValue(serverColumn);
			}

			server.Value = client.Value;

			return server;
		}
Ejemplo n.º 35
0
        public SOARolePropertyValue ClientToServer(WfClientRolePropertyValue client, SOARolePropertyDefinitionCollection serverColumns, ref SOARolePropertyValue server)
        {
            client.NullCheck("client");
            serverColumns.NullCheck("serverColumns");

            if (server == null)
            {
                SOARolePropertyDefinition serverColumn = serverColumns[client.Column.Name];

                serverColumn.NullCheck("serverColumn");

                server = new SOARolePropertyValue(serverColumn);
            }

            server.Value = client.Value;

            return(server);
        }
Ejemplo n.º 36
0
        /// <summary>
        /// 填充Excel Xml的标题列
        /// </summary>
        /// <param name="workbook"></param>
        /// <param name="definition"></param>
        /// <param name="propertySheetName"></param>
        private static void FillWorkSheetTitle(WorkbookNode workbook, SOARolePropertyDefinitionCollection definition, string propertySheetName)
        {
            WorksheetNode worksheet = GetWorksheetFromWorkbook(workbook, propertySheetName);

            worksheet.Names.Clear();
            workbook.Names.Clear();

            worksheet.Table.Rows[1].Cells.Clear();

            int row    = 3;
            int column = 1;

            RowNode titleRow = null;

            if (worksheet.Table.Rows.Count > 0)
            {
                titleRow = worksheet.Table.Rows[1];
            }
            else
            {
                titleRow = new RowNode();
                worksheet.Table.Rows.Add(titleRow);
            }

            foreach (SOARolePropertyDefinition dd in definition)
            {
                NamedRangeNode range = new NamedRangeNode();

                range.Name = dd.Name;

                range.RefersTo = string.Format("={0}!R{1}C{2}", worksheet.Name, row, column);
                workbook.Names.Add(range);

                CellNode cell = new CellNode();

                cell.Data.Value = dd.Description.IsNotEmpty() ? dd.Description : dd.Name;

                cell.StyleID = "s17";

                titleRow.Cells.Add(cell);

                column++;
            }
        }
Ejemplo n.º 37
0
        private static void PrepareActivityMatrixData(string definitionID, string roleID)
        {
            ClearAllMatrixData();

            SOARole role = new SOARole();

            role.ID = definitionID;

            SOARolePropertyDefinitionCollection definition = PrepareActivityMatrixPropertiesDefinition(definitionID);

            SOARolePropertyDefinitionAdapter.Instance.Update(role, definition);

            role    = new SOARole(definition);
            role.ID = roleID;

            PrepareActivityMatrixRows(role);

            SOARolePropertiesAdapter.Instance.Update(role);
        }
Ejemplo n.º 38
0
        private void ExportExcelXPXml()
        {
            SOARolePropertyDefinitionCollection definition = SOARolePropertyDefinitionAdapter.Instance.LoadByRoleID(ExportRoleProperty.DefinitionID);
            string PropertySheetName = "Matrix";

            WorkbookNode workbook = ExportToExcelXml(definition, PropertySheetName);
            SOARole      role     = new SOARole(definition)
            {
                ID = RoleID
            };

            SOARolePropertyRowCollection rows = SOARolePropertiesAdapter.Instance.LoadByRole(role, definition);

            if (rows.Count > 0)
            {
                FillMatrixRowsToWorksheet(workbook, rows);
            }

            workbook.Response(GetFileNameByRole(RoleID));
        }
Ejemplo n.º 39
0
        private static void AddOneActivityMatrixRow(SOARole role, string auCodeName, int rowNumber, int activitySN, SOARoleOperatorType operatorType, string op)
        {
            SOARolePropertyDefinitionCollection definition = role.PropertyDefinitions;

            SOARolePropertyRow row = new SOARolePropertyRow(role)
            {
                RowNumber = rowNumber, OperatorType = operatorType, Operator = op
            };

            row.Values.Add(new SOARolePropertyValue(definition["AdministrativeUnit"])
            {
                Value = auCodeName
            });
            row.Values.Add(new SOARolePropertyValue(definition["ActivitySN"])
            {
                Value = activitySN.ToString()
            });

            role.Rows.Add(row);
        }
Ejemplo n.º 40
0
        /// <summary>
        /// 1001应该匹配出3个活动。其中第一个活动两个人
        /// </summary>
        /// <returns></returns>
        private static SOARole PrepareSOARole(Action <SOARolePropertyRow, SOARolePropertyDefinitionCollection> action = null)
        {
            IRole originalRole = GetTestRole();

            SOARolePropertyDefinitionAdapter.Instance.Delete(originalRole);

            SOARolePropertyDefinitionCollection pds = UpdateRolePropertiesDefinition(originalRole);

            SOARole role = new SOARole(originalRole);

            role.Rows.Clear();

            AddSOARoleRow(role, SOARoleOperatorType.User, "fanhy", "1001", "10", action);
            AddSOARoleRow(role, SOARoleOperatorType.User, "yangrui1", "1001", "10", action);
            AddSOARoleRow(role, SOARoleOperatorType.User, "liming", "1001", "20", action);
            AddSOARoleRow(role, SOARoleOperatorType.User, "quym", "1001", "30", action);

            SOARolePropertiesAdapter.Instance.Update(role);

            return(role);
        }
		public SOARolePropertyRow ClientToServer(WfClientRolePropertyRow client, SOARolePropertyDefinitionCollection serverColumns, ref SOARolePropertyRow server)
		{
			client.NullCheck("client");

			if (server == null)
				server = new SOARolePropertyRow();

			server.RowNumber = client.RowNumber;
			server.Operator = client.Operator;
			server.OperatorType = client.OperatorType.ToRoleOperatorType();

			foreach (WfClientRolePropertyValue cpv in client.Values)
			{
				SOARolePropertyValue spv = null;

				WfClientRolePropertyValueConverter.Instance.ClientToServer(cpv, serverColumns, ref spv);

				server.Values.Add(spv);
			}

			return server;
		}
Ejemplo n.º 42
0
        private static SOARolePropertyRowCollection PrepareServerRows(SOARolePropertyDefinitionCollection pds)
        {
            SOARolePropertyRowCollection rows = new SOARolePropertyRowCollection();

            SOARolePropertyRow row1 = new SOARolePropertyRow() { RowNumber = 1, OperatorType = SOARoleOperatorType.User };

            row1.Values.Add(new SOARolePropertyValue(pds["CostCenter"]) { Value = "1001" });
            row1.Values.Add(new SOARolePropertyValue(pds["Approver1"]) { Value = "yangrui1" });
            row1.Values.Add(new SOARolePropertyValue(pds["Approver2"]) { Value = "quym" });
            row1.Values.Add(new SOARolePropertyValue(pds["Approver3"]) { Value = "liming" });

            SOARolePropertyRow row2 = new SOARolePropertyRow() { RowNumber = 2, OperatorType = SOARoleOperatorType.User };

            row2.Values.Add(new SOARolePropertyValue(pds["CostCenter"]) { Value = "1002" });
            row2.Values.Add(new SOARolePropertyValue(pds["Approver1"]) { Value = string.Empty });
            row2.Values.Add(new SOARolePropertyValue(pds["Approver2"]) { Value = "quym" });
            row2.Values.Add(new SOARolePropertyValue(pds["Approver3"]) { Value = "liming" });

            SOARolePropertyRow row3 = new SOARolePropertyRow() { RowNumber = 3, OperatorType = SOARoleOperatorType.User };

            row3.Values.Add(new SOARolePropertyValue(pds["CostCenter"]) { Value = "1003" });
            row3.Values.Add(new SOARolePropertyValue(pds["Approver1"]) { Value = string.Empty });
            row3.Values.Add(new SOARolePropertyValue(pds["Approver2"]) { Value = string.Empty });
            row3.Values.Add(new SOARolePropertyValue(pds["Approver3"]) { Value = "liming" });

            SOARolePropertyRow row4 = new SOARolePropertyRow() { RowNumber = 4, OperatorType = SOARoleOperatorType.User };

            row4.Values.Add(new SOARolePropertyValue(pds["CostCenter"]) { Value = "1003" });
            row4.Values.Add(new SOARolePropertyValue(pds["Approver1"]) { Value = "yangrui1" });
            row4.Values.Add(new SOARolePropertyValue(pds["Approver2"]) { Value = string.Empty });
            row4.Values.Add(new SOARolePropertyValue(pds["Approver3"]) { Value = "liming" });

            rows.Add(row1);
            rows.Add(row2);
            rows.Add(row3);
            rows.Add(row4);

            return rows;
        }
		/// <summary>
		/// 导出到Excel Xml中,非OpenXml
		/// </summary>
		/// <param name="coll"></param>
		/// <param name="propertySheetName"></param>
		/// <returns></returns>
		public static WorkbookNode ExportToExcelXml(SOARolePropertyDefinitionCollection definition, string propertySheetName)
		{
			WorkbookNode workbook = new WorkbookNode();
			string filePath = HttpContext.Current.Server.MapPath("RolePropertyTemplate.xml");
			workbook.Load(filePath);

			ExportToExcelXml(workbook, definition, propertySheetName);

			return workbook;
		}
        private static SOARolePropertyRowCollection PrepareServerRows(SOARolePropertyDefinitionCollection pds)
        {
            SOARolePropertyRowCollection rows = new SOARolePropertyRowCollection();

            SOARolePropertyRow row1 = new SOARolePropertyRow() { RowNumber = 1, OperatorType = SOARoleOperatorType.User, Operator = "fanhy" };

            row1.Values.Add(new SOARolePropertyValue(pds["CostCenter"]) { Value = "1001" });
            row1.Values.Add(new SOARolePropertyValue(pds["PayMethod"]) { Value = "1" });
            row1.Values.Add(new SOARolePropertyValue(pds["Age"]) { Value = "30" });

            SOARolePropertyRow row2 = new SOARolePropertyRow() { RowNumber = 2, OperatorType = SOARoleOperatorType.User, Operator = "wangli5" };

            row2.Values.Add(new SOARolePropertyValue(pds["CostCenter"]) { Value = "1002" });
            row2.Values.Add(new SOARolePropertyValue(pds["PayMethod"]) { Value = "2" });
            row2.Values.Add(new SOARolePropertyValue(pds["Age"]) { Value = "40" });

            rows.Add(row1);
            rows.Add(row2);

            return rows;
        }
        private static SOARolePropertyDefinitionCollection PrepareServerPropertiesDefinition()
        {
            SOARolePropertyDefinitionCollection propertiesDefinition = new SOARolePropertyDefinitionCollection();

            propertiesDefinition.Add(new SOARolePropertyDefinition() { Name = "CostCenter", SortOrder = 0 });
            propertiesDefinition.Add(new SOARolePropertyDefinition() { Name = "PayMethod", SortOrder = 1 });
            propertiesDefinition.Add(new SOARolePropertyDefinition() { Name = "Age", SortOrder = 2, DataType = ColumnDataType.Integer });
            propertiesDefinition.Add(new SOARolePropertyDefinition() { Name = "OperatorType", SortOrder = 3, DataType = ColumnDataType.String });
            propertiesDefinition.Add(new SOARolePropertyDefinition() { Name = "Operator", SortOrder = 4, DataType = ColumnDataType.String });

            return propertiesDefinition;
        }
		public static void ExportToExcelXml(WorkbookNode workbook, SOARolePropertyDefinitionCollection definition, string propertySheetName)
		{
			workbook.NullCheck("workbook");
			propertySheetName.NullCheck("propertySheetName");

			FillWorkSheetTitle(workbook, definition, propertySheetName);
		}
		/// <summary>
		/// 填充Excel Xml的标题列
		/// </summary>
		/// <param name="workbook"></param>
		/// <param name="definition"></param>
		/// <param name="propertySheetName"></param>
		private static void FillWorkSheetTitle(WorkbookNode workbook, SOARolePropertyDefinitionCollection definition, string propertySheetName)
		{
			WorksheetNode worksheet = GetWorksheetFromWorkbook(workbook, propertySheetName);

			worksheet.Names.Clear();
			workbook.Names.Clear();

			worksheet.Table.Rows[1].Cells.Clear();

			int row = 3;
			int column = 1;

			RowNode titleRow = null;

			if (worksheet.Table.Rows.Count > 0)
				titleRow = worksheet.Table.Rows[1];
			else
			{
				titleRow = new RowNode();
				worksheet.Table.Rows.Add(titleRow);
			}

			foreach (SOARolePropertyDefinition dd in definition)
			{
				NamedRangeNode range = new NamedRangeNode();

				range.Name = dd.Name;

				range.RefersTo = string.Format("={0}!R{1}C{2}", worksheet.Name, row, column);
				workbook.Names.Add(range);

				CellNode cell = new CellNode();

				cell.Data.Value = dd.Description.IsNotEmpty() ? dd.Description : dd.Name;

				cell.StyleID = "s17";

				titleRow.Cells.Add(cell);

				column++;
			}
		}
Ejemplo n.º 48
0
        /// <summary>
        /// 将活动矩阵与审批矩阵进行合并
        /// </summary>
        /// <param name="amRows"></param>
        /// <param name="amDefinitions"></param>
        /// <param name="apRows"></param>
        /// <param name="apDefinitions"></param>
        public static void MergeApprovalMatrix(this SOARolePropertyRowCollection amRows, SOARolePropertyDefinitionCollection amDefinitions, IEnumerable<SOARolePropertyRow> apRows, SOARolePropertyDefinitionCollection apDefinitions)
        {
            amDefinitions.NullCheck("amDefinitions");
            amRows.NullCheck("amRows");
            apDefinitions.NullCheck("apDefinitions");
            apRows.NullCheck("apRows");

            int maxActivitySN = GetMaxActivitySN(amRows);
            int maxRowNumber = GetMaxRowNumber(amRows);

            List<SOARolePropertyRow> newAmRows = new List<SOARolePropertyRow>();

            foreach (SOARolePropertyRow apRow in apRows)
            {
                int columnIndex = 1;

                while (columnIndex < apDefinitions.Count)
                {
                    List<SOARolePropertyRow> amUserRows = FindMatchedActivityMatrixUserRows(amRows, apDefinitions[columnIndex].Name, apRow);
                    List<SOARolePropertyRow> amTemplateRows = FindMatchedActivityMatrixTemplateRows(amRows, apDefinitions[columnIndex].Name, apRow);

                    string apUser = apRow.Values.GetValue(apDefinitions[columnIndex].Name, string.Empty);

                    if (amUserRows.Count == 0 && apUser.IsNotEmpty())
                    {
                        SOARolePropertyRow templateRow = amTemplateRows.LastOrDefault();

                        maxActivitySN += 10;
                        SOARolePropertyRow amRow = CreateNewActivityMatrixRow(maxActivitySN, ++maxRowNumber, amDefinitions, templateRow);

                        newAmRows.Add(amRow);

                        MergeToActivityMatrixRow(amRow, amDefinitions, apUser);
                    }
                    else
                    {
                        foreach (SOARolePropertyRow amRow in amUserRows)
                            MergeToActivityMatrixRow(amRow, amDefinitions, apUser);
                    }

                    columnIndex++;
                }
            }

            amRows.CopyFrom(newAmRows);
        }
Ejemplo n.º 49
0
 /// <summary>
 /// 通过预先定义好的列定义来构造
 /// </summary>
 /// <param name="definitions"></param>
 public SOARole(SOARolePropertyDefinitionCollection definitions)
 {
     this._PropertyDefinitions = definitions;
 }
Ejemplo n.º 50
0
        private static void MergeToActivityMatrixRow(
            SOARolePropertyRow amRow,
            SOARolePropertyDefinitionCollection amDefinitions,
            string apUser)
        {
            SetCellValue(amRow, amDefinitions, SOARolePropertyDefinition.OperatorTypeColumn, SOARoleOperatorType.User.ToString());

            AppendOperator(amRow, amDefinitions, apUser);
        }
Ejemplo n.º 51
0
        private static SOARolePropertyDefinitionCollection PreparePropertiesDefinition(IRole role)
        {
            SOARolePropertyDefinitionCollection propertiesDefinition = new SOARolePropertyDefinitionCollection();

            propertiesDefinition.Add(new SOARolePropertyDefinition(role) { Name = "CostCenter", SortOrder = 1 });
            propertiesDefinition.Add(new SOARolePropertyDefinition(role) { Name = SOARolePropertyDefinition.ConditionColumn, SortOrder = 2 });
            propertiesDefinition.Add(new SOARolePropertyDefinition(role) { Name = SOARolePropertyDefinition.ActivitySNColumn, SortOrder = 3 });
            propertiesDefinition.Add(new SOARolePropertyDefinition(role) { Name = SOARolePropertyDefinition.ActivityPropertiesColumn, SortOrder = 4 });
            propertiesDefinition.Add(new SOARolePropertyDefinition(role) { Name = SOARolePropertyDefinition.IsMergeableColumn, SortOrder = 5, DataType = ColumnDataType.Boolean });
            propertiesDefinition.Add(new SOARolePropertyDefinition(role) { Name = SOARolePropertyDefinition.TransitionsColumn, SortOrder = 5, DataType = ColumnDataType.String });
            propertiesDefinition.Add(new SOARolePropertyDefinition(role) { Name = SOARolePropertyDefinition.OperatorTypeColumn, SortOrder = 7, DataType = ColumnDataType.String });
            propertiesDefinition.Add(new SOARolePropertyDefinition(role) { Name = SOARolePropertyDefinition.OperatorColumn, SortOrder = 8, DataType = ColumnDataType.String });


            return propertiesDefinition;
        }
Ejemplo n.º 52
0
        private static void SetCellValue(SOARolePropertyRow row, SOARolePropertyDefinitionCollection columns, string columnName, string cellValue)
        {
            if (columns.ContainsKey(columnName))
            {
                SOARolePropertyValue pValue = row.Values.FindByColumnName(columnName);

                if (pValue == null)
                {
                    pValue = new SOARolePropertyValue(columns[columnName]);
                    row.Values.Add(pValue);
                }

                pValue.Value = cellValue;
            }
        }
Ejemplo n.º 53
0
        private static void AppendOperator(SOARolePropertyRow row, SOARolePropertyDefinitionCollection columns, string apUser)
        {
            string columnName = SOARolePropertyDefinition.OperatorColumn;

            if (columns.ContainsKey(columnName))
            {
                SOARolePropertyValue pValue = row.Values.FindByColumnName(columnName);

                if (pValue == null)
                {
                    pValue = new SOARolePropertyValue(columns[columnName]);
                    row.Values.Add(pValue);
                }

                if (apUser.IsNotEmpty())
                {
                    pValue.Value = pValue.Value.NullOrEmptyIs(row.Operator);

                    if (pValue.Value.IsNotEmpty())
                        pValue.Value += ",";
                    else
                        pValue.Value = string.Empty;

                    pValue.Value += apUser;

                    row.Operator = pValue.Value;
                }
            }
        }
Ejemplo n.º 54
0
        private static SOARolePropertiesQueryParamCollection CreateQueryParams(SOARolePropertyDefinitionCollection propertyDefines, IWfProcess process)
        {
            SOARolePropertiesQueryParamCollection queryParams = new SOARolePropertiesQueryParamCollection();

            WfApplicationParametersContext apContext = WfApplicationParametersContext.Current;

            //如果是审批矩阵,只取第一列作为条件
            if (propertyDefines.MatrixType == WfMatrixType.ApprovalMatrix)
            {
                if (propertyDefines.Count > 0)
                {
                    SOARolePropertyDefinition pd = propertyDefines[0];

                    object arpValue = GetQueryValueFromContext(pd, process);

                    queryParams.Add(new SOARolePropertiesQueryParam()
                    {
                        QueryName = pd.Name,
                        QueryValue = arpValue
                    });
                }
            }
            else
            {
                //活动矩阵和角色矩阵,排除保留字
                foreach (SOARolePropertyDefinition pd in propertyDefines)
                {
                    //是否是可查询的列
                    if (IsQueryableColumn(pd, propertyDefines))
                    {
                        object arpValue = GetQueryValueFromContext(pd, process);

                        queryParams.Add(new SOARolePropertiesQueryParam()
                        {
                            QueryName = pd.Name,
                            QueryValue = arpValue
                        });
                    }

                }
            }

            return queryParams;
        }
        public void Update(IRole role, SOARolePropertyDefinitionCollection properties)
        {
            role.NullCheck("role");
            properties.NullCheck("properties");

            this.Update(role.ID, properties);
        }
Ejemplo n.º 56
0
        /// <summary>
        /// 创建一个新的上下文,并且使用它进行计算。计算完成后恢复上下文。
        /// </summary>
        /// <param name="propertyDefines"></param>
        /// <param name="process"></param>
        /// <param name="action"></param>
        public static void DoNewContextAction(SOARolePropertyDefinitionCollection propertyDefines, IWfProcess process, Action<SOARoleContext> action)
        {
            if (action != null)
            {
                SOARoleContext originalRoleContext = SOARoleContext.Current;

                try
                {
                    SOARoleContext.Current = null;
                    SOARoleContext.CreateContext(propertyDefines, process);

                    action(SOARoleContext.Current);
                }
                finally
                {
                    SOARoleContext.Current = originalRoleContext;
                }
            }
        }
        public void Update(string roleID, SOARolePropertyDefinitionCollection properties)
        {
            roleID.CheckStringIsNullOrEmpty("roleID");
            properties.NullCheck("properties");

            StringBuilder strB = new StringBuilder();

            strB.AppendFormat("DELETE WF.ROLE_PROPERTIES_DEFINITIONS WHERE {0}", roleID.ToRoleIDCriteria());

            foreach (SOARolePropertyDefinition property in properties)
            {
                if (strB.Length > 0)
                    strB.Append(TSqlBuilder.Instance.DBStatementSeperator);

                property.RoleID = roleID;

                strB.AppendFormat(ORMapping.GetInsertSql(property, TSqlBuilder.Instance));
            }

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                DbHelper.RunSql(strB.ToString(), GetConnectionName());

                scope.Complete();
            }

            string cacheKey = roleID.ToRoleIDCacheKey();

            CacheNotifyData notifyData1 = new CacheNotifyData(typeof(SOARolePropertiesDefinitionCache), cacheKey, CacheNotifyType.Invalid);
            CacheNotifyData notifyData2 = new CacheNotifyData(typeof(SOARolePropertiesCache), cacheKey, CacheNotifyType.Invalid);

            UdpCacheNotifier.Instance.SendNotifyAsync(notifyData1, notifyData2);
            MmfCacheNotifier.Instance.SendNotify(notifyData1, notifyData2);
        }
Ejemplo n.º 58
0
        ///// <summary>
        ///// 将活动矩阵与审批矩阵进行合并
        ///// </summary>
        ///// <param name="amRows"></param>
        ///// <param name="amDefinitions"></param>
        ///// <param name="apRows"></param>
        ///// <param name="apDefinitions"></param>
        //public static void MergeApprovalMatrix(this SOARolePropertyRowCollection amRows, SOARolePropertyDefinitionCollection amDefinitions, IEnumerable<SOARolePropertyRow> apRows, SOARolePropertyDefinitionCollection apDefinitions)
        //{
        //    amDefinitions.NullCheck("amDefinitions");
        //    amRows.NullCheck("amRows");
        //    apDefinitions.NullCheck("apDefinitions");
        //    apRows.NullCheck("apRows");

        //    int maxActivitySN = GetMaxActivitySN(amRows);
        //    int maxRowNumber = GetMaxRowNumber(amRows);

        //    List<SOARolePropertyRow> newAmRows = new List<SOARolePropertyRow>();

        //    foreach (SOARolePropertyRow apRow in apRows)
        //    {
        //        int columnIndex = 1;

        //        while (columnIndex < apDefinitions.Count)
        //        {
        //            SOARolePropertyRow templateRow = null;

        //            SOARolePropertyRow amRow = FindMatchedActivityMatrixRow(amRows, apDefinitions[columnIndex].Name, apRow, out templateRow);

        //            string apUser = apRow.Values.GetValue(apDefinitions[columnIndex].Name, string.Empty);

        //            if (amRow == null && apUser.IsNotEmpty())
        //            {
        //                maxActivitySN += 10;

        //                amRow = CreateNewActivityMatrixRow(maxActivitySN, ++maxRowNumber, amDefinitions, templateRow);

        //                newAmRows.Add(amRow);
        //            }

        //            if (amRow != null)
        //                MergeToActivityMatrixRow(amRow, amDefinitions, apUser);

        //            columnIndex++;
        //        }
        //    }

        //    amRows.CopyFrom(newAmRows);
        //}

        private static SOARolePropertyRow CreateNewActivityMatrixRow(int activitySN, int rowNumber, SOARolePropertyDefinitionCollection amDefinitions, SOARolePropertyRow templateRow)
        {
            SOARolePropertyRow amRow = null;

            if (templateRow != null)
                amRow = new SOARolePropertyRow(templateRow, rowNumber);
            else
                amRow = new SOARolePropertyRow() { RowNumber = rowNumber };

            amRow.OperatorType = SOARoleOperatorType.User;
            amRow.Operator = string.Empty;

            SetCellValue(amRow, amDefinitions, SOARolePropertyDefinition.OperatorColumn, string.Empty);
            SetCellValue(amRow, amDefinitions, SOARolePropertyDefinition.ActivitySNColumn, activitySN.ToString());

            return amRow;
        }
Ejemplo n.º 59
0
        private static bool IsQueryableColumn(SOARolePropertyDefinition pd, SOARolePropertyDefinitionCollection propertyDefines)
        {
            bool isReservered = true;

            switch (propertyDefines.MatrixType)
            {
                case WfMatrixType.RoleMatrix:
                    isReservered = SOARolePropertyDefinition.IsRoleMatrixReservedPropertyName(pd.Name);
                    break;
                case WfMatrixType.ActivityMatrix:
                    isReservered = SOARolePropertyDefinition.IsActivityMatrixReservedPropertyName(pd.Name);
                    break;
            }

            return isReservered == false;
        }
Ejemplo n.º 60
0
        private static SOARolePropertyRowCollection PrepareRows(SOARolePropertyDefinitionCollection pds)
        {
            SOARolePropertyRowCollection rows = new SOARolePropertyRowCollection();

            SOARolePropertyRow row1 = new SOARolePropertyRow() { RowNumber = 1, OperatorType = SOARoleOperatorType.User, Operator = "fanhy" };

            row1.Values.Add(new SOARolePropertyValue(pds["CostCenter"]) { Value = "1001" });
            row1.Values.Add(new SOARolePropertyValue(pds["PayMethod"]) { Value = "1" });
            row1.Values.Add(new SOARolePropertyValue(pds["Age"]) { Value = "30" });

            SOARolePropertyRow row2 = new SOARolePropertyRow() { RowNumber = 2, OperatorType = SOARoleOperatorType.User, Operator = "wangli5" };

            row2.Values.Add(new SOARolePropertyValue(pds["CostCenter"]) { Value = "1002" });
            row2.Values.Add(new SOARolePropertyValue(pds["PayMethod"]) { Value = "2" });
            row2.Values.Add(new SOARolePropertyValue(pds["Age"]) { Value = "40" });

            SOARolePropertyRow row3 = new SOARolePropertyRow() { RowNumber = 3, OperatorType = SOARoleOperatorType.Role, Operator = RolesDefineConfig.GetConfig().RolesDefineCollection["nestedRole"].Roles };

            row3.Values.Add(new SOARolePropertyValue(pds["CostCenter"]) { Value = "1002" });
            row3.Values.Add(new SOARolePropertyValue(pds["PayMethod"]) { Value = "2" });
            row3.Values.Add(new SOARolePropertyValue(pds["Age"]) { Value = "60" });

            rows.Add(row1);
            rows.Add(row2);
            rows.Add(row3);

            return rows;
        }