public WfApprovalMatrix ClientToServer(WfClientApprovalMatrix client, ref WfApprovalMatrix server)
        {
            client.NullCheck("client");

            if (server == null)
            {
                server = new WfApprovalMatrix();
            }

            server.ID = client.ID;

            foreach (WfClientRolePropertyDefinition cpd in client.PropertyDefinitions)
            {
                SOARolePropertyDefinition spd = null;

                WfClientRolePropertyDefinitionConverter.Instance.ClientToServer(cpd, ref spd);

                server.PropertyDefinitions.Add(spd);
            }

            foreach (WfClientRolePropertyRow cRow in client.Rows)
            {
                SOARolePropertyRow sRow = null;

                WfClientRolePropertyRowConverter.Instance.ClientToServer(cRow, server.PropertyDefinitions, ref sRow);

                server.Rows.Add(sRow);
            }

            return(server);
        }
        public WfClientApprovalMatrix ServerToClient(WfApprovalMatrix server, ref WfClientApprovalMatrix client)
        {
            server.NullCheck("server");

            if (client == null)
            {
                client = new WfClientApprovalMatrix();
            }

            client.ID = server.ID;

            foreach (SOARolePropertyDefinition spd in server.PropertyDefinitions)
            {
                WfClientRolePropertyDefinition cpd = null;

                WfClientRolePropertyDefinitionConverter.Instance.ServerToClient(spd, ref cpd);

                client.PropertyDefinitions.Add(cpd);
            }

            foreach (SOARolePropertyRow sRow in server.Rows)
            {
                WfClientRolePropertyRow cRow = null;

                WfClientRolePropertyRowConverter.Instance.ServerToClient(sRow, client.PropertyDefinitions, ref cRow);

                client.Rows.Add(cRow);
            }

            return(client);
        }
Esempio n. 3
0
        public static void AreSame(this WfApprovalMatrix expected, WfApprovalMatrix actual)
        {
            AssertStringEqual(expected.ID, actual.ID);

            AreSame(expected.PropertyDefinitions, actual.PropertyDefinitions);
            AreSame(expected.Rows, actual.Rows);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        public void ApprovalMatrixExistsTest()
        {
            WfApprovalMatrix matrix = ApprovalMatrixHelper.PrepareServerApprovalMatrix();

            WfClientProcessDescriptorServiceProxy.Instance.ImportApprovalMatrix(matrix.ID, matrix.ToExcelStream());

            Assert.IsTrue(WfClientProcessDescriptorServiceProxy.Instance.ApprovalMatrixExists(matrix.ID));
        }
Esempio n. 6
0
        /// <summary>
        /// 准备一个一行的矩阵
        /// </summary>
        /// <returns></returns>
        public static WfApprovalMatrix PrepareOneRowApprovalMatrixResourceDescriptor()
        {
            WfApprovalMatrix resource = new WfApprovalMatrix();

            resource.PropertyDefinitions.CopyFrom(PreparePropertiesDefinition());
            resource.Rows.Add(PrepareOneRow(resource.PropertyDefinitions));

            return(resource);
        }
Esempio n. 7
0
        public void SimpleServerApprovalMatrixToClient()
        {
            WfApprovalMatrix server = ApprovalMatrixHelper.PrepareServerApprovalMatrix();

            WfClientApprovalMatrix client = null;

            WfClientApprovalMatrixConverter.Instance.ServerToClient(server, ref client);

            client.AreSame(server);
        }
Esempio n. 8
0
        public void SimpleClientApprovalMatrixToServer()
        {
            WfClientApprovalMatrix client = ApprovalMatrixHelper.PrepareClientApprovalMatrix();

            WfApprovalMatrix server = null;

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

            client.AreSame(server);
        }
Esempio n. 9
0
        public void DeletelMatrixExistsTest()
        {
            InitPrincipal("Requestor");

            WfApprovalMatrix matrix = ApprovalMatrixHelper.PrepareServerApprovalMatrix();

            WfClientProcessDescriptorServiceProxy.Instance.ImportApprovalMatrix(matrix.ID, matrix.ToExcelStream());
            WfClientProcessDescriptorServiceProxy.Instance.DeleteApprovalMatrix(matrix.ID);

            Assert.IsFalse(WfClientProcessDescriptorServiceProxy.Instance.ApprovalMatrixExists(matrix.ID));
        }
Esempio n. 10
0
        public static WfActivityMatrixResourceDescriptor PrepareEmptyActivityMatrixResourceDescriptorWithExternal()
        {
            WfActivityMatrixResourceDescriptor resource = PrepareActivityMatrixResourceDescriptor();

            WfApprovalMatrix externalMatrix = ApprovalMatrixHelper.PrepareApprovalMatrix();

            WfApprovalMatrixAdapter.Instance.Update(externalMatrix);

            resource.ExternalMatrixID = externalMatrix.ID;

            return(resource);
        }
Esempio n. 11
0
        public static WfApprovalMatrix PrepareApprovalMatrix()
        {
            WfApprovalMatrix matrix = new WfApprovalMatrix()
            {
                ID = UuidHelper.NewUuidString()
            };

            matrix.PropertyDefinitions.CopyFrom(PreparePropertiesDefinition());
            matrix.Rows.CopyFrom(PrepareRows(matrix.PropertyDefinitions));

            return(matrix);
        }
Esempio n. 12
0
        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();
        }
Esempio n. 13
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);
        }
Esempio n. 14
0
        public void UpdateApprovalMatrixTest()
        {
            WfApprovalMatrix matrix = ApprovalMatrixHelper.PrepareApprovalMatrix();

            Assert.AreEqual(WfMatrixType.ApprovalMatrix, matrix.PropertyDefinitions.MatrixType);

            WfApprovalMatrixAdapter.Instance.Update(matrix);

            WfApprovalMatrix loaded = WfApprovalMatrixAdapter.Instance.LoadByID(matrix.ID);

            Assert.AreEqual(matrix.PropertyDefinitions.Count, loaded.PropertyDefinitions.Count);
            Assert.AreEqual(matrix.Rows.Count, loaded.Rows.Count);
        }
Esempio n. 15
0
        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();
        }
Esempio n. 16
0
        public void ApprovalMatrixToExcelTest()
        {
            WfApprovalMatrix matrix = ApprovalMatrixHelper.PrepareApprovalMatrix();

            WorkBook workBook = matrix.ToWorkBook();

            workBook.Save("ApprovalMatrixToExcelTest.xlsx");

            WfApprovalMatrix deserialized = workBook.ToApprovalMatrix();

            deserialized.ID = matrix.ID;

            Assert.AreEqual(matrix.PropertyDefinitions.Count, deserialized.PropertyDefinitions.Count);
            Assert.AreEqual(matrix.Rows.Count, deserialized.Rows.Count);
        }
Esempio n. 17
0
        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();
        }
Esempio n. 18
0
        public void ImportApprovalMatrixTest()
        {
            InitPrincipal("Requestor");

            WfApprovalMatrix matrix = ApprovalMatrixHelper.PrepareServerApprovalMatrix();

            WfClientProcessDescriptorServiceProxy.Instance.ImportApprovalMatrix(matrix.ID, matrix.ToExcelStream());

            Stream stream = WfClientProcessDescriptorServiceProxy.Instance.ExportApprovalMatrix(matrix.ID);

            WorkBook workBook = WorkBook.Load(stream);

            WfApprovalMatrix deserialized = workBook.ToApprovalMatrix();

            deserialized.ID = matrix.ID;

            matrix.AreSame(deserialized);
        }
Esempio n. 19
0
        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);
        }
Esempio n. 20
0
        public void ApprovalMatrixQueryParamMismatchProcessTest()
        {
            WfApprovalMatrix approvalMatrix = ApprovalMatrixHelper.PrepareApprovalMatrix();

            WfApprovalMatrixAdapter.Instance.Update(approvalMatrix);

            IWfProcessDescriptor processDesp = ProcessHelper.GetDynamicProcessDesp(approvalMatrix.ID);

            IWfProcess process = ProcessHelper.StartupProcess(processDesp, new Dictionary <string, object>()
            {
                { "PayMethod", "1" },
                { "Age", 30 }
            });

            SOARoleContext context = SOARoleContext.CreateContext(approvalMatrix.PropertyDefinitions, process);

            context.QueryParams.Output();

            Assert.AreEqual(1, context.QueryParams.Count);
            Assert.IsNull(context.QueryParams[0].QueryValue);
        }
Esempio n. 21
0
        public void MergeMatchedActivityMatrixAndApprovalMatrixProcessTest()
        {
            WfApprovalMatrix approvalMatrix = ApprovalMatrixHelper.PrepareApprovalMatrix();

            WfApprovalMatrixAdapter.Instance.Update(approvalMatrix);

            IWfProcessDescriptor processDesp = ProcessHelper.GetDynamicProcessDesp(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);

            Assert.AreEqual(6, process.Activities.Count);
        }
Esempio n. 22
0
        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);
        }
Esempio n. 23
0
        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);
        }
Esempio n. 24
0
        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 Stream ExportApprovalMatrix(string matrixID)
        {
            WfApprovalMatrix matrix = WfApprovalMatrixAdapter.Instance.LoadByID(matrixID);

            return(matrix.ToExcelStream());
        }