schedule rule for one issue
Напишу на русском)
У меня есть два проекта, их обрабатывают сотрудники. Я хочу проверить запущены ли задачи в проектах у пользователей и, если кто-то не работает, кинуть ему сообщение в jabber
schedule rule NotifToNeedWork
// каждые 5 минут с 9 до 17-55
cron: 0 0/5 09-17 * * ? [for all issues] {
// bool есть ли задачи
var have_issues = false;
// bool есть ли запущенные задачи
var have_run_issue = false;
// int кол-во задач
var count = 0;
// по каждому юзеру в группе
for each user in {group: Support}.getUsers() {
// считаем, что задач нет
have_issues = false;
// вытянем его задачи
for each my_issue in user.getIssues(Everything, "проект: SupportProject Исполнитель: я Статус задачи: -Закрыта) {
// задачи есть
have_issues = true;
if (my_issue.Timer == {В работе}) {
// есть задачи рабочие
have_run_issue = true;
}
// поссчитаем все задачи
count = count + 1;
}
// если задач не нашли
if (have_issues == false) {
// сбросим счетчик
count = 0;
// возьмем задачи из другого проекта, над которыми работаем
for each my_issue in user.getIssues(Everything, "проект: {Внутренние задачи} Ответственные: я Статус: {В работе}") {
// есть такие
have_issues = true;
}
// поссчитаем все, что есть
for each my_issue in user.getIssues(Everything, "проект: {Внутренние задачи} Ответственные: я Статус: -Закрыта") {
count = count + 1;
}
// если мы бездельники, а задачи есть
if (have_issues == false && count > 0) {
user.sendJabber(user.fullName + ", сейчас на Вас не назначены основные задачи и Вы не заняты внутренними задачами. Стоит взять в работу одну из " + count + " внутренних задач.");
}
} else { // мы нашли задача в основном проекте
// мы работаем над задачами в основном проекте?
if (have_run_issue == false) {
// не хорошо, нужно бы поработать
user.sendJabber(user.fullName + ", сейчас Вы не заняты основными задачами. Стоит взять в работу одну из " + count + " задач");
}
}
}
}
все работает прекрасно, НО! [for all issues] дает нам столько уведомлений, сколько задач у нас имеется в принципе. С таким подходом, не запустил задачу - получи 200 сообщений в jabber. А так как пытки над людьми запрещены конвенцией ООН, прошу Вас подказать мне, как schedule rule запустить 1 раз. Очень прошу. Спасибо.
У меня есть два проекта, их обрабатывают сотрудники. Я хочу проверить запущены ли задачи в проектах у пользователей и, если кто-то не работает, кинуть ему сообщение в jabber
schedule rule NotifToNeedWork
// каждые 5 минут с 9 до 17-55
cron: 0 0/5 09-17 * * ? [for all issues] {
// bool есть ли задачи
var have_issues = false;
// bool есть ли запущенные задачи
var have_run_issue = false;
// int кол-во задач
var count = 0;
// по каждому юзеру в группе
for each user in {group: Support}.getUsers() {
// считаем, что задач нет
have_issues = false;
// вытянем его задачи
for each my_issue in user.getIssues(Everything, "проект: SupportProject Исполнитель: я Статус задачи: -Закрыта) {
// задачи есть
have_issues = true;
if (my_issue.Timer == {В работе}) {
// есть задачи рабочие
have_run_issue = true;
}
// поссчитаем все задачи
count = count + 1;
}
// если задач не нашли
if (have_issues == false) {
// сбросим счетчик
count = 0;
// возьмем задачи из другого проекта, над которыми работаем
for each my_issue in user.getIssues(Everything, "проект: {Внутренние задачи} Ответственные: я Статус: {В работе}") {
// есть такие
have_issues = true;
}
// поссчитаем все, что есть
for each my_issue in user.getIssues(Everything, "проект: {Внутренние задачи} Ответственные: я Статус: -Закрыта") {
count = count + 1;
}
// если мы бездельники, а задачи есть
if (have_issues == false && count > 0) {
user.sendJabber(user.fullName + ", сейчас на Вас не назначены основные задачи и Вы не заняты внутренними задачами. Стоит взять в работу одну из " + count + " внутренних задач.");
}
} else { // мы нашли задача в основном проекте
// мы работаем над задачами в основном проекте?
if (have_run_issue == false) {
// не хорошо, нужно бы поработать
user.sendJabber(user.fullName + ", сейчас Вы не заняты основными задачами. Стоит взять в работу одну из " + count + " задач");
}
}
}
}
все работает прекрасно, НО! [for all issues] дает нам столько уведомлений, сколько задач у нас имеется в принципе. С таким подходом, не запустил задачу - получи 200 сообщений в jabber. А так как пытки над людьми запрещены конвенцией ООН, прошу Вас подказать мне, как schedule rule запустить 1 раз. Очень прошу. Спасибо.
Please sign in to leave a comment.
1. Создаем и сразу закрываем тестовую задачу с описанием "dummy_for_scheduler_rule"
2. cron: 0 0/5 09-17 * * ? [issue.desc == "dummy_for_scheduler_rule"] {
Но, может есть какое-то красивое решение?