Экшны (кубики) потоков и количества выполнений

bpunk

Client
Регистрация
23.08.2015
Сообщения
181
Благодарностей
31
Баллы
28
Добрый день!
Было бы здорово сделать экшны для управления потоками исполняемого проекта и его кол-ва выполнений, аналогично как это реализовано для переменных (установить значение, увеличить на, уменьшить на)
Жду прям очень! Возьметесь ?)
 
  • Спасибо
Реакции: phirelli

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
651
Баллы
93

bpunk

Client
Регистрация
23.08.2015
Сообщения
181
Благодарностей
31
Баллы
28
Ну вот я совсем не понимаю как это на С# реализовать. Очень не хватает в описании примеров в контексте проекта, чтобы скачать и посмотреть в проекте пример.

Например вот здесь:
Код:
// Gets list of tasks
var tasksList = new List<string>(ZennoPoster.TasksList);
// Check the presence of items in the list
if(tasksList.Count != 0)
{
    // Select ane item
    var source = tasksList[0];
    // Sets path to task id
    var xpath = "Task/Id";
Получили список тасков, далее Select ane item и Sets path to task id не очень понятны. Как мы выбираем нужную таску?

Кубиками удобно задавать логику в любом месте проекта, так же как и с переменными.
А то по итогу так и с переменными можно в C# работать, и вообще сесть и написать все на C# используя скилет фрэймворка. И зачем эти кубики вообще тогда...
 
Последнее редактирование:

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
651
Баллы
93
Для добавления попыток можно использовать такой код
C#:
var id = Guid.Parse(project.TaskId);
var taskInfo = ZennoPoster.GetTaskInfo(id);
ZennoPoster.SetTries(id, 2);
Он работает.
Для добавления потоков, по идее должен работать такой код
C#:
var id = Guid.Parse(project.TaskId);
var taskInfo = ZennoPoster.GetTaskInfo(id);
var doc = new System.Xml.XmlDocument();
doc.LoadXml("<Task>" + taskInfo + "</Task>");
var executionSettings = doc.SelectSingleNode("Task/ExecutionSettings");
var limitOfThreads = executionSettings.SelectSingleNode("LimitOfThreads");
limitOfThreads.InnerText = "2";
ZennoPoster.SetExecutionSettings(id, executionSettings.ToString());
Но у меня он работать отказывается, возможно у меня ошибка, возможно баг в зенно, т.к. даже если формировать xml полностью руками как указано тут https://help.zennolab.com/en/v5/zennoposter/5.9/ZennoLab.CommandCenter~ZennoLab.CommandCenter.ZennoPoster~SetExecutionSettings(Guid,String).html,
Никаких изменений с проектом не происходит.
Подождем ответа сапорта.
 
  • Спасибо
Реакции: nicanil и bpunk

creck

Client
Регистрация
05.08.2014
Сообщения
94
Благодарностей
9
Баллы
8
Сапорт, что ты сказал? Тема интересная!
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 706
Баллы
113
Поставил таску чтобы в батники добавили опцию управления потоками
 

alex888

Client
Регистрация
13.10.2013
Сообщения
105
Благодарностей
38
Баллы
28
Поставил таску чтобы в батники добавили опцию управления потоками
var taskInfo = ZennoPoster.GetTaskInfo(id);
было бы неплохо добавить чтобы в taskInfo возвращалась информация о количестве работающих в данный момент потоков
 

creck

Client
Регистрация
05.08.2014
Сообщения
94
Благодарностей
9
Баллы
8
rostonix добрый вечер. Немного может не в тему!!! Но хотел спросить, когда может появится этот инструмент? И появится ли он вообще? Так как по текстовой капче от рукапча, месяца три назад вы также писали что поставили таску. простите может я не нашел и єта функция уже есть? Или єто прошло еще очень мало времени? В общем как то так!
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 706
Баллы
113
rostonix добрый вечер. Немного может не в тему!!! Но хотел спросить, когда может появится этот инструмент? И появится ли он вообще? Так как по текстовой капче от рукапча, месяца три назад вы также писали что поставили таску. простите может я не нашел и єта функция уже есть? Или єто прошло еще очень мало времени? В общем как то так!
Дайте ссылку на топик, проверю по таскам что с ней.
Срок реализации тасок от 1 дня до нескольких лет, если задача важная/совсем не важная. Задач очень много, все сделать сразу не представляется возможным. Там работы не на один год)
 

creck

Client
Регистрация
05.08.2014
Сообщения
94
Благодарностей
9
Баллы
8
Еще нет такой фичи?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 706
Баллы
113
Поставил таску чтобы в батники добавили опцию управления потоками
[+] В форме создания bat файлов добавлен пункт «Установить количество потоков».
5.9.9.0
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 446
Благодарностей
8 677
Баллы
113
[+] В форме создания bat файлов добавлен пункт «Установить количество потоков».
5.9.9.0
да, но вроде бы устанавливается кол-во попыток, а не кол-во потоков..
вот только что создал батник с командой установить кол-во потоков = 5..
стояло бесконечное кол-во выполнений, а после отработки этого батника стало = 5..
 
Последнее редактирование:

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 706
Баллы
113
не могу подтвердить
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 446
Благодарностей
8 677
Баллы
113
не могу подтвердить
либо мы про разные вещи говорим, либо одно из двух..
большая просьба, можно ли увидеть видео, где батником устанавливается нужное кол-во потоков у шаблона?
исходные данные: шаблон работает при определенном кол-ве попыток, бесконечном или с конкретным числом,
например 1000, шаблон работает изначально в 1 поток, а потом запускаем батник в котором команда установки потоков на 5, к примеру..
у меня например после такой команды кол-во попыток становится равным 5-ти, а кол-во потоков не меняется, как было 1, так 1 и остается..
 
Последнее редактирование:

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
не могу подтвердить
либо мы про разные вещи говорим, либо одно из двух..
большая просьба, можно ли увидеть видео, где батником устанавливается нужное кол-во потоков у шаблона?
исходные данные: шаблон работает при определенном кол-ве попыток, бесконечном или с конкретным числом,
например 1000, шаблон работает изначально в 1 поток, а потом запускаем батник в котором команда установки потоков на 5, к примеру..
у меня например после такой команды кол-во попыток становится равным 5-ти, а кол-во потоков не меняется, как было 1, так 1 и остается..
В общем, баг с добавлением количества потоков через батник действительно есть.
Суть такая, если поиск задания выполняется по id, то проблем никаких нет.
Следующий пример отрабатывает правильно, т.е. как и полагается, устанавливает 5 потоков и 10 выполнений.
Код:
"C:\Program Files\ZennoLab\ZennoPoster Pro\Progs\TasksRunner.exe" -o SetThreads 5 -ids 689ec42c-82e5-42ac-815f-c162b9c2d730
"C:\Program Files\ZennoLab\ZennoPoster Pro\Progs\TasksRunner.exe" -o SetTries 10 -ids 689ec42c-82e5-42ac-815f-c162b9c2d730
А вот если поиск задания выполняется по имени, то тут и возникает проблема.
Тот же пример, но поиск по имени задания:
Код:
"C:\Program Files\ZennoLab\ZennoPoster Pro\Progs\TasksRunner.exe" -o SetThreads 5 -names "Test"
"C:\Program Files\ZennoLab\ZennoPoster Pro\Progs\TasksRunner.exe" -o SetTries 10 -names "Test"
Здесь происходит следующее: сначала задается количество выполнений 5, а потом количество !выполнений 10, а вот количество потоков не меняется.
При чем не важно какой порядок выполнения команд (или хоть одна команда). Т.е. команды -o SetThreads и -o SetTries при поиске по имени, выполняют одно и то же - устанавливают количество выполнений.
Кстати, в ZP можно наблюдать визуально, как количество выполнений устанавливается два раза.
 
  • Спасибо
Реакции: Sergodjan

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 706
Баллы
113
в такой формулировке да, есть проблема.
поставил таску
я тестил по id, не по имени
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 446
Благодарностей
8 677
Баллы
113
в такой формулировке да, есть проблема.
поставил таску
я тестил по id, не по имени
id проекта изменяется после правок проекта в ПМ?
я поэтому с именем работать пытаюсь..
вроде замечал, что id меянется..
 
Регистрация
27.05.2015
Сообщения
129
Благодарностей
45
Баллы
28
Столкнулся с такой же проблемой - нужно задать через батник число потоков и число выполнения шаблона. Проблема как я понял до сих пор не решена?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 706
Баллы
113
Регистрация
27.05.2015
Сообщения
129
Благодарностей
45
Баллы
28
Если задание с одним именем удалять и добавлять снова у него меняется ID. Учитывая, что у меня более 30 зеннобоксов каждый на своей виртуалке - для меня такой вариант не подходит. Хочется из батника стартовать Зеннобокс(или зеннопостер) сразу с нужным мне числом потоков и кол-м выполнения заданий. Как то можно это еще сделать? Ибо заходить на каждую виртуалку с зеннобокс и настраивать параметры старта шаблона - гемморой еще тот.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 706
Баллы
113
Если задание с одним именем удалять и добавлять снова у него меняется ID. Учитывая, что у меня более 30 зеннобоксов каждый на своей виртуалке - для меня такой вариант не подходит. Хочется из батника стартовать Зеннобокс(или зеннопостер) сразу с нужным мне числом потоков и кол-м выполнения заданий. Как то можно это еще сделать? Ибо заходить на каждую виртуалку с зеннобокс и настраивать параметры старта шаблона - гемморой еще тот.
из батника работает сейчас только по id
 
Регистрация
27.05.2015
Сообщения
129
Благодарностей
45
Баллы
28
Ок, буду костыли на AutoIt делать =)
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 706
Баллы
113
поправим для следующего билда чтобы по имени тоже работало
 
  • Спасибо
Реакции: Sergodjan

Oleg1987

Client
Регистрация
11.08.2014
Сообщения
1 163
Благодарностей
743
Баллы
113
id проекта изменяется после правок проекта в ПМ?
я поэтому с именем работать пытаюсь..
вроде замечал, что id меянется..
Код:
project.Variables["project_id"].Value = project.TaskId;
И редактируйте скок угодно
 
  • Спасибо
Реакции: Sanekk

Bullet

Client
Регистрация
16.12.2015
Сообщения
186
Благодарностей
19
Баллы
18
Он работает.
Для добавления потоков, по идее должен работать такой код
C#:
var id = Guid.Parse(project.TaskId);
var taskInfo = ZennoPoster.GetTaskInfo(id);
var doc = new System.Xml.XmlDocument();
doc.LoadXml("<Task>" + taskInfo + "</Task>");
var executionSettings = doc.SelectSingleNode("Task/ExecutionSettings");
var limitOfThreads = executionSettings.SelectSingleNode("LimitOfThreads");
limitOfThreads.InnerText = "2";
ZennoPoster.SetExecutionSettings(id, executionSettings.ToString());
Но у меня он работать отказывается
У меня код так же не работает, ошибок не пишет, но и количество потоков не меняет. Кому то удавалось решить задачу через C#?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
У меня код так же не работает, ошибок не пишет, но и количество потоков не меняет. Кому то удавалось решить задачу через C#?
да уже давно все решено. поиск по форуму же есть.
да и полезняшки люди давно уже копят. тык
C#:
    // GUID проекта
    Guid project_guid = Guid.Parse(project.TaskId);

    // Полная инфа о текущем проекте в XML-формате
    string task_info = ZennoPoster.GetTaskInfo(project_guid);
    
    // создаем XML и задаем нужные параметры для запуска
    var doc = new System.Xml.XmlDocument();
    doc.LoadXml("<Task>" + task_info + "</Task>");

    var esElement = doc.SelectSingleNode("Task/ExecutionSettings");
    if (esElement == null) {
        throw new Exception("Не нашли ноду Task/ExecutionSettings");
    }
    var threadsElement = doc.SelectSingleNode("Task/ExecutionSettings/LimitOfThreads");
    if (threadsElement == null) {
        throw new Exception("Не нашли ноду Task/ExecutionSettings/LimitOfThreads");
    }
    // количество потоков
    threadsElement.InnerText = Convert.ToString(10);
    
    var triesElement = doc.SelectSingleNode("Task/ExecutionSettings/NumberOfTries");
    if (triesElement == null) {
        throw new Exception("Не нашли ноду Task/ExecutionSettings/NumberOfTries");
    }
    // количество повторений + 1 (т.к. текущий запуск для установки данных тоже считается)
    triesElement.InnerText = Convert.ToString(10 + 1);

    // Передаем новые данные в постер для запуска заданий
    ZennoPoster.SetExecutionSettings(project_guid, esElement.InnerXml);
 
  • Спасибо
Реакции: djaga, takerz и Bullet

Bullet

Client
Регистрация
16.12.2015
Сообщения
186
Благодарностей
19
Баллы
18
Вот спасибо так спасибо!
Код работает прекрасно. НО - пытаюсь сравнить значение threadsElement с числовой переменной максимального числа потоков, ожидаемо получаю несоответствие типов. Пытаюсь использовать Convert.ToInt32(threadsElement) - получаю ошибку преобразования..

UPD: Решено, вопрос снят: Convert.ToInt32(threadsElement.InnerText)
 
Последнее редактирование:

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)