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

bpunk

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

Adigen

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

bpunk

Client
Регистрация
23.08.2015
Сообщения
183
Благодарностей
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
Благодарностей
654
Баллы
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 068
Благодарностей
5 725
Баллы
113
Поставил таску чтобы в батники добавили опцию управления потоками
 

alex888

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

creck

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

rostonix

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

creck

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

rostonix

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

Sergodjan

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

rostonix

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

Sergodjan

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

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 139
Баллы
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 068
Благодарностей
5 725
Баллы
113
в такой формулировке да, есть проблема.
поставил таску
я тестил по id, не по имени
 

Sergodjan

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

rostonix

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

rostonix

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

rostonix

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

Oleg1987

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

Bullet

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

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

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