Example #1
0
        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>();
            }
        }
Example #3
0
        /// <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);
     }
 }
Example #5
0
        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));
		}
Example #7
0
        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;
            }
        }
Example #10
0
        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);
        }
Example #11
0
        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);
        }
Example #12
0
 protected internal override void FillUsers(OguDataCollection <IUser> users)
 {
     if (this._AUSchemaRole != null)
     {
         this._AUSchemaRole.FillUsers(this.ProcessInstance, users);
     }
 }
Example #13
0
        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;
        }
Example #17
0
        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));
			}
		}
Example #23
0
        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));
            }
        }
Example #25
0
        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));
            }
        }
Example #26
0
        public WfAssigneeCollection ToAssignees()
        {
            OguDataCollection <IUser> users = ToUsers();

            WfAssigneeCollection result = new WfAssigneeCollection();

            users.ForEach(u => result.Add(u));

            return(result);
        }
Example #27
0
        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);
         }
     }
 }
Example #29
0
        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();
     }
 }
Example #31
0
        /// <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();
     }
 }
Example #33
0
        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;
			//}
        }
Example #34
0
        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);
             }
         });
     }
 }
Example #36
0
 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);
             }
         });
     }
 }
Example #37
0
        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));
			}
		}
Example #39
0
        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;
		}
Example #42
0
        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;
        }
Example #43
0
		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);
     }
 }
Example #49
0
        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();
            }
        }
Example #50
0
        /// <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);
     }
 }