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, "线在配置文件中的属性项。任意添加|减少项就会报错"); }
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); }