Создание проекта в сценарии
В данном примере рассматривается создание проекта и задач по проекту при помощи сценария.
Пример сценария с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.12.1 включительно.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | var metadata = PublicAPI.Projects.Objects.ProjectMetadataHead.LoadOrNull(1); //Метаданные проекта типа ProjectWork var currentUser = PublicAPI.Portal.Security.User.GetCurrentUser(); //Текущий пользователь var project = PublicAPI.Projects.Project.Create( "Название проекта" , metadata, DateTime.Today, DateTime.Today.AddDays(30), currentUser); var projectplan = PublicAPI.Projects.ProjectPlan.Filter().Project(project).Find().FirstOrDefault(); var projectTask = PublicAPI.Projects.ProjectTaskBase.ProjectTask.Create(project) .Subject( "Тема задачи" ) .StartDate(DateTime.Today) .EndDate(DateTime.Today.AddDays(1)) .Executor(currentUser) .AddToPlan(projectplan); //Создание проектной задачи var milestone = PublicAPI.Projects.ProjectTaskBase.Milestone.Create(project) .Subject( "Тема КТ" ) .StartDate(DateTime.Today) .Executor(currentUser) .AddToPlan(projectplan); //Создание контрольной точки по проекту |
Примеры сценариев без использования PublicAPI
Ниже приведено два сценария:
- Для версий системы ELMA 3.5.х и ниже.
- Для версий системы ELMA 3.6.х и выше.
Сценарий для версий системы ELMA 3.5.х и ниже
В сценарии должны быть объявлены следующие пространства имен:
1 2 3 4 | using EleWise.ELMA.Projects.Models; using EleWise.ELMA.Projects.Managers; using EleWise.ELMA.Tasks.Models; using EleWise.ELMA.Projects; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | var projectTemplateId=1; //идентификатор шаблона проекта var projectTemplate = ProjectTemplateManager.Instance.LoadWithElevatedPrivilegies(projectTemplateId); var project = ProjectManager.Instance.Create(projectTemplate); project.ShowTaskBeforeDays = null ; // Если нужно автоформирование папки проекта, то нужно обнулить поле Folder проекта, иначе задать нужную папку project.Folder = null ; project.Name = context.NazvanieProekta; project.CreationAuthor=context.Author; project.Manager=context.Meneger; project.StartDate=DateTime.Now; project.FinishDate=context.DataOkonchaniya; ProjectManager.Instance.SaveNew(project, projectTemplate); // Если нужно автоформирование папки проекта! ProjectManager.Instance.CopyTemplateFolders(projectTemplate, project); // Если нужно опубликовать ProjectManager.Instance.Publish(project); context.Proekt = (Project)project; //записываем в контекстную переменную типа Объект Проект //Создание задачи проекта var projectTask= ProjectTaskManager.Instance.Create(project, null ); projectTask.Subject= "Тема задачи" ; projectTask.Executor=context.Ispolnitelj; //устанавливаем исполнителя projectTask.StartDate=context.DataSozdaniya; projectTask.EndDate=context.DataOkonchaniya; projectTask.Save(); |
Сценарий для версий системы ELMA 3.6.х и выше
Пространства имен:
Текст сценария:
1 2 3 4 5 6 | using EleWise.ELMA.Model.Services; using EleWise.ELMA.Projects.Managers; using EleWise.ELMA.Projects.Models; using EleWise.ELMA.Security.Models; using EleWise.ELMA.Security.Managers; using EleWise.ELMA.Projects.Enums; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | //Создание проекта типа "Проект" var project = InterfaceActivator.Create<ProjectWork>(); project.StartDate = DateTime.Today; //Дата начала проекта project.FinishDate = DateTime.Today; //Дата Завершения проекта project.Manager = (User)UserManager.Instance.LoadByLogin( "admin" ); //Менеджер проекта project.Name = "Название проекта" ; //Название проекта ProjectManager.Instance.SaveNew(project, true ); //Поиск плана проекта со статусом версии "Черновик" var filter = InterfaceActivator.Create<ProjectPlanFilter>(); filter.Project = project; filter.Status = ProjectPlanVersionStatus.Draft; var projectplan = ProjectPlanManager.Instance.Find(filter, null ).LastOrDefault(); //Создание исполнителя проектной задачи типа Пользователь var executor = InterfaceActivator.Create<ProjectTaskExecutor>(); executor.Type = ProjectTaskExecutorType.User; //Тип Пользователь executor.User = (User)UserManager.Instance.LoadByLogin( "admin" ); executor.Save(); //Создание простой проектной задачи var PrjTask = InterfaceActivator.Create<ProjectPlanItem>(); PrjTask.ItemType = ProjectPlanItemType.ProjectTask; //Тип задачи - проектная задача PrjTask.StartDate = DateTime.Today; //Дата начала - сегодня PrjTask.EndDate = DateTime.Today; //Дата завершения - сегодня PrjTask.CreationAuthor = (User)UserManager.Instance.LoadByLogin( "admin" ); //Автор задачи PrjTask.Executor = executor; //Исполнитель - Тип (Пользователь), Пользователь PrjTask.Subject = "Проектная задача" ; //Название задачи PrjTask.ProjectPlan = projectplan; //План проекта //Создание контрольной точки var Milestone = InterfaceActivator.Create<ProjectPlanItem>(); Milestone.ItemType = ProjectPlanItemType.Milestone; //Тип задачи - контрольная точка Milestone.StartDate = DateTime.Today; //Дата начала - сегодня Milestone.EndDate = DateTime.Today; //Дата завершения - сегодня Milestone.CreationAuthor = (User)UserManager.Instance.LoadByLogin( "admin" ); //Автор задачи Milestone.Executor = executor; //Исполнитель - Тип (Пользователь), Пользователь Milestone.Subject = "Контрольная точка" ; //Название задачи Milestone.ProjectPlan = projectplan; //План проекта |