Page 1 of 1

Дополнительные поля в задаче

PostPosted: Wed Oct 25, 2017 6:05 am
by kolesova
Как при создании задачи получить в переменную значения всех введенных доп полей?

Re: Дополнительные поля в задаче

PostPosted: Sun Nov 05, 2017 5:50 pm
by Petr
Добрый день. В триггере есть объект SeruredTaskTriggerBean.

у него есть метод getUdfValues(). Это поля введенные пользователем.

Map udfs = task.getUdfValues();

Re: Дополнительные поля в задаче

PostPosted: Tue Nov 07, 2017 4:38 pm
by Petr
Добрый день, Олеся.

Удалось ли Вам попробовать запустить этот код?

Важный момент. Если использовать BSH скрипты в них не надо прописывать generics. То есть Map<String, String> писать не надо. Надо указать просо Map.

Неправильно
Code: Select all
Map<String, String> map = task.getUdfValues()


Правильно
Code: Select all
Map map = task.getUdfValues()

Re: Дополнительные поля в задаче

PostPosted: Wed Nov 15, 2017 5:58 am
by kolesova
это заработало, но при создании задачи выдает ошибку: Sourced file: inline evaluation of: ``import com.trackstudio.secured.SecuredTaskBean; import com.trackstudio.secured.S . . . '' : Error in method invocation: Static method createTask( com.trackstudio.app.session.SessionContext, java.lang.String, null, java.lang.String, null, null, null, null, java.lang.String, null, null, boolean, java.util.concurrent.ConcurrentHashMap ) not found in class'com.trackstudio.app.TriggerManager' : at Line: 83 : in file: inline evaluation of: ``import com.trackstudio.secured.SecuredTaskBean; import com.trackstudio.secured.S . . . '' : TriggerManager .createTask ( sc , categoryId , null , name , null , null , null , null , parent , handlerUserId , handlerGroupId , true , udf )

скрипт:
String parent = task.getParent().getId();
String name = task.getName();
String categoryId = task.getCategory().getId();
String handlerUserId = task.getHandlerUserId();
String handlerGroupId = task.getHandlerGroupId();
Map udf = task.getUdfValues();

TriggerManager.createTask(
sc,
categoryId,
null,
name,
null,
null,
null,
null,
parent,
handlerUserId,
handlerGroupId,
true,
udf);

Re: Дополнительные поля в задаче

PostPosted: Tue Nov 28, 2017 4:24 pm
by dpochtarev
kolesova wrote: выдает ошибку:
method createTask ...not found in ... TriggerManager

Для начала нужно создать экземпляр TriggerManager-а. Код будет такой
Code: Select all
        TriggerManager.getInstance().createTask()

Re: Дополнительные поля в задаче

PostPosted: Wed Nov 29, 2017 5:18 am
by kolesova
No static field or inner class: getInstance of class com.trackstudio.app.TriggerManager : at Line: 83 : in file: inline evaluation of: ``import com.trackstudio.secured.SecuredTaskBean; import com.trackstudio.secured.S . . . '' : TriggerManager .getInstance .createTask ( sc , categoryId , null , n , null , null , null , null , parent , handlerUserId , handlerGroupId , true , udf )

Re: Дополнительные поля в задаче

PostPosted: Fri Dec 01, 2017 9:47 pm
by admin
kolesova wrote:No static field or inner class: getInstance of class com.trackstudio.app.TriggerManager : at Line: 83 : in file: inline evaluation of: ``import com.trackstudio.secured.SecuredTaskBean; import com.trackstudio.secured.S . . . '' : TriggerManager .getInstance .createTask ( sc , categoryId , null , n , null , null , null , null , parent , handlerUserId , handlerGroupId , true , udf )


Метод getInstance() в этом классе точно есть:

public static TriggerManager getInstance() {
return instance;
}

приведите полный пример скрипта.

Re: Дополнительные поля в задаче

PostPosted: Fri Dec 01, 2017 9:48 pm
by admin
После getInstance нужно () поставить.

Re: Дополнительные поля в задаче

PostPosted: Mon Dec 04, 2017 5:27 am
by kolesova
reflection error: bsh.ReflectError: Method createTask( com.trackstudio.app.session.SessionContext, java.lang.String, null, java.lang.String, null, null, null, null, java.lang.String, null, null, boolean, java.util.concurrent.ConcurrentHashMap ) not found in class'com.trackstudio.app.TriggerManager' : at Line: 83 : in file: inline evaluation of: ``import com.trackstudio.secured.SecuredTaskBean; import com.trackstudio.secured.S . . . '' : .createTask ( sc , categoryId , null , n , null , null , null , null , parent , handlerUserId , handlerGroupId , true , udf )

скрипт:
String parent = task.getParent().getId();
String name = task.getName();
String categoryId = task.getCategory().getId();
String handlerUserId = task.getHandlerUserId();
String handlerGroupId = task.getHandlerGroupId();
Map udf = task.getUdfValues();
int start_number = 0;
int end_number = 0;
int length = name.length();
char search = '-';
for (int i = 0; i<length; ++i)
{
if (name.charAt(i) == search)
{
start_number = Integer.parseInt(name.substring(0, i));
end_number = Integer.parseInt(name.substring(i+1, length));
break;
}
}
int tas = start_number;
while(tas <= end_number)
{
String n = Integer.toString(tas);
TriggerManager.getInstance().createTask(
sc,
categoryId,
null,
n,
null,
null,
null,
null,
parent,
handlerUserId,
handlerGroupId,
true,
udf);
tas++;
}

Re: Дополнительные поля в задаче

PostPosted: Fri Dec 08, 2017 3:11 pm
by dpochtarev
Bsh скрипты нужно использовать только в том случае, если вы уверены в написанном коде.
В вашем случае скрипт даже не компилируется.
Загрузите SA версию http://download.trackstudio.com/tse-50/ ... indows.exe.
Соберите проект. http://www.trackstudio.ru/how-to-build-project .
Вся документация по классам есть в TrackStudio\docs\javadoc.
И в Eclipse пишите свой скрипт. Autocomplete сильно упростит вам задачу.
Сейчас у вас не компилируется потому что createTask() принимает карту полей как HashMap, а вы передаете ConcurrentHashMap.