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)); } }
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); }
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]); }
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"); }
/// <summary> /// 创建一个有4个节点的流程,并且保存它。开始点有两条出线,根据Amount是否大于等于5000来判断。 /// </summary> /// <returns></returns> public static WfClientProcessDescriptor PreapreProcessWithConditionLines() { WfClientProcessDescriptor processDesp = ProcessDescriptorHelper.CreateClientProcessWithConditionLines(); WfClientProcessDescriptorServiceProxy.Instance.SaveDescriptor(processDesp); return(processDesp); }
/// <summary> /// 创建一个简单流程并且保存一个流程定义 /// </summary> /// <returns></returns> public static WfClientProcessDescriptor PrepareSimpleProcess() { WfClientProcessDescriptor processDesp = ProcessDescriptorHelper.CreateSimpleClientProcessWithLines(); WfClientProcessDescriptorServiceProxy.Instance.SaveDescriptor(processDesp); return(processDesp); }
public void SimpleServerActivityMatrixResourceDescriptorToClient() { WfActivityMatrixResourceDescriptor server = ProcessDescriptorHelper.GetServerActivityMatrixResourceDescriptor(); WfClientResourceDescriptor client = null; WfClientActivityMatrixResourceDescriptorConverter.Instance.ServerToClient(server, ref client); ((WfClientActivityMatrixResourceDescriptor)client).AreSame(server); }
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); }
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); }
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); } }
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)); }
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"); }