Изменение наименования задачи по бизнес-процессу в сценарии. Задание шаблона для наименования задач
Для экземпляров процесса есть возможность установить шаблон названия (с помощью кнопки Наименование экземпляров в верхнем меню в режиме редактирования бизнес-процесса). Таким образом, название экземпляра может устанавливаться автоматически, и, что самое главное, формироваться в зависимости от значений контекстных переменных и внутренних данных текущего экземпляра процесса. Иногда бывает необходимо реализовать аналогичную возможность и для наименования задач бизнес-процесса, но в интерфейсе Дизайнера нет возможности установить шаблон названия в зависимости от значений переменных, можно прописать только статичное текстовое значение в качестве названия задачи. Такую задачу можно решить с помощью сценариев в бизнес-процессе: перегрузив метод создания задачи и прописав в нем новое наименование, можно добиться того, что задача создается с тем именем, которое задано в сценарии, а не с тем, которое указано в настройках операции Пользовательская задача на графической модели процесса. Пример сценария:
//в параметрах метода вместо P_Process укажите имя класса Вашего процесса //его можно посмотреть на вкладке "Настройки" окна редактирования процесса public override void OnTaskCreate(ITaskBase task, P_Process context) { //выбираем только нужную задачу по имени операции if (task.Subject == "Задача 1") { //задаем новое наименование task.Subject = "Новое наименование задачи"; } }
"Задача 1" – это название задачи, указанное в настройках операции Пользовательская задача на графической модели процесса. Оно должно быть уникально в пределах процесса, чтобы сценарий работал правильно. Вместо фразы "Новое наименование задачи" Вы можете написать нужное наименование, в том числе и задать шаблон, обращаясь к контекстным переменным, как показано ниже:
//в параметрах метода вместо P_Process укажите имя класса Вашего процесса //его можно посмотреть на вкладке "Настройки" окна редактирования процесса public override void OnTaskCreate(ITaskBase task, P_Process context) { //выбираем только нужную задачу по имени операции if (task.Subject == "Задача 1") { //задаем новое наименование task.Subject = context.Naimenovanie + " в процессе " + context.WorkflowInstance.Name; } }
где context.Naimenovanie – это строковая контекстная переменная, в ней хранится название задачи, которое может задаваться пользователем/инициатором на более ранних этапах процесса, а context.WorkflowInstance.Name – наименование экземпляра процесса.