public void CreateProcessTemplateExecutorTest()
        {
            IWfProcessDescriptor processDesp = CreateTestProcessDescriptor();

            WfSaveTemplateExecutor executor = new WfSaveTemplateExecutor(processDesp);

            executor.Execute();

            Assert.AreEqual(WfDesignerOperationType.CreateTemplate, executor.OperationType);
            IWfProcessDescriptor loadedProcessDesp = WfProcessDescriptorManager.LoadDescriptor(processDesp.Key);

            Assert.AreEqual(processDesp.Key, loadedProcessDesp.Key);
        }
        public void ProcessRequest(HttpContext context)
        {
            string json = context.Request["info"];
            string processID = context.Request["processID"];
            context.Response.ContentType = "text/plain";
            WfConverterHelper.RegisterConverters();
            List<WfProcessDescriptor> deserializedProcessDesp;
            IWfProcess process = null;

            if (!string.IsNullOrEmpty(processID))
            {
                process = WorkflowSettings.GetConfig().GetPersistManager().LoadProcessByProcessID(processID);
            }

            try
            {
                deserializedProcessDesp = JSONSerializerExecute.Deserialize<List<WfProcessDescriptor>>(json);
            }
            catch (Exception ex)
            {
                context.Response.Write("反序列化错误:" + ex.Message + ex.StackTrace);
                return;
            }

            try
            {
                foreach (var descriptor in deserializedProcessDesp)
                {
                    if (process != null && descriptor.Key == process.Descriptor.Key)
                    {
                        process.Descriptor = descriptor;
                        WorkflowSettings.GetConfig().GetPersistManager().SaveProcess(process);
                    }
                    else
                    {
                        WfSaveTemplateExecutor executor = new WfSaveTemplateExecutor(descriptor);

                        executor.Execute();
                    }
                }
            }
            catch (Exception ex)
            {
                context.Response.Write("保存错误:" + ex.Message + ex.StackTrace);
                return;
            }

            context.Response.Write("保存成功!");
        }
        public void ModifyProcessTemplateExecutorTest()
        {
            IWfProcessDescriptor processDesp = CreateTestProcessDescriptor();

            WfSaveTemplateExecutor createExecutor = new WfSaveTemplateExecutor(processDesp);

            createExecutor.Execute();

            WfSaveTemplateExecutor modifyExecutor = new WfSaveTemplateExecutor(processDesp);

            //再保存一次,变成修改操作
            modifyExecutor.Execute();

            Assert.AreEqual(WfDesignerOperationType.ModifyTemplate, modifyExecutor.OperationType);
            IWfProcessDescriptor loadedProcessDesp = WfProcessDescriptorManager.LoadDescriptor(processDesp.Key);

            Assert.AreEqual(processDesp.Key, loadedProcessDesp.Key);
        }
        public void DeleteProcessTemplateExecutorTest()
        {
            IWfProcessDescriptor processDesp = CreateTestProcessDescriptor();

            WfSaveTemplateExecutor createExecutor = new WfSaveTemplateExecutor(processDesp);

            createExecutor.Execute();

            WfDeleteTemplateExecutor deleteExecutor = new WfDeleteTemplateExecutor(processDesp.Key);

            deleteExecutor.Execute();

            Assert.AreEqual(WfDesignerOperationType.DeleteTemplate, deleteExecutor.OperationType);

            try
            {
                IWfProcessDescriptor loadedProcessDesp = WfProcessDescriptorManager.LoadDescriptor(processDesp.Key);

                throw new ApplicationException("不应该加载到已经删除的流程");
            }
            catch (SystemSupportException)
            {
            }
        }
        public void ImportProcessTemplateExecutorTest()
        {
            IWfProcessDescriptor processDesp = CreateTestProcessDescriptor();

            WfSaveTemplateExecutor createExecutor = new WfSaveTemplateExecutor(processDesp);

            createExecutor.Execute();

            MemoryStream stream = new MemoryStream();

            WfProcessExporter.ExportProcessDescriptors(new WfExportProcessDescriptorParams(), stream, processDesp.Key);

            stream.Seek(0, SeekOrigin.Begin);

            WfImportTemplateExecutor importTemplateExecutor = new WfImportTemplateExecutor(stream);

            importTemplateExecutor.Execute();

            Assert.AreEqual(1, importTemplateExecutor.ImportedProcesses.Count);
            Assert.AreEqual(processDesp.Key, importTemplateExecutor.ImportedProcesses[0].Key);
        }
        public void SaveDescriptor(WfClientProcessDescriptor clientProcessDesp)
        {
            OperationContext.Current.FillContextToOguServiceContext();

            WfProcessDescriptor processDesp = null;

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

            WfSaveTemplateExecutor executor = new WfSaveTemplateExecutor(processDesp);

            executor.Execute();
        }