Как сделать динамический список возможных значений дополнительного поля
Для того, чтобы сделать возможным выбор значений дополнительного поля из выпадающего списка, вам потребуется создать само поле типа "Строка" и соединить его со скриптом, соответствующим интерфейсу com.trackstudio.external.TaskUDFLookupScript.
Ниже приведен пример скрипта, который выводит список спринтов, в которые можно поместить историю (Подробнее о SCRUM в TrackStudio)
package scripts.task_custom_field_lookup;
import com.trackstudio.external.TaskUDFLookupScript;
import com.trackstudio.secured.SecuredTaskBean;
import com.trackstudio.exception.GranException;
import com.trackstudio.app.adapter.AdapterManager;
import java.util.List;
import java.util.ArrayList;
import scripts.CommonScrum;
/**
* Выводит список спринтов для выбора
*/
public class SprintList extends CommonScrum implements TaskUDFLookupScript{
public Object calculate(SecuredTaskBean task) throws GranException {
List<String> list = new ArrayList<String>();
list.add("");
String category = SCRUM_SRINT_CATEGORY;
List<SecuredTaskBean> sprints = AdapterManager.getInstance().getSecuredTaskAdapterManager().getTaskListByQuery(task.getSecure(),
"SELECT t.id FROM com.trackstudio.model.Task as t WHERE t.category.id = \'"+category+"\'");
for (SecuredTaskBean t: sprints){
if (t.canView() && !t.getStatus().isFinish()){
list.add(t.getName()+" [#"+t.getNumber()+"]");
}
}
return list;
}
}