protected override void AfterCreateProcessInstance(SysTaskProcess sysTaskProcess) { sysTaskProcess.Name = string.Format("创建活动{0}的分支流程", this.OwnerActivityID); //这一步可能是很长时间的操作 OguDataCollection <IUser> users = this.Template.Resources.ToUsers(); int index = 0; if (this.Template.ExecuteSequence == WfBranchProcessExecuteSequence.SerialInSameProcess) { sysTaskProcess.Activities.Add(CreateUserActivity(sysTaskProcess, index++, users)); SysTaskProcessRuntime.Persist(); } else { foreach (IUser user in users) { sysTaskProcess.Activities.Add(CreateUserActivity(sysTaskProcess, index++, new IUser[] { user })); SysTaskProcessRuntime.Persist(); } } if (this.AutoAddExitMaintainingStatusTask) { IWfProcess process = WfRuntime.GetProcessByActivityID(this.OwnerActivityID); sysTaskProcess.Activities.Add(sysTaskProcess.CreateExitMaintainingActivity(process.ID, index++)); SysTaskProcessRuntime.Persist(); } }
/// <summary> /// 将ClientState字符串的信息加载到ClientState中 /// </summary> /// <remarks> /// 将ClientState字符串的信息加载到ClientState中 /// </remarks> /// <param name="clientState">ClientState字符串</param> protected override void LoadClientState(string clientState) { if (clientState == null || clientState == "null") { return; } object[] foArray = JSONSerializerExecute.Deserialize <object[]>(clientState); if (null != foArray && foArray.Length > 0) { OguDataCollection <IOguObject> objs = (OguDataCollection <IOguObject>)JSONSerializerExecute.DeserializeObject(foArray[0], typeof(OguDataCollection <IOguObject>)); this._selectedOuUserData = objs; if (foArray.Length > 1 && null != foArray[1]) { this.Text = foArray[1].ToString(); } else { this.Text = ""; } } else { this.SelectedOuUserData = new OguDataCollection <IOguObject>(); } }
/// <summary> /// 转换成创建流程的参数集合。 /// </summary> /// <returns></returns> public WfCreateActivityParamCollection ToCreateActivityParams(PropertyDefineCollection definedProperties) { definedProperties.NullCheck("definedProperties"); OguDataCollection <IUser> users = new OguDataCollection <IUser>(); WfCreateActivityParamCollection tempResult = new WfCreateActivityParamCollection(); foreach (WfResourceDescriptor resource in this) { if (resource is IWfCreateActivityParamsGenerator && ((IWfCreateActivityParamsGenerator)resource).UseCreateActivityParams) { ((IWfCreateActivityParamsGenerator)resource).Fill(tempResult, definedProperties); } else { resource.FillUsers(users); } } WfCreateActivityParamCollection result = new WfCreateActivityParamCollection(); result.CopyFrom(UsersToCreateActivityParams(users, definedProperties)); result.CopyFrom(tempResult); result.Sort((x, y) => x.ActivitySN - y.ActivitySN); return(result); }
protected internal override void FillUsers(OguDataCollection <IUser> users) { if (this._User != null) { users.Add(this._User); } }
private static void CheckStartProcessUserPermission(IWfProcess process) { if (process.EntryInfo == null && WfRuntime.ProcessContext.EnableSimulation == false) { //看看是否使用起始点的指派人是否限为流程启动人 if (process.Descriptor.Properties.GetValue("OnlyInitialResourcesCanStartProcess", false)) { bool allowed = DeluxePrincipal.IsAuthenticated; if (allowed) { allowed = process.InitialActivity.Candidates.Contains(DeluxeIdentity.CurrentUser); } allowed.FalseThrow(Translator.Translate(Define.DefaultCulture, "只有流程起始活动的指派人才能启动流程")); } else { if (process.Descriptor.ProcessStarters.Count > 0) { OguDataCollection <IUser> starters = process.Descriptor.ProcessStarters.ToUsers(); (starters.FindSingleObjectByID(DeluxeIdentity.CurrentUser.ID) != null).FalseThrow( Translator.Translate(Define.DefaultCulture, "只有被允许启动流程的人才能启动流程")); } } } }
protected internal override void FillUsers(OguDataCollection<IUser> users) { IWfActivity target = TargetActivity; if (target != null) target.Assignees.ForEach(a => users.Add(a.User)); }
public void ActivityOperatorResourceTest() { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.approver1); IUser requestor = (IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object; tp.Operator = requestor; process.MoveTo(tp); WfActivityOperatorResourceDescriptor resource = new WfActivityOperatorResourceDescriptor(); resource.ActivityKey = process.InitialActivity.Descriptor.Key; process.CurrentActivity.Descriptor.Resources.Add(resource); OguDataCollection <IUser> users = process.CurrentActivity.Descriptor.Resources.ToUsers(); Assert.IsTrue(users.Count > 0); Assert.AreEqual(requestor.ID, users[0].ID, "验证资源中的人员是否是之前活动的操作人"); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); users = process.CurrentActivity.Descriptor.Resources.ToUsers(); Assert.IsTrue(users.Count > 0, "重新加载后资源中应该有人"); Assert.AreEqual(requestor.ID, users[0].ID, "重新加载后验证资源中的人员是否是之前活动的操作人"); }
private void FillObjectToUsers(OguDataCollection<IUser> users, IOguObject obj) { OguBase wrappedObj = (OguBase)OguBase.CreateWrapperObject(obj); wrappedObj.FullPath = obj.FullPath; switch (obj.ObjectType) { case SchemaType.Users: if (users.Exists(u => string.Compare(u.ID, obj.ID, true) == 0) == false) users.Add((IUser)wrappedObj); break; case SchemaType.Groups: IGroup group = (IGroup)wrappedObj; group.Members.ForEach(u => { if (users.Exists(ul => string.Compare(ul.ID, u.ID, true) == 0) == false) users.Add(u); }); break; case SchemaType.Organizations: case SchemaType.OrganizationsInRole: IOrganization dept = (IOrganization)obj; dept.Children.ForEach(o => FillObjectToUsers(users, o)); break; } }
private void FillObjectToUsers(OguDataCollection <IUser> users, IOguObject obj) { OguBase wrappedObj = (OguBase)OguBase.CreateWrapperObject(obj); wrappedObj.FullPath = obj.FullPath; switch (obj.ObjectType) { case SchemaType.Users: if (users.Exists(u => string.Compare(u.ID, obj.ID, true) == 0) == false) { users.Add((IUser)wrappedObj); } break; case SchemaType.Groups: IGroup group = (IGroup)wrappedObj; group.Members.ForEach(u => { if (users.Exists(ul => string.Compare(ul.ID, u.ID, true) == 0) == false) { users.Add(u); } }); break; case SchemaType.Organizations: case SchemaType.OrganizationsInRole: IOrganization dept = (IOrganization)obj; dept.Children.ForEach(o => FillObjectToUsers(users, o)); break; } }
private static OguDataCollection <IUser> DeserializeUsers(IList objs) { Dictionary <string, IUser> userDict = new Dictionary <string, IUser>(); for (int i = 0; i < objs.Count; i++) { IOguObject obj = (IOguObject)objs[i]; if (obj is IGroup) { foreach (IUser user in ((IGroup)obj).Members) { userDict[user.ID] = user; } } else if (obj is IUser) { IUser user = (IUser)obj; userDict[user.ID] = user; } } OguDataCollection <IUser> users = new OguDataCollection <IUser>(); foreach (KeyValuePair <string, IUser> kp in userDict) { users.Add(kp.Value); } return(users); }
private void InitUserInput(Control container) { userInput.ID = "userInput"; userInput.SelectMask = UserControlObjectMask.User | UserControlObjectMask.Sideline; if (this.IsGetDataSourceEventHooked) { userInput.GetDataSource += OnGetDataSource; } if (this.IsValidateInputOuUserEventHooked) { userInput.ValidateInputOuUser += OnValidateInputOuUser; } if (this.Operation == "update") { OguDataCollection <IUser> users = CurrentActivityDescriptor.Resources.ToUsers(); OguDataCollection <IOguObject> selectedObjs = new OguDataCollection <IOguObject>(); users.ForEach(u => selectedObjs.Add(u)); userInput.SelectedOuUserData = selectedObjs; } container.Controls.Add(userInput); }
protected internal override void FillUsers(OguDataCollection <IUser> users) { if (this._AUSchemaRole != null) { this._AUSchemaRole.FillUsers(this.ProcessInstance, users); } }
private static OguDataCollection <IUser> PrepareBranchTransferUsers(IWfBranchProcessTemplateDescriptor template) { OguDataCollection <IUser> users = null; bool fetchFirstSubInitUsers = false; //如果是串行流程或者Templete的Resource中没有人,则从第一个点取人 if (template.ExecuteSequence == WfBranchProcessExecuteSequence.SerialInSameProcess) { fetchFirstSubInitUsers = true; } else { users = template.Resources.ToUsers(); if (template.OperationDefinition == null && users.Count == 0) { fetchFirstSubInitUsers = true; } } if (fetchFirstSubInitUsers) { IWfProcessDescriptor processDesp = template.GetBranchProcessDescriptor(); users = processDesp.InitialActivity.Resources.ToUsers(); } return(users); }
private void InitUserInput(Control container) { userInput.ID = "userInput"; userInput.SelectMask = UserControlObjectMask.User | UserControlObjectMask.Sideline; userInput.ShowCirculateUsers = this.ShowCirculateUsers; if (CurrentActivityDescriptor != null) { userInput.MultiSelect = AllowMultiUsers; } if (this.Operation == "update") { OguDataCollection <IUser> users = CurrentActivityDescriptor.Resources.ToUsers(); OguDataCollection <IOguObject> selectedObjs = new OguDataCollection <IOguObject>(); users.ForEach(u => selectedObjs.Add(u)); userInput.ConsignUsers = selectedObjs; OguDataCollection <IUser> circulators = WfVariableDefine.GetCirculateUsers(CurrentActivityDescriptor); selectedObjs = new OguDataCollection <IOguObject>(); circulators.ForEach(u => selectedObjs.Add(u)); userInput.Circulators = selectedObjs; } container.Controls.Add(userInput); }
private static OguDataCollection<IUser> DeserializeUsers(IList objs) { Dictionary<string, IUser> userDict = new Dictionary<string, IUser>(); for (int i = 0; i < objs.Count; i++) { IOguObject obj = (IOguObject)objs[i]; if (obj is IGroup) { foreach (IUser user in ((IGroup)obj).Members) { userDict[user.ID] = user; } } else if (obj is IUser) { IUser user = (IUser)obj; userDict[user.ID] = user; } } OguDataCollection<IUser> users = new OguDataCollection<IUser>(); foreach (KeyValuePair<string, IUser> kp in userDict) { users.Add(kp.Value); } return users; }
protected void InnerGetDataSource(string sPrefix, int iCount, object context, ref IEnumerable result) { ServiceBrokerContext.Current.Timeout = QueryUserTimeout; IOrganization rootOrg = UserOUControlSettings.GetConfig().UserOUControlQuery.GetOrganizationByPath(this.RootPath); OguDataCollection <IOguObject> users = QueryChildrenBySelectMask(rootOrg, sPrefix); ArrayList arrList = new ArrayList(); if (this.CanSelectRoot) { if (rootOrg.DisplayName.IndexOf(sPrefix) == 0) { arrList.Add(OguBase.CreateWrapperObject(rootOrg)); } } for (int i = 0; i < users.Count; i++) { //资源类型过滤 IOguObject oguObject = OguBase.CreateWrapperObject(users[i]); if (this.SelectMask == UserControlObjectMask.All || (((int)this.SelectMask & (int)oguObject.ObjectType)) != 0) { arrList.Add(oguObject); } } //修饰一下结果 foreach (OguBase obj in arrList) { string path = string.Empty; if (obj.Parent != null) { path = obj.Parent.FullPath; } if (path.IndexOf(rootOrg.FullPath) == 0) { path = path.Substring(rootOrg.FullPath.Length); path = path.Trim('\\'); } if (obj is OguBase) { // v-weirf changed : obj must be a OguBase to use Description if (obj is IUser) { ((OguBase)obj).Description = string.Format("{0} {1}", ((IUser)obj).Occupation, path); } else if (obj is OguOrganization) { ((OguBase)obj).Description = path; } } } result = arrList; }
private OguDataCollection <IOguObject> QueryChildrenBySelectMask(IOrganization dept, string searchString) { ServiceBrokerContext.Current.SaveContextStates(); var SelectMask = UserControlObjectMask.All; var MaxQueryCount = 15; try { ServiceBrokerContext.Current.ListObjectCondition = ListObjectMask.All; OguDataCollection <IOguObject> result = new OguDataCollection <IOguObject>(); if (SelectMask == UserControlObjectMask.Organization) { OguObjectCollection <IOrganization> orgs = dept.QueryChildren <IOrganization>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IOrganization org in orgs) { result.Add(org); } } else if (SelectMask == UserControlObjectMask.Group) { OguObjectCollection <IGroup> groups = dept.QueryChildren <IGroup>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IOrganization group in groups) { result.Add(group); } } else if (SelectMask == UserControlObjectMask.User || SelectMask == (UserControlObjectMask.User | UserControlObjectMask.Sideline)) { OguObjectCollection <IUser> users = dept.QueryChildren <IUser>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IUser user in users) { result.Add(user); } } else { if ((int)(SelectMask & (UserControlObjectMask.Group | UserControlObjectMask.User | UserControlObjectMask.Organization)) != 0) { OguObjectCollection <IOguObject> objs = dept.QueryChildren <IOguObject>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IOguObject obj in objs) { result.Add(obj); } } } return(result); } finally { ServiceBrokerContext.Current.RestoreSavedStates(); } }
protected internal override void FillUsers(OguDataCollection<IUser> users) { if (this._Department != null) { OguObjectCollection<IUser> children = this._Department.GetAllChildren<IUser>(true); children.ForEach(u => users.Add(u)); } }
private OguDataCollection <IOguObject> QueryChildrenBySelectMask(IOrganization dept, string searchString) { ServiceBrokerContext.Current.SaveContextStates(); try { var queryImpl = UserOUControlSettings.GetConfig().UserOUControlQuery; ServiceBrokerContext.Current.ListObjectCondition = ShowDeletedObjects ? ListObjectMask.All : ListObjectMask.Common; OguDataCollection <IOguObject> result = new OguDataCollection <IOguObject>(); if (SelectMask == UserControlObjectMask.Organization) { OguObjectCollection <IOrganization> orgs = queryImpl.QueryDescendants <IOrganization>(SchemaQueryType.Organizations, dept, searchString, MaxQueryCount); //dept.QueryChildren<IOrganization>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IOrganization org in orgs) { result.Add(org); } } else if (SelectMask == UserControlObjectMask.Group) { OguObjectCollection <IGroup> groups = queryImpl.QueryDescendants <IGroup>(SchemaQueryType.Groups, dept, searchString, MaxQueryCount); // dept.QueryChildren<IGroup>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IGroup group in groups) { result.Add(group); } } else if (SelectMask == UserControlObjectMask.User || SelectMask == (UserControlObjectMask.User | UserControlObjectMask.Sideline)) { OguObjectCollection <IUser> users = queryImpl.QueryDescendants <IUser>(SchemaQueryType.Groups, dept, searchString, MaxQueryCount); //dept.QueryChildren<IUser>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IUser user in users) { result.Add(user); } } else { if ((int)(SelectMask & (UserControlObjectMask.Group | UserControlObjectMask.User | UserControlObjectMask.Organization)) != 0) { OguObjectCollection <IOguObject> objs = queryImpl.QueryDescendants <IOguObject>(SchemaQueryType.Users | SchemaQueryType.Groups | SchemaQueryType.Organizations, dept, searchString, MaxQueryCount); //dept.QueryChildren<IOguObject>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IOguObject obj in objs) { result.Add(obj); } } } return(result); } finally { ServiceBrokerContext.Current.RestoreSavedStates(); } }
/// <summary> /// 得到所有的用户,包括矩阵中的和直接包含的 /// </summary> /// <param name="auCodeName"></param> /// <returns></returns> public IEnumerable <IUser> GetAllUsers(string auCodeName) { OguDataCollection <IUser> result = new OguDataCollection <IUser>(); result.CopyFrom(GetDirectUsers(auCodeName)); result.CopyFrom(GetObjectsFromMatrix(auCodeName)); return(result); }
/// <summary> /// 得到用户的所有兼职信息的TopOU /// </summary> /// <returns></returns> public OguDataCollection<IOrganization> GetCurrentAllTopOUs() { OguDataCollection<IOrganization> result = new OguDataCollection<IOrganization>(); foreach (IUser user in DeluxeIdentity.CurrentUser.AllRelativeUserInfo) result.Add(user.TopOU); return result; }
protected internal override void FillUsers(OguDataCollection<OGUPermission.IUser> users) { if (this._Group != null) { OguObjectCollection<IUser> children = this._Group.Members; children.ForEach(u => users.Add(u)); } }
protected internal override void FillUsers(OguDataCollection <IUser> users) { IWfActivity target = TargetActivity; if (target != null) { target.Assignees.ForEach(a => users.Add(a.User)); } }
protected internal override void FillUsers(OguDataCollection <OGUPermission.IUser> users) { if (this._Group != null) { OguObjectCollection <IUser> children = this._Group.Members; children.ForEach(u => users.Add(u)); } }
protected internal override void FillUsers(OguDataCollection <IUser> users) { if (this._Department != null) { OguObjectCollection <IUser> children = this._Department.GetAllChildren <IUser>(true); children.ForEach(u => users.Add(u)); } }
public WfAssigneeCollection ToAssignees() { OguDataCollection <IUser> users = ToUsers(); WfAssigneeCollection result = new WfAssigneeCollection(); users.ForEach(u => result.Add(u)); return(result); }
protected override void LoadViewState(object savedState) { base.LoadViewState(savedState); HiddenButtonWrapper bw = GetPropertyValue("ButtonWrapper", (HiddenButtonWrapper)null); buttonWrapper.TargetControlID = bw.TargetControlID; this.selectedOuUserData = (OguDataCollection <IOguObject>) this.ViewState["SelectedData"]; }
private static void FillAndDistinctUsers(IEnumerable <IUser> source, OguDataCollection <IUser> target) { foreach (IUser user in source) { if (target.Exists(u => string.Compare(u.ID, user.ID, true) == 0) == false) { target.Add(user); } } }
public OguDataCollection <IUser> ToUsers() { OguDataCollection <IUser> result = new OguDataCollection <IUser>(); this.ForEach(r => r.FillUsers(result)); result.Distinct((src, dest) => string.Compare(src.ID, dest.ID) == 0); return(result); }
protected internal override void FillUsers(OguDataCollection<IUser> users) { try { users.CopyFrom(EvaluateCondition()); } catch (WfDynamicResourceEvaluationException ex) { ex.WriteToLog(); } }
/// <summary> /// 得到某个流程实例点的送阅人 /// </summary> /// <param name="activity"></param> /// <returns></returns> public static OguDataCollection <IUser> GetActivityCirculators(IWfActivity activity) { OguDataCollection <IUser> result = new OguDataCollection <IUser>(); if (activity != null) { result = activity.Context.GetValue("circulators", result); } return(result); }
protected internal override void FillUsers(OguDataCollection <IUser> users) { try { users.CopyFrom(EvaluateCondition()); } catch (WfDynamicResourceEvaluationException ex) { ex.WriteToLog(); } }
protected void Page_Load(object sender, EventArgs e) { //if (!IsPostBack) //{ OguUser user = new OguUser("80f4464f-e912-40c9-9502-c369a0d935ee"); OguDataCollection<IOguObject> list = new OguDataCollection<IOguObject>(); list.Add(user); this.OuUserInputControl1.SelectedOuUserData = list; //} }
protected void Page_Load(object sender, EventArgs e) { //if (!IsPostBack) //{ OguUser user = new OguUser("80f4464f-e912-40c9-9502-c369a0d935ee"); OguDataCollection <IOguObject> list = new OguDataCollection <IOguObject>(); list.Add(user); this.OuUserInputControl1.SelectedOuUserData = list; //} }
protected internal override void FillUsers(OguDataCollection<IUser> users) { if (this._Role != null) { SOARoleContext.DoAction(this._Role, this.ProcessInstance, (context) => { foreach (IOguObject obj in this._Role.ObjectsInRole) { FillObjectToUsers(users, obj); } }); } }
protected internal override void FillUsers(OguDataCollection <IUser> users) { if (this._Role != null) { SOARoleContext.DoAction(this._Role, this.ProcessInstance, (context) => { foreach (IOguObject obj in this._Role.ObjectsInRole) { FillObjectToUsers(users, obj); } }); } }
public static OguDataCollection <IUser> GetCirculateUsers(IWfActivityDescriptor actDesp) { OguDataCollection <IUser> result = new OguDataCollection <IUser>(); string serializedData = actDesp.Variables.GetValue(CirculateUsersVariableName, string.Empty); if (string.IsNullOrEmpty(serializedData) == false) { result = SerializationHelper.DeserializeStringToObject <OguDataCollection <IUser> >(serializedData, SerializationFormatterType.Binary); } return(result); }
protected internal override void FillUsers(OguDataCollection<IUser> users) { IWfActivity target = TargetActivity; if (target != null) { //如果该环节存在操作人,则使用操作人。否则使用候选人 if (OguUser.IsNotNullOrEmpty(target.Operator)) users.Add(target.Operator); else target.Candidates.ForEach(a => users.Add(a.User)); } }
private OguDataCollection <IOguObject> InnerCheckInputOuUser(string chkString) { //ServiceBrokerContext.Current.Timeout = QueryUserTimeout; IOrganization dept = OguMechanismFactory.GetMechanism().GetObjects <IOrganization>(SearchOUIDType.FullPath, OguPermissionSettings.GetConfig().RootOUPath)[0]; OguDataCollection <IOguObject> users = QueryChildrenBySelectMask(dept, chkString); OguDataCollection <IOguObject> forSelected = new OguDataCollection <IOguObject>(); for (int i = 0; i < users.Count; i++) { forSelected.Add(OguBase.CreateWrapperObject(users[i])); } if (dept.DisplayName.IndexOf(chkString) == 0) { forSelected.Add(OguBase.CreateWrapperObject(dept)); } IOrganization root = OguMechanismFactory.GetMechanism().GetRoot(); foreach (OguBase obj in forSelected) { string path = string.Empty; if (obj.Parent != null) { path = obj.Parent.FullPath; } if (path.IndexOf(root.FullPath) == 0) { path = path.Substring(root.FullPath.Length); path = path.Trim('\\'); } if (obj is IUser) { ((OguUser)obj).Description = string.Format("{0} {1}", ((OguUser)obj).Occupation, path); } else if (obj is OguOrganization) { ((OguOrganization)obj).Description = path; } else { ((OguUser)obj).Description = path; } } return(forSelected); }
protected OguDataCollection <IOguObject> OnValidateInputOuUser(string chkString, object context = null) { OguDataCollection <IOguObject> result = null; if (this.ValidateInputOuUser != null) { result = ValidateInputOuUser(chkString); } else { result = new OguDataCollection <IOguObject>(); } return(result); }
private static Dictionary<string, object> PrepareBasicDictionary() { Dictionary<string, object> result = new Dictionary<string, object>(); result.Add("Name", "Shen Zheng"); result.Add("Age", (DateTime.Now.Year - 1972)); result.Add("Salary", (Decimal)10000.00); result.Add("Birthday", new DateTime(1972, 4, 26)); result.Add("IsMale", true); IUser user = OguMechanismFactory.GetMechanism().GetObjects<IUser>(SearchOUIDType.LogOnName, "wanhw").FirstOrDefault(); result.Add("Owner", user); result.Add("OwnerDepartment", user.Parent); IGroup group = OguMechanismFactory.GetMechanism().GetObjects<IGroup>(SearchOUIDType.FullPath, "机构人员\\远洋地产\\全体党员").FirstOrDefault(); result.Add("Group", group); OguDataCollection<IUser> multiUsers = new OguDataCollection<IUser>(); multiUsers.Add(user); result.Add("MultiUsers", multiUsers); OguDataCollection<IOrganization> multiOrgs = new OguDataCollection<IOrganization>(); multiOrgs.Add(user.Parent); result.Add("MultiOrgs", multiOrgs); OguDataCollection<IGroup> multiGroups = new OguDataCollection<IGroup>(); multiGroups.Add(group); result.Add("MultiGroups", multiGroups); OguDataCollection<IOguObject> multiObjs = new OguDataCollection<IOguObject>(); multiObjs.Add(user); multiObjs.Add(user.Parent); result.Add("MultiObjs", multiObjs); return result; }
private OguDataCollection<IOguObject> InnerCheckInputOuUser(string chkString) { //ServiceBrokerContext.Current.Timeout = QueryUserTimeout; IOrganization dept = OguMechanismFactory.GetMechanism().GetObjects<IOrganization>(SearchOUIDType.FullPath, OguPermissionSettings.GetConfig().RootOUPath)[0]; OguDataCollection<IOguObject> users = QueryChildrenBySelectMask(dept, chkString); OguDataCollection<IOguObject> forSelected = new OguDataCollection<IOguObject>(); for (int i = 0; i < users.Count; i++) { forSelected.Add(OguBase.CreateWrapperObject(users[i])); } if (dept.DisplayName.IndexOf(chkString) == 0) { forSelected.Add(OguBase.CreateWrapperObject(dept)); } IOrganization root = OguMechanismFactory.GetMechanism().GetRoot(); foreach (OguBase obj in forSelected) { string path = string.Empty; if (obj.Parent != null) path = obj.Parent.FullPath; if (path.IndexOf(root.FullPath) == 0) { path = path.Substring(root.FullPath.Length); path = path.Trim('\\'); } if (obj is IUser) ((OguUser)obj).Description = string.Format("{0} {1}", ((OguUser)obj).Occupation, path); else if (obj is OguOrganization) ((OguOrganization)obj).Description = path; else ((OguUser)obj).Description = path; } return forSelected; }
public OguDataCollection<IUser> GetUsersFromSOARole(SOARolePropertiesQueryParamCollection qps) { SOARolePropertyRowCollection rows = null; OguDataCollection<IUser> users = new OguDataCollection<IUser>(); var schemaRoleID = txtSchemaRoleID.Text; var roleRows = AU.Adapters.AUMatrixHelper.LoadSchemaRolePropertyRows(schemaRoleID); if (qps != null) { rows = roleRows.Query(qps); } foreach (SOARolePropertyRowUsers rowUsers in rows.GenerateRowsUsers()) { foreach (IUser user in rowUsers.Users) { if (users.Contains(user) == false) { users.Add(user); } } } return users; }
/// <summary> /// 得到所有的用户,包括矩阵中的和直接包含的 /// </summary> /// <param name="auCodeName"></param> /// <returns></returns> public IEnumerable<IUser> GetAllUsers(string auCodeName) { OguDataCollection<IUser> result = new OguDataCollection<IUser>(); result.CopyFrom(GetDirectUsers(auCodeName)); result.CopyFrom(GetObjectsFromMatrix(auCodeName)); return result; }
public void FillUsers(IWfProcess process, OguDataCollection<IUser> users) { this.DoCurrentRoleAction(process, (role, auCodeName) => users.CopyFrom(this.GetAllUsers(auCodeName))); }
private void InitCirculateUserInput(Control container) { circulateUserInput.ID = "circulateUserInput"; circulateUserInput.SelectMask = UserControlObjectMask.User; if (CurrentActivityDescriptor != null) circulateUserInput.MultiSelect = AllowMultiUsers; if (this.Operation == "update") { OguDataCollection<IUser> users = WfVariableDefine.GetCirculateUsers(CurrentActivityDescriptor); OguDataCollection<IOguObject> selectedObjs = new OguDataCollection<IOguObject>(); users.ForEach(u => selectedObjs.Add(u)); circulateUserInput.SelectedOuUserData = selectedObjs; } container.Controls.Add(circulateUserInput); }
private void InitUserInput(Control container) { userInput.ID = "userInput"; userInput.SelectMask = UserControlObjectMask.User | UserControlObjectMask.Sideline; if (CurrentActivityDescriptor != null) userInput.MultiSelect = AllowMultiUsers; if (this.Operation == "update") { OguDataCollection<IOguObject> selectedObjs = new OguDataCollection<IOguObject>(); if (CurrentActivityDescriptor.Instance != null) CurrentActivityDescriptor.Instance.Candidates.ForEach(a => selectedObjs.Add(a.User)); userInput.SelectedOuUserData = selectedObjs; } container.Controls.Add(userInput); }
protected internal override void FillUsers(OguDataCollection<IUser> users) { if (this._AUSchemaRole != null) { this._AUSchemaRole.FillUsers(this.ProcessInstance, users); } }
private OguDataCollection<IOguObject> QueryChildrenBySelectMask(IOrganization dept, string searchString) { ServiceBrokerContext.Current.SaveContextStates(); var SelectMask = UserControlObjectMask.All; var MaxQueryCount = 15; try { ServiceBrokerContext.Current.ListObjectCondition = ListObjectMask.All; OguDataCollection<IOguObject> result = new OguDataCollection<IOguObject>(); if (SelectMask == UserControlObjectMask.Organization) { OguObjectCollection<IOrganization> orgs = dept.QueryChildren<IOrganization>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IOrganization org in orgs) result.Add(org); } else if (SelectMask == UserControlObjectMask.Group) { OguObjectCollection<IGroup> groups = dept.QueryChildren<IGroup>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IOrganization group in groups) result.Add(group); } else if (SelectMask == UserControlObjectMask.User || SelectMask == (UserControlObjectMask.User | UserControlObjectMask.Sideline)) { OguObjectCollection<IUser> users = dept.QueryChildren<IUser>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IUser user in users) result.Add(user); } else { if ((int)(SelectMask & (UserControlObjectMask.Group | UserControlObjectMask.User | UserControlObjectMask.Organization)) != 0) { OguObjectCollection<IOguObject> objs = dept.QueryChildren<IOguObject>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IOguObject obj in objs) result.Add(obj); } } return result; } finally { ServiceBrokerContext.Current.RestoreSavedStates(); } }
/// <summary> /// 从矩阵中获得对象。这主要取决于上下文中的参数 /// </summary> /// <returns></returns> public OguDataCollection<IOguObject> GetObjectsFromMatrix() { OguDataCollection<IOguObject> result = new OguDataCollection<IOguObject>(); SOARoleContext context = SOARoleContext.Current; if (context != null && context.QueryParams.Count > 0) { SOARolePropertyRowCollection matchedRows = this.Rows.Query(context.QueryParams); matchedRows = matchedRows.ExtractMatrixRows(); foreach (SOARolePropertyRowUsers rowUsers in matchedRows.GenerateRowsUsers()) { foreach (IUser user in rowUsers.Users) { if (result.Contains(user) == false) result.Add(user); } } } return result; }
protected override void LoadViewState(object savedState) { base.LoadViewState(savedState); this._selectedOuUserData = (OguDataCollection<IOguObject>)ViewState["SelectedData"]; }
/// <summary> /// 将ClientState字符串的信息加载到ClientState中 /// </summary> /// <remarks> /// 将ClientState字符串的信息加载到ClientState中 /// </remarks> /// <param name="clientState">ClientState字符串</param> protected override void LoadClientState(string clientState) { if (clientState == null || clientState == "null") return; object[] foArray = JSONSerializerExecute.Deserialize<object[]>(clientState); if (null != foArray && foArray.Length > 0) { OguDataCollection<IOguObject> objs = (OguDataCollection<IOguObject>)JSONSerializerExecute.DeserializeObject(foArray[0], typeof(OguDataCollection<IOguObject>)); this._selectedOuUserData = objs; if (foArray.Length > 1 && null != foArray[1]) this.Text = foArray[1].ToString(); else this.Text = ""; } else { this.SelectedOuUserData = new OguDataCollection<IOguObject>(); } }
private OguDataCollection<IOguObject> InnerCheckInputOuUser(string chkString) { ServiceBrokerContext.Current.Timeout = QueryUserTimeout; IOrganization root = UserOUControlSettings.GetConfig().UserOUControlQuery.GetOrganizationByPath(this.RootPath); OguDataCollection<IOguObject> users = QueryChildrenBySelectMask(root, chkString); OguDataCollection<IOguObject> forSelected = new OguDataCollection<IOguObject>(); for (int i = 0; i < users.Count; i++) { if (((int)users[i].ObjectType & (int)this.SelectMask) != 0) { forSelected.Add(OguBase.CreateWrapperObject(users[i])); } } if (this.CanSelectRoot) { if (root.DisplayName.IndexOf(chkString) == 0) { forSelected.Add(OguBase.CreateWrapperObject(root)); } } //沈峥添加,修饰一下Description //IOrganization root = OguMechanismFactory.GetMechanism().GetRoot(); foreach (OguBase obj in forSelected) { string path = string.Empty; if (obj.Parent != null) path = obj.Parent.FullPath; if (path.IndexOf(root.FullPath) == 0) { path = path.Substring(root.FullPath.Length); path = path.Trim('\\'); } if (obj is OguBase) { //v-weirf changed, for Description setable,obj must be OguBase if (obj is IUser) ((OguBase)obj).Description = string.Format("{0} {1}", ((IUser)obj).Occupation, path); else if (obj is IOrganization) ((OguBase)obj).Description = path; else ((OguBase)obj).Description = path; } } return forSelected; }
protected internal override void FillUsers(OguDataCollection<IUser> users) { SOARoleContext.DoAction(this.PropertyDefinitions, this.ProcessInstance, (context) => { SOARolePropertyRowCollection matchedRows = this.Rows.QueryWithoutCondition(context.QueryParams); matchedRows = matchedRows.ExtractMatrixRows(); matchedRows = this.MergeExternalMatrix(matchedRows, context.QueryParams); matchedRows = matchedRows.FilterByConditionColumn(); foreach (SOARolePropertyRowUsers rowUsers in matchedRows.GenerateRowsUsers()) { foreach (IUser user in rowUsers.Users) { if (users.Contains(user) == false) users.Add(user); } } }); }
private OguDataCollection<IOguObject> QueryChildrenBySelectMask(IOrganization dept, string searchString) { ServiceBrokerContext.Current.SaveContextStates(); try { var queryImpl = UserOUControlSettings.GetConfig().UserOUControlQuery; ServiceBrokerContext.Current.ListObjectCondition = ShowDeletedObjects ? ListObjectMask.All : ListObjectMask.Common; OguDataCollection<IOguObject> result = new OguDataCollection<IOguObject>(); if (SelectMask == UserControlObjectMask.Organization) { OguObjectCollection<IOrganization> orgs = queryImpl.QueryDescendants<IOrganization>(SchemaQueryType.Organizations, dept, searchString, MaxQueryCount); //dept.QueryChildren<IOrganization>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IOrganization org in orgs) result.Add(org); } else if (SelectMask == UserControlObjectMask.Group) { OguObjectCollection<IGroup> groups = queryImpl.QueryDescendants<IGroup>(SchemaQueryType.Groups, dept, searchString, MaxQueryCount); // dept.QueryChildren<IGroup>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IGroup group in groups) result.Add(group); } else if (SelectMask == UserControlObjectMask.User || SelectMask == (UserControlObjectMask.User | UserControlObjectMask.Sideline)) { OguObjectCollection<IUser> users = queryImpl.QueryDescendants<IUser>(SchemaQueryType.Groups, dept, searchString, MaxQueryCount); //dept.QueryChildren<IUser>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IUser user in users) result.Add(user); } else { if ((int)(SelectMask & (UserControlObjectMask.Group | UserControlObjectMask.User | UserControlObjectMask.Organization)) != 0) { OguObjectCollection<IOguObject> objs = queryImpl.QueryDescendants<IOguObject>(SchemaQueryType.Users | SchemaQueryType.Groups | SchemaQueryType.Organizations, dept, searchString, MaxQueryCount); //dept.QueryChildren<IOguObject>(searchString, true, SearchLevel.SubTree, MaxQueryCount); foreach (IOguObject obj in objs) result.Add(obj); } } return result; } finally { ServiceBrokerContext.Current.RestoreSavedStates(); } }
protected override void LoadClientState(string clientState) { if (string.IsNullOrEmpty(clientState) == false) { object[] state = (object[])JSONSerializerExecute.DeserializeObject(clientState, typeof(object[])); object[] state0 = (object[])state[0]; List<IOguObject> selectedResult = new List<IOguObject>(); foreach (IOguObject obj in state0) selectedResult.Add(obj); this.selectedOuUserData = new OguDataCollection<IOguObject>(selectedResult); } }
protected override void LoadViewState(object savedState) { base.LoadViewState(savedState); HiddenButtonWrapper bw = GetPropertyValue("ButtonWrapper", (HiddenButtonWrapper)null); buttonWrapper.TargetControlID = bw.TargetControlID; this.selectedOuUserData = (OguDataCollection<IOguObject>)this.ViewState["SelectedData"]; }
protected OguDataCollection<IOguObject> OnValidateInputOuUser(string chkString, object context = null) { OguDataCollection<IOguObject> result = null; if (this.ValidateInputOuUser != null) result = ValidateInputOuUser(chkString); else result = new OguDataCollection<IOguObject>(); return result; }
private void InitUserInput(Control container) { userInput.ID = "userInput"; userInput.SelectMask = UserControlObjectMask.User | UserControlObjectMask.Sideline; userInput.ShowCirculateUsers = this.ShowCirculateUsers; if (CurrentActivityDescriptor != null) userInput.MultiSelect = AllowMultiUsers; if (this.Operation == "update") { OguDataCollection<IUser> users = CurrentActivityDescriptor.Resources.ToUsers(); OguDataCollection<IOguObject> selectedObjs = new OguDataCollection<IOguObject>(); users.ForEach(u => selectedObjs.Add(u)); userInput.ConsignUsers = selectedObjs; OguDataCollection<IUser> circulators = WfVariableDefine.GetCirculateUsers(CurrentActivityDescriptor); selectedObjs = new OguDataCollection<IOguObject>(); circulators.ForEach(u => selectedObjs.Add(u)); userInput.Circulators = selectedObjs; } container.Controls.Add(userInput); }
private static void FillAndDistinctUsers(IEnumerable<IUser> source, OguDataCollection<IUser> target) { foreach (IUser user in source) { if (target.Exists(u => string.Compare(u.ID, user.ID, true) == 0) == false) target.Add(user); } }