Ejemplo n.º 1
0
        public void ExcelToSaveDescriptorTest()
        {
            const string processKey = "c8d2a844-3a3a-bb51-4ab0-1563a40d2b58";
            WfCreateClientDynamicProcessParams processParams = ProcessDescriptorHelper.CreateClientDynamicProcessParams();

            processParams.Key = processKey;

            WfClientDynamicProcessBuilder builder = new WfClientDynamicProcessBuilder(processParams);
            WfClientProcessDescriptor     client  = builder.Build(processParams.Key, processParams.Name);

            WfClientProcessDescriptorServiceProxy.Instance.SaveDescriptor(client);//数据准备

            WfClientProcessDescriptor server = null;

            using (Stream stream = WfClientProcessDescriptorServiceProxy.Instance.WfDynamicProcessToExcel(processKey)) //EXCEL文件流
            {
                WfClientProcessDescriptorServiceProxy.Instance.DeleteDescriptor(processKey);                           //清理
                //校验清理结果
                try
                {
                    server = WfClientProcessDescriptorServiceProxy.Instance.GetDescriptor(processKey);
                }
                catch (MCS.Library.WcfExtensions.WfClientChannelException ex)
                {
                    Assert.IsTrue(true, ex.Message);
                }
                WfClientServiceBrokerContext.Current.Context[Consts.TenantCode] = "Test1";// GetCurrentTenantCode();


                WfClientProcessDescriptorServiceProxy.Instance.ExcelToSaveDescriptor(processKey, stream);
                server = WfClientProcessDescriptorServiceProxy.Instance.GetDescriptor(processKey);
                Assert.AreEqual(processParams.ProgramName, server.ProgramName);
                // Assert.AreEqual("Test1", server.Properties));
            }
        }
Ejemplo n.º 2
0
        public void ExcelKeyChangeSaveDescriptorTest()
        {
            const string processKey = "c8d2a844-0002-bb51-4ab0-1563a40d2b587";

            WfCreateClientDynamicProcessParams processParams = ProcessDescriptorHelper.CreateClientDynamicProcessParams();

            processParams.Key = processKey;

            WfClientDynamicProcessBuilder builder = new WfClientDynamicProcessBuilder(processParams);
            WfClientProcessDescriptor     client  = builder.Build(processParams.Key, processParams.Name);

            WfClientServiceBrokerContext.Current.Context[Consts.TenantCode] = "Test1"; // GetCurrentTenantCode();

            WfClientProcessDescriptorServiceProxy.Instance.SaveDescriptor(client);     //数据准备

            #region 保存EXCEL后,修改EXCEL数据后再校验
            //using (FileStream fs = File.OpenWrite(string.Format("E:\\work\\TMP\\{0}.xlsx", processKey)))
            //{
            //    WfClientProcessDescriptorServiceProxy.Instance.WfDynamicProcessToExcel(processKey).CopyTo(fs);
            //}

            //using (FileStream fs = File.OpenRead(string.Format("E:\\work\\TMP\\{0}.xlsx", processKey)))
            //{
            //    WfClientProcessDescriptorServiceProxy.Instance.ExcelToSaveDescriptor(processKey, fs);
            //}
            #endregion

            client = WfClientProcessDescriptorServiceProxy.Instance.GetDescriptor(processKey);

            Assert.AreEqual(client.Properties.GetValue("Key", string.Empty), processKey);
            Assert.AreEqual(client.Key, processKey);
        }
Ejemplo n.º 3
0
        public void ExcelToWfCreateClientDynamicProcessParamsTest()
        {
            const string processKey = "c8d2a844-0000-bb51-4ab0-1563a40d2b58";
            WfCreateClientDynamicProcessParams processParams = ProcessDescriptorHelper.CreateClientDynamicProcessParams();

            processParams.Key = processKey;

            WfCreateClientDynamicProcessParams result  = null;
            WfClientDynamicProcessBuilder      builder = new WfClientDynamicProcessBuilder(processParams);
            WfClientProcessDescriptor          client  = builder.Build(processParams.Key, processParams.Name);

            WfClientServiceBrokerContext.Current.Context[Consts.TenantCode] = "Test1";                                 // GetCurrentTenantCode();

            WfClientProcessDescriptorServiceProxy.Instance.SaveDescriptor(client);                                     //数据准备

            using (Stream stream = WfClientProcessDescriptorServiceProxy.Instance.WfDynamicProcessToExcel(processKey)) //EXCEL文件流
            {
                result = WfClientProcessDescriptorServiceProxy.Instance.ExcelToWfCreateClientDynamicProcessParams(processKey, stream);
            }

            processParams.ActivityMatrix.PropertyDefinitions.ForEach(action =>
            {
                action.DataType = ColumnDataType.String;
            }); //EXCEL 无法存储类型信息,所有默认都为string类型

            processParams.AreSame(result);
        }
        public void ClientProcessWithWithActivityMatrixResourceDescriptorSerializationTest()
        {
            WfClientJsonConverterHelper.Instance.RegisterConverters();

            WfClientProcessDescriptor processDesp = ProcessDescriptorHelper.CreateClientProcessWithActivityMatrixResourceDescriptor();
            string data = JSONSerializerExecute.Serialize(processDesp);

            Console.WriteLine(data);

            WfClientProcessDescriptor deserialized = JSONSerializerExecute.Deserialize <WfClientProcessDescriptor>(data);

            Assert.AreEqual(processDesp.Key, deserialized.Key);
            Assert.AreEqual(processDesp.Activities.Count, deserialized.Activities.Count);
            Assert.AreEqual(processDesp.InitialActivity.Key, deserialized.InitialActivity.Key);
            Assert.AreEqual(processDesp.CompletedActivity.Key, deserialized.CompletedActivity.Key);
            Assert.AreEqual(processDesp.InitialActivity.ToTransitions.Count, deserialized.InitialActivity.ToTransitions.Count);
            Assert.AreEqual(processDesp.CancelEventReceivers.Count, deserialized.CancelEventReceivers.Count);
            Assert.AreEqual(processDesp.CompletedActivity.GetFromTransitions().Count, deserialized.CompletedActivity.GetFromTransitions().Count);

            Assert.IsNotNull(deserialized.Activities["N1"]);
            Assert.IsTrue(deserialized.Activities["N1"].Resources.Count > 0);
            Assert.IsTrue(deserialized.Activities["N1"].Resources[0] is WfClientActivityMatrixResourceDescriptor);

            ((WfClientActivityMatrixResourceDescriptor)processDesp.Activities["N1"].Resources[0]).AreSame((WfClientActivityMatrixResourceDescriptor)deserialized.Activities["N1"].Resources[0]);
        }
Ejemplo n.º 5
0
        public void WfDynamicProcessToExcelTest()
        {
            string processKey = "c8d2a844-0003-bb51-4ab0-1563a40d2b58";
            WfCreateClientDynamicProcessParams processParams = ProcessDescriptorHelper.CreateClientDynamicProcessParams();

            processParams.Key = processKey;
            WfClientDynamicProcessBuilder builder = new WfClientDynamicProcessBuilder(processParams);
            WfClientProcessDescriptor     client  = builder.Build(processParams.Key, processParams.Name);

            WfClientServiceBrokerContext.Current.Context[Consts.TenantCode] = "Test1";// GetCurrentTenantCode();

            WfClientProcessDescriptorServiceProxy.Instance.SaveDescriptor(client);

            System.Data.DataTable processTable = null;
            System.Data.DataTable matrixTable  = null;

            using (Stream stream = WfClientProcessDescriptorServiceProxy.Instance.WfDynamicProcessToExcel(processKey))
            {
                processTable = DocumentHelper.GetRangeValuesAsTable(stream, "Process", "A3");
                matrixTable  = DocumentHelper.GetRangeValuesAsTable(stream, "Matrix", "A3");
            }
            Assert.IsTrue(processTable.Rows.Count > 0);
            Assert.IsTrue(matrixTable.Rows.Count == 2);
            Assert.IsTrue(matrixTable.Rows[0]["CostCenter"].ToString() == "1001");
            Assert.IsTrue(matrixTable.Rows[1]["Age"].ToString() == "40");
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 创建一个有4个节点的流程,并且保存它。开始点有两条出线,根据Amount是否大于等于5000来判断。
        /// </summary>
        /// <returns></returns>
        public static WfClientProcessDescriptor PreapreProcessWithConditionLines()
        {
            WfClientProcessDescriptor processDesp = ProcessDescriptorHelper.CreateClientProcessWithConditionLines();

            WfClientProcessDescriptorServiceProxy.Instance.SaveDescriptor(processDesp);

            return(processDesp);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 创建一个简单流程并且保存一个流程定义
        /// </summary>
        /// <returns></returns>
        public static WfClientProcessDescriptor PrepareSimpleProcess()
        {
            WfClientProcessDescriptor processDesp = ProcessDescriptorHelper.CreateSimpleClientProcessWithLines();

            WfClientProcessDescriptorServiceProxy.Instance.SaveDescriptor(processDesp);

            return(processDesp);
        }
Ejemplo n.º 8
0
        public void SimpleServerActivityMatrixResourceDescriptorToClient()
        {
            WfActivityMatrixResourceDescriptor server = ProcessDescriptorHelper.GetServerActivityMatrixResourceDescriptor();

            WfClientResourceDescriptor client = null;

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

            ((WfClientActivityMatrixResourceDescriptor)client).AreSame(server);
        }
Ejemplo n.º 9
0
        public void SimpleClientActivityMatrixResourceDescriptorToServer()
        {
            WfClientActivityMatrixResourceDescriptor client = ProcessDescriptorHelper.GetClientActivityMatrixResourceDescriptor();

            WfResourceDescriptor server = null;

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

            client.AreSame((WfActivityMatrixResourceDescriptor)server);
        }
        public void ClientProcessWithWithActivityMatrixResourceDescriptorToServerTest()
        {
            WfClientProcessDescriptor client = ProcessDescriptorHelper.CreateClientProcessWithActivityMatrixResourceDescriptor();
            WfProcessDescriptor       server = null;

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

            Assert.IsNotNull(server.Activities["N1"]);
            Assert.IsTrue(server.Activities["N1"].Resources.Count > 0);
            Assert.IsTrue(server.Activities["N1"].Resources[0] is WfActivityMatrixResourceDescriptor);
        }
        public void WfClientDynamicProcessBuilderInstanceTest()
        {
            WfCreateClientDynamicProcessParams createParams = ProcessDescriptorHelper.CreateClientDynamicProcessParams();

            WfClientDynamicProcessBuilder builder = new WfClientDynamicProcessBuilder(createParams);

            WfClientProcessDescriptor client = builder.Build(createParams.Key, createParams.Name);

            IWfProcess process = ProcessHelper.CreateProcessInstance(client);

            Assert.IsTrue(process.Activities.Count > client.Activities.Count);
        }
        public void SimpleStandardServerProcessToClient()
        {
            WfProcessDescriptor processDesp = ProcessDescriptorHelper.CreateSimpleServerProcessWithLines();

            processDesp.Output();

            WfClientProcessDescriptor clientProcessDesp = null;

            WfClientProcessDescriptorConverter.Instance.ServerToClient(processDesp, ref clientProcessDesp);

            processDesp.Output();

            clientProcessDesp.AssertProcessDescriptor(processDesp);
        }
Ejemplo n.º 13
0
        public static WfClientProcessInfo PrepareProcessWithWithActivityMatrixResourceInstance()
        {
            WfClientProcessDescriptor processDesp = ProcessDescriptorHelper.CreateClientProcessWithActivityMatrixResourceDescriptor();

            WfClientProcessDescriptorServiceProxy.Instance.SaveDescriptor(processDesp);

            WfClientProcessStartupParams clientStartupParams = ProcessRuntimeHelper.PrepareClientProcessStartupParams(processDesp.Key);

            clientStartupParams.ApplicationRuntimeParameters["CostCenter"] = "1001";
            clientStartupParams.ApplicationRuntimeParameters["PayMethod"]  = "1";
            clientStartupParams.ApplicationRuntimeParameters["Age"]        = 30;

            return(WfClientProcessRuntimeServiceProxy.Instance.StartWorkflow(clientStartupParams));
        }
        public void WfCreateClientDynamicProcessParamsSerializationTest()
        {
            WfClientJsonConverterHelper.Instance.RegisterConverters();

            WfCreateClientDynamicProcessParams createParams = ProcessDescriptorHelper.CreateClientDynamicProcessParams();

            string data = JSONSerializerExecute.Serialize(createParams);

            Console.WriteLine(data);

            WfCreateClientDynamicProcessParams deserialized = JSONSerializerExecute.Deserialize <WfCreateClientDynamicProcessParams>(data);

            createParams.AreSame(deserialized);
        }
Ejemplo n.º 15
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);
        }
        public void WfClientDynamicProcessBuilderTest()
        {
            WfCreateClientDynamicProcessParams createParams = ProcessDescriptorHelper.CreateClientDynamicProcessParams();

            WfClientDynamicProcessBuilder builder = new WfClientDynamicProcessBuilder(createParams);

            WfClientProcessDescriptor client = builder.Build(createParams.Key, createParams.Name);

            WfProcessDescriptor server = null;

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

            Assert.IsTrue(server.Variables.GetValue("ClientDynamicProcess", false));
            Assert.IsNotNull(server.Activities["N1"]);
            Assert.IsTrue(server.Activities["N1"].Resources.Count > 0);
            Assert.IsTrue(server.Activities["N1"].Resources[0] is WfActivityMatrixResourceDescriptor);
        }
        public void SimpleProcessSortedActivitiesTest()
        {
            WfClientProcessDescriptor clientProcessDesp = ProcessDescriptorHelper.CreateClientProcessWithConditionLines();

            IWfProcess process = ProcessHelper.CreateProcessInstance(clientProcessDesp);

            WfClientProcess client = null;

            WfClientProcessConverter.InstanceWithoutActivityBindings.ServerToClient(process, ref client);

            client.NormalizeActivities();

            WfClientActivityCollection sortedActivities = client.GetSortedActivities();

            foreach (WfClientActivity act in sortedActivities)
            {
                Console.WriteLine(act.Descriptor.Key);
            }
        }
Ejemplo n.º 18
0
        public static WfClientProcessInfo PrepareBranchProcesses()
        {
            WfClientProcessDescriptor processDesp = ProcessDescriptorHelper.CreateSimpleClientProcessWithoutLines();

            //增加子节点
            WfClientActivityDescriptor branchActDesp = new WfClientActivityDescriptor(WfClientActivityType.NormalActivity);

            branchActDesp.Key  = "N1";
            branchActDesp.Name = "CFO";

            branchActDesp.Properties.AddOrSetValue("AutoStartBranchProcesses", true);
            branchActDesp.Properties.AddOrSetValue("AutoStartBranchApprovalProcess", true);
            branchActDesp.Properties.AddOrSetValue("AutoStartBranchProcessExecuteSequence", 0);

            //增加审批人
            branchActDesp.Resources.Add(new WfClientUserResourceDescriptor(Consts.Users["Requestor"]));
            branchActDesp.Resources.Add(new WfClientUserResourceDescriptor(Consts.Users["Approver1"]));
            branchActDesp.Resources.Add(new WfClientUserResourceDescriptor(Consts.Users["CEO"]));

            processDesp.Activities.Add(branchActDesp);

            //线
            WfClientTransitionDescriptor transition = new WfClientTransitionDescriptor(processDesp.InitialActivity.Key, branchActDesp.Key);

            transition.Key = "L1";
            processDesp.InitialActivity.ToTransitions.Add(transition);

            WfClientTransitionDescriptor transition2 = new WfClientTransitionDescriptor(branchActDesp.Key, processDesp.CompletedActivity.Key);

            transition2.Key = "L2";
            branchActDesp.ToTransitions.Add(transition2);

            WfClientProcessDescriptorServiceProxy.Instance.SaveDescriptor(processDesp);

            //启动参数
            WfClientProcessStartupParams clientStartupParams = ProcessRuntimeHelper.PrepareClientProcessStartupParams(processDesp.Key);

            //流程实例
            WfClientRuntimeContext runtimeContext = new WfClientRuntimeContext();
            WfClientProcessInfo    process        = WfClientProcessRuntimeServiceProxy.Instance.StartWorkflow(clientStartupParams);

            return(WfClientProcessRuntimeServiceProxy.Instance.MoveToNextDefaultActivity(process.ID, runtimeContext));
        }
Ejemplo n.º 19
0
        public void ExcelStreamToClientTest()
        {
            WfCreateClientDynamicProcessParams createParams     = ProcessDescriptorHelper.CreateClientDynamicProcessParams();
            WfCreateClientDynamicProcessParams outProcessParams = null;

            WfClientDynamicProcessBuilder builder = new WfClientDynamicProcessBuilder(createParams);
            WfClientProcessDescriptor     client  = builder.Build(createParams.Key, createParams.Name);

            string processKey = createParams.Key;

            using (Stream stream = WfClientProcessDescriptorConverter.Instance.ClientDynamicProcessToExcelStream(client))
            {
                WfCreateClientDynamicProcessParamsConverter.Instance.ExcelStreamToClient(processKey, stream, ref outProcessParams);
            }
            createParams.ActivityMatrix.PropertyDefinitions.ForEach(action =>
            {
                action.DataType = ColumnDataType.String;
            });   //EXCEL 无法存储类型信息,所有默认都为string类型
            createParams.AreSame(outProcessParams);
        }
        public void SimpleProcessSerializationTest()
        {
            WfClientJsonConverterHelper.Instance.RegisterConverters();

            WfClientProcessDescriptor processDesp = ProcessDescriptorHelper.CreateSimpleClientProcessWithLines();

            string data = JSONSerializerExecute.Serialize(processDesp);

            Console.WriteLine(data);

            WfClientProcessDescriptor deserialized = JSONSerializerExecute.Deserialize <WfClientProcessDescriptor>(data);

            Assert.AreEqual(processDesp.Key, deserialized.Key);
            Assert.AreEqual(processDesp.Activities.Count, deserialized.Activities.Count);
            Assert.AreEqual(processDesp.InitialActivity.Key, deserialized.InitialActivity.Key);
            Assert.AreEqual(processDesp.CompletedActivity.Key, deserialized.CompletedActivity.Key);
            Assert.AreEqual(processDesp.InitialActivity.ToTransitions.Count, deserialized.InitialActivity.ToTransitions.Count);
            Assert.AreEqual(processDesp.CancelEventReceivers.Count, deserialized.CancelEventReceivers.Count);
            Assert.AreEqual(processDesp.CompletedActivity.GetFromTransitions().Count, deserialized.CompletedActivity.GetFromTransitions().Count);
        }
        public void ClientDynamicProcessToExcelStreamTest()
        {
            WfCreateClientDynamicProcessParams createParams = ProcessDescriptorHelper.CreateClientDynamicProcessParams();
            WfClientDynamicProcessBuilder      builder      = new WfClientDynamicProcessBuilder(createParams);
            WfClientProcessDescriptor          client       = builder.Build(createParams.Key, createParams.Name);

            string processKey = createParams.Key;

            System.Data.DataTable processTable = new System.Data.DataTable();
            System.Data.DataTable matrixTable  = new System.Data.DataTable();

            using (Stream stream = WfClientProcessDescriptorConverter.Instance.ClientDynamicProcessToExcelStream(client))
            {
                processTable = DocumentHelper.GetRangeValuesAsTable(stream, "Process", "A3");
                matrixTable  = DocumentHelper.GetRangeValuesAsTable(stream, "Matrix", "A3");
            }
            Assert.IsTrue(processTable.Rows.Count > 0);
            Assert.IsTrue(matrixTable.Rows.Count == 2);
            Assert.IsTrue(matrixTable.Rows[0]["CostCenter"].ToString() == "1001");
            Assert.IsTrue(matrixTable.Rows[1]["Age"].ToString() == "40");
        }