Trigger, меняющий Deadline

Обсуждаем TrackStudio по-русски

Trigger, меняющий Deadline

Postby Galina » Tue Dec 20, 2011 5:39 pm

Если говорить кратко, то вопрос такой: возможно ли написать триггер, меняющий deadline других задач? (не подзадач).
Если подробно:
У нас, в проекте возникло пожелание сорганизовать следующее:
Проект построен таким образом, что состоит из подпроектов, раскладывающихся, в свою очередь, на этапы разработки. У конкретного этапа разработки (который "пронизывает" подпроекты, например, "Этап разработки 1") должно быть одно и то же значение поля "Сделать до" (Deadline). При изменении Deadline "Этапа разработки 1" в каком-либо подпроекте, необходимо это сделать в "Этапах разработки 1" остальных подпроектов.
Пыталась сделать следующим образом в Edit Task Trigger/Before: "Этапы разработки" - отдельная категория, которая используется как подзадача подпроекта. До подпроекта "добралась" оператором getParent(), далее им же до основного проекта. Потом, чтобы просмотреть все "Этап разработки 1" 2 раза применила getChildren() и среди них выбрала имеющие имя "Этап разработки 1". Далее хотелось использовать что-то типа
setDeadline(task.getDeadline)
Но возникла проблема, что getChildren() возвращает список объектов класса SecuredTaskBean, в котором нет оператора setDeadline. Попытка превратить объекты в Task потерпели неудачу, так как для SecuredTaskBean метод getTask() - protected. В SecuredTaskTriggerBean также есть setDeadline, но как к нему перейти тоже не ясно.
Можно ли преобразовать SecuredTaskBean в Task или SecuredTaskTriggerBean?
Может, описанную задачу можно реализовать проще?
Galina
 
Posts: 41
Joined: Tue Oct 25, 2011 9:44 am

Re: Trigger, меняющий Deadline

Postby mvasenkov » Wed Dec 21, 2011 11:57 am

Лучше всего завести специальную операцию (в данном случае, допустим, она называется stage) и менять тогда вот так (в цикле по задачам)
Code: Select all
String mstatusId = CSVImport.findMessageTypeIdByName("stage", securedTaskBean.getCategory().getName());

                /**
                 * Создаем SecuredMessageTriggerBean
                 */
                SecuredMessageTriggerBean createMessage = new SecuredMessageTriggerBean(
                        null /* индентификатор */,
                        "задача была просрочена" /* текст комментария */,
                        Calendar.getInstance() /* время выполнения операции */,
                        null /* потраченное время */,
                        securedTaskBean.getDeadline() /* Сроки выполнения задачи (deadline) */,
                        securedTaskBean.getBudget() /* бюджет */,
                        securedTaskBean.getId() /* задача */,
                        securedTaskBean.getSecure().getUserId() /* автор операции */,
                        null /* резолюция */,
                        securedTaskBean.getPriorityId() /* приоритет */,
                        securedTaskBean.getHandlerId() /* ответственные */,
                        securedTaskBean.getHandlerUserId() /* ответственный */,
                        securedTaskBean.getHandlerGroupId() /* ответственный, если нужно задать группу в качестве ответственного */,
                        mstatusId /* тип операции */,
                        null /* Map с дополнительными полями */,
                        securedTaskBean.getSecure() /* SessionContext */,
                        null /* вложения */);
                /**
                 * выполняем
                 */
                createMessage.create(true);


Если без операций, то нужно
Code: Select all
TriggerManager.getInstance().updateTask(SessionContext sc, String id, String shortname, String name, String description,
                           Long budget, Calendar deadline, String priorityId,
                           String parentId, String handlerUserId, String handlerGroupId, boolean sendMail, HashMap udf)
Skype (RU): max.vasenkov
Email/Jabber: max.vasenkov@gmail.com
twitter: @winzard
mvasenkov
TrackStudio Support
 
Posts: 365
Joined: Tue Jan 14, 2003 5:57 pm
Location: Smolensk

Re: Trigger, меняющий Deadline

Postby Galina » Wed Dec 21, 2011 1:27 pm

Спасибо за оперативный ответ!
Я правильно понимаю, что под stage имеется ввиду тип сообщения и что первым способом в каждом "Этапе разработки" создадим message, который поменяет Deadline?
Galina
 
Posts: 41
Joined: Tue Oct 25, 2011 9:44 am

Re: Trigger, меняющий Deadline

Postby mvasenkov » Wed Dec 21, 2011 2:34 pm

Galina wrote:Спасибо за оперативный ответ!
Я правильно понимаю, что под stage имеется ввиду тип сообщения и что первым способом в каждом "Этапе разработки" создадим message, который поменяет Deadline?

Да, именно так
Skype (RU): max.vasenkov
Email/Jabber: max.vasenkov@gmail.com
twitter: @winzard
mvasenkov
TrackStudio Support
 
Posts: 365
Joined: Tue Jan 14, 2003 5:57 pm
Location: Smolensk

Re: Trigger, меняющий Deadline

Postby maxor » Thu Dec 22, 2011 10:28 am

У меня похожая проблема, только мне нужно задать deadline всем создаваемым в скрипте подзадачам при создании категории "Проект" (триггер after_create_task).
Почему-то, deadline можно задать только для подзадач категории Проект, на других выскакивает exception.
Error in method invocation: Method createTask( com.trackstudio.app.session.SessionContext, java.lang.String, null, java.lang.String, null, java.util.GregorianCalendar, null, null, java.lang.String, java.lang.String, null, boolean, null ) not found in class'com.trackstudio.app.TriggerManager'

Пример кода:
Code: Select all
deadline = task.getDeadline();
newTaskId = TriggerManager.getInstance().createTask(session,categoryProjectId,null,"1 - Проект",null,null,deadline,null,newId,USER,null,false,null); // OK
newTaskId2 = TriggerManager.getInstance().createTask(session,categoryTaskId,null,"1.1 - Задача",null,null,deadline,null,newTaskId,USER,null,false,null); // Exception!!!

Вопрос, как в моем случае установить deadline?
TriggerManager.getInstance().updateTask не работает.
maxor
 
Posts: 13
Joined: Wed Apr 28, 2010 8:38 am
Location: Russia

Re: Trigger, меняющий Deadline

Postby mvasenkov » Thu Dec 22, 2011 10:33 am

maxor wrote:У меня похожая проблема, только мне нужно задать deadline всем создаваемым в скрипте подзадачам при создании категории "Проект" (триггер after_create_task).
Почему-то, deadline можно задать только для подзадач категории Проект, на других выскакивает exception.
Error in method invocation: Method createTask( com.trackstudio.app.session.SessionContext, java.lang.String, null, java.lang.String, null, java.util.GregorianCalendar, null, null, java.lang.String, java.lang.String, null, boolean, null ) not found in class'com.trackstudio.app.TriggerManager'

Пример кода:
Code: Select all
deadline = task.getDeadline();
newTaskId = TriggerManager.getInstance().createTask(session,categoryProjectId,null,"1 - Проект",null,null,deadline,null,newId,USER,null,false,null); // OK
newTaskId2 = TriggerManager.getInstance().createTask(session,categoryTaskId,null,"1.1 - Задача",null,null,deadline,null,newTaskId,USER,null,false,null); // Exception!!!

Вопрос, как в моем случае установить deadline?
TriggerManager.getInstance().updateTask не работает.

А права на создание задач с такой категорией есть? Задачи вручную создаются?
Skype (RU): max.vasenkov
Email/Jabber: max.vasenkov@gmail.com
twitter: @winzard
mvasenkov
TrackStudio Support
 
Posts: 365
Joined: Tue Jan 14, 2003 5:57 pm
Location: Smolensk

Re: Trigger, меняющий Deadline

Postby maxor » Thu Dec 22, 2011 11:04 am

mvasenkov wrote:А права на создание задач с такой категорией есть? Задачи вручную создаются?


Права есть. Вручную создаются и скриптом, если вместо deadline в createTask поставить null, но дата не наследуется.
maxor
 
Posts: 13
Joined: Wed Apr 28, 2010 8:38 am
Location: Russia

Re: Trigger, меняющий Deadline

Postby mvasenkov » Fri Dec 23, 2011 7:01 am

А права на установку deadline?
Тут ведь явно не с API проблема, а с правами или передаваемыми параметрами.
Skype (RU): max.vasenkov
Email/Jabber: max.vasenkov@gmail.com
twitter: @winzard
mvasenkov
TrackStudio Support
 
Posts: 365
Joined: Tue Jan 14, 2003 5:57 pm
Location: Smolensk

Re: Trigger, меняющий Deadline

Postby maxor » Fri Dec 23, 2011 8:25 am

mvasenkov wrote:А права на установку deadline?
Тут ведь явно не с API проблема, а с правами или передаваемыми параметрами.


Вроде все проверил, всё хорошо.
Пробывал на других категориях (Список ошибок, Ошибка) - ошибка.
Из под Администратора - ошибка.
В параметрах убираю deadline (=null) задача создается.
Где ещё можно посмотреть?
maxor
 
Posts: 13
Joined: Wed Apr 28, 2010 8:38 am
Location: Russia

Re: Trigger, меняющий Deadline

Postby mvasenkov » Fri Dec 23, 2011 2:06 pm

А что в stackTrace в Server Manager выводится?
Skype (RU): max.vasenkov
Email/Jabber: max.vasenkov@gmail.com
twitter: @winzard
mvasenkov
TrackStudio Support
 
Posts: 365
Joined: Tue Jan 14, 2003 5:57 pm
Location: Smolensk

Next

Return to TrackStudio Support [Russian]

Who is online

Users browsing this forum: No registered users and 0 guests

cron