Изменить состояние задачи после 3-х дней

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

Изменить состояние задачи после 3-х дней

Postby fgrelax » Mon Aug 09, 2010 11:21 am

Всем привет.
Подскажите, есть ли в документации готовый триггер для автоматического закрытия задач, по прошествию 3-х дней. (или у вас написанный)

Например: Имеется состояние "Завершено", необходимо переводить в состояние "Закрыть" после 3-х дней как появилось состояние "Завершено".
Спасибо.
fgrelax
 
Posts: 37
Joined: Mon Aug 09, 2010 11:11 am

Re: Изменить состояние задачи после 3-х дней

Postby mvasenkov » Mon Aug 09, 2010 11:49 am

fgrelax wrote:Всем привет.
Подскажите, есть ли в документации готовый триггер для автоматического закрытия задач, по прошествию 3-х дней. (или у вас написанный)

Например: Имеется состояние "Завершено", необходимо переводить в состояние "Закрыть" после 3-х дней как появилось состояние "Завершено".
Спасибо.

Прямо в лоб этот вопрос не решается. Автоматического выполнения триггеров у нас нет. Однако технически данную задачу можно выполнить, хоть и мудрено.
Путь такой: для таких задач создаем вычисляемое поле (лучше скомпилированный скрипт использовать, как писать - http://www.trackstudio.ru/scripts-how-to.html )
тип поля не важен. В нем мы можем или ничего не выводить, или выводить какую-нибудь полезную информацию, например число дней, прошедших с перехода задачи в состояние "Завершено" (в примерах есть подобный скрипт). И в этом же скрипте, если задача в состоянии "Завершено" больше трех дней, мы переводим ее в состояние "Закрыто":
Code: Select all
TriggerManager.getInstance().createMessage(message.getSecure(), task.getId(), <тут тип операции>, message.getDescription(), 0L, task.getHandlerUserId(), task.getHandlerGroupId(), null, null, message.getDeadline()==null?  task.getDeadline() : message.getDeadline(), task.getBudget(), udf, false, null);

Чтобы скрипт выполнялся не слишком часто, можно настроить права так, чтобы его мог смотреть только менеджер, например. Или вообще создать отдельную учетку для этого.
А дальше хитрость: нужно создать для одного из пользователей (поэтому вариант с отдельной учеткой лучше) подписку на уведомления например раз в день. Фильтр настроить, чтобы попадали нужные задачи. А в шаблоне чтобы был вызов этого поля. И вуаля. Скрипт будет выполняться для всех таких задач раз в день и переводить их в нужное состояние, когда три дня пройдет.
Skype (RU): max.vasenkov
Email/Jabber: max.vasenkov@gmail.com
twitter: @winzard
mvasenkov
TrackStudio Support
 
Posts: 318
Joined: Tue Jan 14, 2003 5:57 pm
Location: Smolensk

Re: Изменить состояние задачи после 3-х дней

Postby admin » Mon Aug 09, 2010 12:04 pm

Альтернативный вариант - внешняя программа, которая периодически запускается, находит старые задачи и закрывает их. Запускать программу можно средствами ОС (cron, например).
Maxim Kramarenko (mailto: maximkr@trackstudio.com)
TrackStudio - Hierarchical Bug & Issue Tracking Software
http://www.trackstudio.com
admin
Site Admin
 
Posts: 7305
Joined: Thu Jan 01, 1970 3:00 am
Location: Smolensk, Russia

Re: Изменить состояние задачи после 3-х дней

Postby a-b-c » Mon Aug 09, 2010 12:12 pm

mvasenkov wrote:
fgrelax wrote:Всем привет.
Подскажите, есть ли в документации готовый триггер для автоматического закрытия задач, по прошествию 3-х дней. (или у вас написанный)

Например: Имеется состояние "Завершено", необходимо переводить в состояние "Закрыть" после 3-х дней как появилось состояние "Завершено".
Спасибо.

Прямо в лоб этот вопрос не решается. Автоматического выполнения триггеров у нас нет. Однако технически данную задачу можно выполнить, хоть и мудрено.
Путь такой: для таких задач создаем вычисляемое поле (лучше скомпилированный скрипт использовать, как писать - http://www.trackstudio.ru/scripts-how-to.html )
тип поля не важен. В нем мы можем или ничего не выводить, или выводить какую-нибудь полезную информацию, например число дней, прошедших с перехода задачи в состояние "Завершено" (в примерах есть подобный скрипт). И в этом же скрипте, если задача в состоянии "Завершено" больше трех дней, мы переводим ее в состояние "Закрыто":
Code: Select all
TriggerManager.getInstance().createMessage(message.getSecure(), task.getId(), <тут тип операции>, message.getDescription(), 0L, task.getHandlerUserId(), task.getHandlerGroupId(), null, null, message.getDeadline()==null?  task.getDeadline() : message.getDeadline(), task.getBudget(), udf, false, null);

Чтобы скрипт выполнялся не слишком часто, можно настроить права так, чтобы его мог смотреть только менеджер, например. Или вообще создать отдельную учетку для этого.
А дальше хитрость: нужно создать для одного из пользователей (поэтому вариант с отдельной учеткой лучше) подписку на уведомления например раз в день. Фильтр настроить, чтобы попадали нужные задачи. А в шаблоне чтобы был вызов этого поля. И вуаля. Скрипт будет выполняться для всех таких задач раз в день и переводить их в нужное состояние, когда три дня пройдет.


Понятно всё, кроме
А в шаблоне чтобы был вызов этого поля.
А это как сделать?
TrackStudio 4.0.14 x64
Windows SA + PostgreSQL 9.1
a-b-c
 
Posts: 548
Joined: Fri Jul 10, 2009 10:15 am
Location: Moscow, Russia

Re: Изменить состояние задачи после 3-х дней

Postby mvasenkov » Mon Aug 09, 2010 1:45 pm

a-b-c wrote:А это как сделать?

Если в шаблоне выводятся все UDF-поля - этого достаточно будет. В том, что мы поставляем выводятся, насколько помню. Нужно ведь не уведомление, а чтобы скрипт сработал.
Поле еще не кешировать, т.е. галку снять в настройках поля.
Skype (RU): max.vasenkov
Email/Jabber: max.vasenkov@gmail.com
twitter: @winzard
mvasenkov
TrackStudio Support
 
Posts: 318
Joined: Tue Jan 14, 2003 5:57 pm
Location: Smolensk

Re: Изменить состояние задачи после 3-х дней

Postby mvasenkov » Mon Aug 09, 2010 1:47 pm

admin wrote:Альтернативный вариант - внешняя программа, которая периодически запускается, находит старые задачи и закрывает их. Запускать программу можно средствами ОС (cron, например).

Еще более альтернативный метод - демон по паттерну Skeleton. Из скриптов же демона можно создать. Он так и будет висеть, пока сервер не перезапустится.
А вообще теоретически уже надо было прикрутить какую-нибудь штуку, чтобы один демон и наши уведомления запускал, и пользовательские скрипты.
Skype (RU): max.vasenkov
Email/Jabber: max.vasenkov@gmail.com
twitter: @winzard
mvasenkov
TrackStudio Support
 
Posts: 318
Joined: Tue Jan 14, 2003 5:57 pm
Location: Smolensk

Re: Изменить состояние задачи после 3-х дней

Postby fgrelax » Fri Aug 13, 2010 8:12 am

mvasenkov wrote:
Code: Select all
TriggerManager.getInstance().createMessage(message.getSecure(), task.getId(), <тут тип операции>, message.getDescription(), 0L, task.getHandlerUserId(), task.getHandlerGroupId(), null, null, message.getDeadline()==null?  task.getDeadline() : message.getDeadline(), task.getBudget(), udf, false, null);


Максим, добрый день. Можно чуть поподробней. Буду благодарен.

Сейчас задача несколько модифицировалась.
Пример: Дата Создание задачи - 12.08.2010 9-20, Состояние "Открыта".
Должно стать после скрипта: Дата обновления задачи - 12.08.2010 18-00, Состояние "Ожидание".
Задача: Переводить все открытые задачи(не в состояние "Закрыта" и "Ожидание") после 18-00 в состояние "Ожидание".

Я так понимаю задача сводиться к написанию вычисляемого поля, например текущее время:
Code: Select all
return (new java.util.Date());

Ну вот дальше я не понял, как задача будет переводиться в новое состояние - это еще один скрипт?

Мне кажется, что возможность интеграции в трекстудио встроенного демона, который умеет переводить задачи в разные состояние по фильтру было-бы неплохим подспорьем.
fgrelax
 
Posts: 37
Joined: Mon Aug 09, 2010 11:11 am

Re: Изменить состояние задачи после 3-х дней

Postby mvasenkov » Fri Aug 13, 2010 2:49 pm

fgrelax wrote:Максим, добрый день. Можно чуть поподробней. Буду благодарен.


Я постепенно пишу доки по скриптам и триггерам вот тут: http://www.trackstudio.ru/scripts-how-to.html
Конкретно про то, как переводить задачу в другое состояние: http://www.trackstudio.ru/node/183 (дока не о том, но там есть пример, как создавать сообщение)
Сейчас задача несколько модифицировалась.
Пример: Дата Создание задачи - 12.08.2010 9-20, Состояние "Открыта".
Должно стать после скрипта: Дата обновления задачи - 12.08.2010 18-00, Состояние "Ожидание".
Задача: Переводить все открытые задачи(не в состояние "Закрыта" и "Ожидание") после 18-00 в состояние "Ожидание".
Я так понимаю задача сводиться к написанию вычисляемого поля, например текущее время:
Code: Select all
return (new java.util.Date());

Ну вот дальше я не понял, как задача будет переводиться в новое состояние - это еще один скрипт?

Текущее время - это Calendar.getInstance() :) Мы с Calendar оперируем везде, а не с Date.
Отдельный скрипт не нужен, это именно что один скрипт - вычисляемое поле. Например такой.
Code: Select all
package scripts.task_custom_field_value;

import com.trackstudio.app.csv.CSVImport;
import com.trackstudio.exception.GranException;
import com.trackstudio.external.TaskUDFValueScript;
import com.trackstudio.secured.SecuredMessageTriggerBean;
import com.trackstudio.secured.SecuredTaskBean;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.util.Calendar;

/**
* Скрипт переводит все открытые (находящиеся в начальном состоянии) задачи в состояние "Ожидание" после 18:00 каждого дня.
* По тому же принципу можно переводить задачи, которые определенное время не обновлялись или у них не менялось состояние.
*/
public class Escalate implements TaskUDFValueScript{

    public Object calculate(SecuredTaskBean securedTaskBean) throws GranException {

                if (securedTaskBean.getStatus().isStart()) {
                    Calendar now = Calendar.getInstance();
                    if (now.get(Calendar.HOUR_OF_DAY)>=18){
                        // переводим


            String mstatusId = CSVImport.findMessageTypeIdByName("Wait", 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);
   
        return "ожидает";
                    }

                }

         return "в работе";
    }

}


Сейчас напишу доку, как использовать и т.п.
Skype (RU): max.vasenkov
Email/Jabber: max.vasenkov@gmail.com
twitter: @winzard
mvasenkov
TrackStudio Support
 
Posts: 318
Joined: Tue Jan 14, 2003 5:57 pm
Location: Smolensk

Re: Изменить состояние задачи после 3-х дней

Postby mvasenkov » Fri Aug 13, 2010 6:02 pm

А вот и инструкция http://www.trackstudio.ru/task-escalation.html
Skype (RU): max.vasenkov
Email/Jabber: max.vasenkov@gmail.com
twitter: @winzard
mvasenkov
TrackStudio Support
 
Posts: 318
Joined: Tue Jan 14, 2003 5:57 pm
Location: Smolensk

Re: Изменить состояние задачи после 3-х дней

Postby a-b-c » Fri Aug 13, 2010 9:31 pm

Максим, спасибо за отличные доки! Эскалация, пакетное изменение, качественный скрипт по отлову изменений - то что надо!
TrackStudio 4.0.14 x64
Windows SA + PostgreSQL 9.1
a-b-c
 
Posts: 548
Joined: Fri Jul 10, 2009 10:15 am
Location: Moscow, Russia

Next

Return to TrackStudio Support [Russian]

Who is online

Users browsing this forum: No registered users and 0 guests

cron