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

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

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

Postby mvasenkov » Fri Aug 13, 2010 9:51 pm

a-b-c wrote:Максим, спасибо за отличные доки! Эскалация, пакетное изменение, качественный скрипт по отлову изменений - то что надо!

Это я еще только начал :)
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 » Thu Sep 02, 2010 9:56 am

Максим, как бы прикрутить данный скрипт к версии 3.5.51?

Мне например надо лишь, если состояние "Sheduler", то после 10 минут переводить его в состояние "Закрыта". (в трекстудио оповещение не приходит автору если задача закрыта, так как он только создал задачу, но в сообщениях не участвовал.).

По хелпу создал группу "Бот", Пользователя - присвоил ему группу "Бот".
Создал новое состояние "Sheduler", тип сообщения "escalate", переход с "Sheduler" на "Закрыта". Раздал права.
Дополнительно поле типа строка, раздал права. А вот скрипт не создается - эксепшн:

Тип Task / Custom Field Value
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 java.util.Calendar;

/**
* Скрипт переводит задачи, находящиеся в состоянии "Sheduler"
* в состояние "Закрыта" на следующий день после дедлайна.
*/
public class Escalate implements TaskUDFValueScript {

    public Object calculate(SecuredTaskBean securedTaskBean) throws GranException {
        Calendar deadline = securedTaskBean.getDeadline();
        String status = securedTaskBean.getStatus().getName();
        if (deadline != null && (status.equals("Sheduler"))) {
            Calendar now = Calendar.getInstance();

            now.set(Calendar.HOUR_OF_DAY, 0);
            now.set(Calendar.MINUTE, 0);
            now.set(Calendar.SECOND, 0);
            now.set(Calendar.MILLISECOND, 0);


            deadline.set(Calendar.HOUR_OF_DAY, 0);
            deadline.set(Calendar.MINUTE, 0);
            deadline.set(Calendar.SECOND, 0);
            deadline.set(Calendar.MILLISECOND, 0);

            long l = now.getTimeInMillis() - deadline.getTimeInMillis();

            int days = (int) (l / (24 * 60 * 60 * 1000));
            if (days > 0) {
                // переводим
                String mstatusId = CSVImport.findMessageTypeIdByName("escalate", 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 "Завершена";
    }

}

Code: Select all
неверное
(java.lang.String) null

Error: Sourced file: inline evaluation of: ``import java.lang.StrictMath; import com.trackstudio.tools.formatter.DateFormatte . . . '' : Class: TaskUDFValueScript not found in namespace : at Line: 50 : in file: inline evaluation of: ``import java.lang.StrictMath; import com.trackstudio.tools.formatter.DateFormatte . . . '' : TaskUDFValueScript
Message: Sourced file: inline evaluation of: ``import java.lang.StrictMath; import com.trackstudio.tools.formatter.DateFormatte . . . '' : Class: TaskUDFValueScript not found in namespace


Максим, подскажите, в чем дело? Требуется лишь переводить из одного состояния в другое по истечению 10 минут. Спасибо.
fgrelax
 
Posts: 37
Joined: Mon Aug 09, 2010 11:11 am

Previous

Return to TrackStudio Support [Russian]

Who is online

Users browsing this forum: No registered users and 0 guests

cron