Создание проекта в сценарии
В данном примере рассматривается создание проекта и задач по проекту при помощи сценария.
Пример сценария с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.12.1 включительно.
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.х и ниже
В сценарии должны быть объявлены следующие пространства имен:
using EleWise.ELMA.Projects.Models; using EleWise.ELMA.Projects.Managers; using EleWise.ELMA.Tasks.Models; using EleWise.ELMA.Projects;Текст сценария:
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.х и выше
Пространства имен:
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;Текст сценария:
//Создание проекта типа "Проект"
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; //План проекта