Esempio n. 1
0
        public void SaveAndLoadTenantProcessTest()
        {
            IWfProcessDescriptor processDesp = CreateTestProcessDescriptor();

            string tenantCode = UuidHelper.NewUuidString();

            PrepareTenantContext(tenantCode);

            WfProcessDescriptorManager.SaveDescriptor(processDesp);

            //加载同一个租户的流程定义,如果不存在,会抛出异常
            IWfProcessDescriptor loadedSameTenant = WfProcessDescriptorManager.LoadDescriptor(processDesp.Key);

            Assert.AreEqual(processDesp.Key, loadedSameTenant.Key);

            PrepareTenantContext(UuidHelper.NewUuidString());

            try
            {
                loadedSameTenant = WfProcessDescriptorManager.LoadDescriptor(processDesp.Key);

                throw new ApplicationException("不应该加载到别的租户的流程");
            }
            catch (SystemSupportException)
            {
            }
        }
Esempio n. 2
0
 public static IWfProcessDescriptor LoadProcessDescriptorFromFile(string fileName)
 {
     using (FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
     {
         return(WfProcessDescriptorManager.LoadDescriptor(stream));
     }
 }
Esempio n. 3
0
 private static IWfProcessDescriptor LoadProcessDescriptor()
 {
     using (FileStream stream = new FileStream("Expense.xml", FileMode.Open, FileAccess.Read))
     {
         return(WfProcessDescriptorManager.LoadDescriptor(stream));
     }
 }
Esempio n. 4
0
        private void InitInstanceByProcessDescKey(string processDescKey)
        {
            List <IWfProcessDescriptor> processDesps = new List <IWfProcessDescriptor>();

            processDesps.Add(WfProcessDescriptorManager.LoadDescriptor(processDescKey));

            instanceDescription.Value = JSONSerializerExecute.Serialize(processDesps);
        }
        public Stream WfDynamicProcessToExcel(string processKey)
        {
            OperationContext.Current.FillContextToOguServiceContext();

            WfProcessDescriptor       processDesp = (WfProcessDescriptor)WfProcessDescriptorManager.LoadDescriptor(processKey);
            WfClientProcessDescriptor client      = null;

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

            return(WfClientProcessDescriptorConverter.Instance.ClientDynamicProcessToExcelStream(client));
        }
Esempio n. 6
0
        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 WfClientProcessDescriptor LoadDescriptor(string processKey)
        {
            if (processKey.IsNullOrEmpty())
            {
                throw new ApplicationException(Translator.Translate(Define.DefaultCulture, "流程描述的Key不能为空"));
            }

            OperationContext.Current.FillContextToOguServiceContext();

            WfProcessDescriptor processDesp = (WfProcessDescriptor)WfProcessDescriptorManager.LoadDescriptor(processKey);

            WfClientProcessDescriptor clientProcessDesp = null;

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

            return(clientProcessDesp);
        }
Esempio n. 8
0
        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 LoadProcessDesp()
        {
            IWfProcessDescriptor procDesp = WfProcessTestCommon.CreateProcessDescriptor();

            WfProcessDescriptorManager.SaveDescriptor(procDesp);
            string key = procDesp.Key;;
            IWfProcessDescriptor desp = WfProcessDescriptorManager.LoadDescriptor(key);

            //本机修改过app.config,确实为此。
            Assert.AreEqual(8, desp.Properties.Count, "流程在配置文件中的属性项。任意添加|减少项就会报错");

            Assert.AreEqual(9, desp.InitialActivity.Properties.Count, "活动在配置文件中的属性项。任意添加|减少项就会报错");

            if (desp.InitialActivity.BranchProcessTemplates.Count != 0)
            {
                Assert.AreEqual(7, desp.InitialActivity.BranchProcessTemplates[0].Properties.Count, "分支流程在配置文件中的属性项。任意添加|减少项就会报错");
            }

            Assert.AreEqual(6, desp.InitialActivity.ToTransitions[0].Properties.Count, "线在配置文件中的属性项。任意添加|减少项就会报错");
        }
Esempio n. 10
0
        public static void ExportProcessDescriptors(WfExportProcessDescriptorParams exportParams, Stream outputStream, params string[] processDespKeys)
        {
            exportParams.NullCheck("exportParams");
            processDespKeys.NullCheck("processDespKeys");

            WfExportProcessDescriptorContext context = new WfExportProcessDescriptorContext(exportParams);

            using (Package package = ZipPackage.Open(outputStream, FileMode.Create))
            {
                foreach (string key in processDespKeys)
                {
                    WfProcessDescriptor processDesp = (WfProcessDescriptor)WfProcessDescriptorManager.LoadDescriptor(key);

                    ExportProcessPart(package, processDesp, context);
                    ExportMatrixPart(package, processDesp, context);
                }

                ExportMappingPart(package, context);
            }
        }
        protected void btnConfirm_Click(object sender, EventArgs e)
        {
            try
            {
                List <IWfProcessDescriptor> processDesps = new List <IWfProcessDescriptor>();

                foreach (string key in this.ProcessDescInfoDeluxeGrid.SelectedKeys)
                {
                    processDesps.Add(WfProcessDescriptorManager.LoadDescriptor(key));
                }

                resultData.Value = JSONSerializerExecute.Serialize(processDesps);

                Page.ClientScript.RegisterStartupScript(this.GetType(), "returnProcesses",
                                                        string.Format("window.returnValue = $get('resultData').value; top.close();"),
                                                        true);
            }
            catch (System.Exception ex)
            {
                WebUtility.ShowClientError(ex.Message, ex.StackTrace, "错误");
            }
        }
Esempio n. 12
0
        public byte[] Export()
        {
            using (MemoryStream outputStream = new MemoryStream())
            {
                using (Package package = ZipPackage.Open(outputStream, FileMode.Create))
                {
                    foreach (var key in this.ProcessKeys)
                    {
                        var processDesc = (WfProcessDescriptor)WfProcessDescriptorManager.LoadDescriptor(key);
                        ExportProcessPart(package, processDesc);
                        ExportMatrixPart(package, processDesc);
                    }

                    ExportMappingPart(package);
                    package.Flush();
                    outputStream.Flush();
                    this.Reset();

                    return(outputStream.ToArray());
                }
            }
        }
Esempio n. 13
0
        public int DisplaceUserInProcessDescriptor(string processDespKey, string userID, string[] displacingUserIDArray)
        {
            IWfProcessDescriptor processDesp = WfProcessDescriptorManager.LoadDescriptor(processDespKey);

            IUser originalUser = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.Guid, userID).FirstOrDefault();
            OguObjectCollection <IUser> displacingUsers = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.Guid, displacingUserIDArray);

            List <IUser> distinctUsers = new List <IUser>();

            foreach (IUser user in displacingUsers)
            {
                if (distinctUsers.Exists(u => u.ID == user.ID) == false)
                {
                    distinctUsers.Add(user);
                }
            }

            int result = processDesp.ReplaceAllUserResourceDescriptors(originalUser, distinctUsers);

            WfProcessDescriptorManager.SaveDescriptor(processDesp);

            return(result);
        }
Esempio n. 14
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string sProcessKeys = Request["wfProcessKeys"].ToString();

            string[] arrProcessKeys = sProcessKeys.Split(',');

            var xDoc = new XDocument(
                new XDeclaration("1.0", "utf-8", "true"),
                new XElement("WorkflowProcesses")
                );

            for (int i = 0; i < arrProcessKeys.Length; i++)
            {
                XElementFormatter formatter = new XElementFormatter();

                formatter.OutputShortType = false;
                WfProcessDescriptor processDesc = (WfProcessDescriptor)WfProcessDescriptorManager.LoadDescriptor(arrProcessKeys[i]);
                XElement            xeWfProcess = formatter.Serialize(processDesc);

                xDoc.Element("WorkflowProcesses").Add(xeWfProcess);
            }

            Response.ContentType     = "text/xml";
            Response.ContentEncoding = Encoding.UTF8;
            if (arrProcessKeys.Count() > 1)
            {
                Response.AppendHeader("content-disposition", "attachment;fileName=ExportedProcess.xml");
            }
            else
            {
                Response.AppendHeader("content-disposition", string.Format("attachment;fileName={0}.xml", HttpUtility.UrlEncode(arrProcessKeys[0])));
            }
            //"attachment;fileName=ExportedProcess.xml");

            xDoc.Save(Response.OutputStream);
        }
Esempio n. 15
0
        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)
            {
            }
        }