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)
            {
            }
        }
        private static List <IWfProcessDescriptor> SaveProcessDescriptor(WfProcessImporterContext context)
        {
            List <IWfProcessDescriptor> result = new List <IWfProcessDescriptor>();

            XElementFormatter formatter = new XElementFormatter();

            formatter.OutputShortType = false;

            foreach (PackagePart part in context.ProcessDescParts)
            {
                XDocument            xmlDoc      = XDocument.Load(part.GetStream());
                IWfProcessDescriptor processDesp = (IWfProcessDescriptor)formatter.Deserialize(xmlDoc.Root);

                WfProcessDescriptorManager.SaveDescriptor(processDesp);

                IUser user = null;

                if (DeluxePrincipal.IsAuthenticated)
                {
                    user = DeluxeIdentity.CurrentUser;
                }

                WfProcessDescriptorInfoAdapter.Instance.UpdateImportTime(processDesp.Key, user);

                result.Add(processDesp);
            }

            return(result);
        }
        public void ExcelToSaveDescriptor(string processKey, Stream stream)
        {
            OperationContext.Current.FillContextToOguServiceContext();

            WfCreateClientDynamicProcessParams processParams = ExcelToWfCreateClientDynamicProcessParams(processKey, stream);

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

            WfProcessDescriptor processDesp = null;

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

            WfProcessDescriptorManager.SaveDescriptor(processDesp);
        }
        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. 5
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);
        }