2013-10-07 3 views
3

Я хотел бы, чтобы определенное правило расписания (с уведомлениями) выполнялось только в рабочие дни. То есть Я хотел бы избежать получения уведомлений по субботам и воскресеньям. Как я могу проверить текущий день недели в рабочем процессе YouTrack?Как проверить текущий день недели в Youtrack Workflow

ответ

2

Там не встроенный YouTrack механизм документооборота определения текущего дня недели, но простое решение позволяет сделать это:

schedule rule day of week 

daily at 10:00:00 [for all issues] { 
    var monday = {issue: A-1}.created - 1 day; 

    while (i < 50) { 
    if (monday + (i * 7) days < now && now < monday + (i * 7 + 5) days) { 
     //now is the work day 
    } 
} 

Вопрос A-1 является проблемой образец создан во вторник, так {issue: A-1}.created - 1 day относится к Monday.

Цикл while находит текущую неделю, а if() определяет, является ли сегодня рабочим днем ​​или выходным.

+0

Должен ли «i» быть определен, а затем увеличен? –

+0

Я также думаю, будет ли такая мрачность стоить того :) –

3

Используя формат, вы можете получить аббревиатуру или полное имя дня недели.

var dayOfWeekAbr = now.format(#E); 
var dayOfWeek = now.format(#EEEE); 

Или используя год-месяц-день буквального (2014-01-05 было воскресенье):

var day = (created - 2014-01-05).millis/86400000 % 7; 
if (day > 1 && day < 6) { 
    message("Work day"); 
} 
+0

Есть ли ссылка, где можно было увидеть все параметры форматирования даты? Я нашел только http://confluence.jetbrains.com/display/YTD5/Workflow+Language+Quick+Reference, но это всего лишь обзор. Причина, по которой я спрашиваю, заключается в том, что трудно протестировать сценарии рабочего процесса с облачным Youtrack, так как я не хочу испортить нашу производственную настройку. I.e. есть ли опция формата, которая вернет номер дня недели? –

+2

думаю используя формат вы не можете взять день недели номер. Я предполагаю, что строка формата - это подмножество [gwt DateTimeFormat] (http://www.gwtproject.org/javadoc/latest/com/google/gwt/i18n/client/DateTimeFormat.html) – ikovrigin

2

Я сталкивался с таким же вопросом, я не нашел предыдущие решения читаемых. Решение я реализовал:

var today = now.format(utc).substring(0, 3); 
if (today == "Mon" || today == "Tue" || today == "Wed" || today == "Thu" || today == "Fri") { 
    message("Work day!"); 
} 
0

Возможно кратчайшее решение специально для избежания уикэнды, в субботу и воскресенье единственные дни, начинающиеся с заглавной буквы «S»:

if(!now.format(#E).startsWith("S", opts)) {}

/e: как правильно указал Артем, это, возможно, придется принять или не работать для определенных локализаций - это, по крайней мере, для немецкого и английского языков.

+0

Забавная идея, но могут возникнуть проблемы с локализацией с таким подходом :) –

Смежные вопросы