/// <summary>
        /// Создание новой задачи. Вызывается из присоединённого административного объекта, который также назнает свойства
        /// новорожденной задаче
        /// </summary>
        public static TaskInvoiceInstanceDefinition create(Session ssn, TaskParameters tp)
        {
            TaskInvoiceInstanceDefinition tid = new TaskInvoiceInstanceDefinition(ssn);

            tid._TaskInitiator = null; // Если создаётся через интерфейс, то TaskInitiator заполняется, иначе - обнуляется
            return(tid);
        }
        public override void create()
        {
            // Параметры формируются здесь исключительно для демонстрации последующиего алгоритма разбора в методе SetTaskParameters
            TaskParameters tp = GetTaskParams();

            // Создание задачи (вызов new)
            TaskInvoiceInstanceDefinition tid = TaskInvoiceInstanceDefinition.create(this.Session, tp);

            SetTaskParameters(ref tid, this, tp);

            // Вызываем activate() для созданной задачи
            tid.activate();
        }
        //[DebuggerHidden]
        private TaskParameters GetTaskParams()
        {
            TaskParameters taskParams = new TaskParameters();

            taskParams.Priority = Priority;

            taskParams.ExcludedOwnerString         = "";
            taskParams.PotentialOwnerString        = "user: VB_ANGARA\\HomoSapiens; role: ; group: ;";
            taskParams.BusinessAdministratorString = "user: VB_ANGARA\\HomoSapiens; role: ; group: ;";

            taskParams.PossibleDelegateString      = "";
            taskParams.TaskStakeholderString       = "";
            taskParams.NotificationRecipientString = "";

            taskParams.CallBackObject = this.Oid;
            return(taskParams);
        }
        /// <summary>
        /// Перенос параметров в задачу.
        /// Данная процедура:
        /// 1. Извлекает пользователей из соотвесттвующих списков данного объекта администрирования
        /// 2. Извлекает пользователей из списков, задачнных через параметр типа TaskParameters
        /// 3. Сливает вместе соответствующие списки из пп 1 и 2
        /// 4. Переносит результат в пользвательскую задачу
        /// 5. Также переносит данные о приоритете и т.д.
        /// </summary>
        /// <param name="task"></param>
        private void SetTaskParameters(ref TaskInvoiceInstanceDefinition task, BaseTaskInstanceDefinitionAdmin adminTask, TaskParameters tp)
        {
            FunctionalTaskReference.ProcessElements(tp, ref task, this.Session);
            FunctionalTaskReference.FillUsersFromAdminTaskCollection(this, ref task);

            task.Priority = this.Priority;
            //task.CallBackObject = this.CallBackObject;
            task.TaskAdminGuid = this.Oid;
        }
示例#5
0
        public static void ProcessElements(TaskParameters tp, ref DealWithoutStageTaskInstanceDefinition task, Session ssn)
        {
            foreach (string userName in tp.BusinessAdministrators)
            {
                // Восстанавливаем пользователя по его UserName
                AppUser au = UserTaskReference.PopulateUserByUserName(userName, ssn);
                if (au != null)
                {
                    if (task.BusinessAdministrators.IndexOf(au) == -1)
                    {
                        au.BaseUserTaskBusinessAdministrators.Add(task);
                    }
                }
            }

            foreach (string userName in tp.ExcludedOwners)
            {
                // Восстанавливаем пользователя по его UserName
                AppUser au = UserTaskReference.PopulateUserByUserName(userName, ssn);
                if (au != null)
                {
                    if (task.ExcludedOwners.IndexOf(au) == -1)
                    {
                        au.BaseUserTaskExcludedOwners.Add(task);
                    }
                }
            }

            foreach (string userName in tp.NotificationRecipients)
            {
                // Восстанавливаем пользователя по его UserName
                AppUser au = UserTaskReference.PopulateUserByUserName(userName, ssn);
                if (au != null)
                {
                    if (task.NotificationRecipients.IndexOf(au) == -1)
                    {
                        au.BaseUserTaskNotificationRecipients.Add(task);
                    }
                }
            }

            foreach (string userName in tp.PossibleDelegates)
            {
                // Восстанавливаем пользователя по его UserName
                AppUser au = UserTaskReference.PopulateUserByUserName(userName, ssn);
                if (au != null)
                {
                    if (task.PossibleDelegates.IndexOf(au) == -1)
                    {
                        au.BaseUserTaskPossibleDelegates.Add(task);
                    }
                }
            }

            foreach (string userName in tp.PotentialOwners)
            {
                // Восстанавливаем пользователя по его UserName
                AppUser au = UserTaskReference.PopulateUserByUserName(userName, ssn);
                if (au != null)
                {
                    if (task.PotentialOwners.IndexOf(au) == -1)
                    {
                        au.BaseUserTaskPotentialOwners.Add(task);
                    }
                }
            }

            foreach (string userName in tp.TaskStakeholders)
            {
                // Восстанавливаем пользователя по его UserName
                AppUser au = UserTaskReference.PopulateUserByUserName(userName, ssn);
                if (au != null)
                {
                    if (task.TaskStakeholders.IndexOf(au) == -1)
                    {
                        au.BaseUserTaskTaskStakeholders.Add(task);
                    }
                }
            }
        }