Как использовать интерфейс SOAP для TrackStudio
Для работы с SOAP в папке etc/deveopment/soap лежит проект.
Нужные ресурсы генерируются при помощи команды
mvn generate-resources
Открыв проект в среде разработки, папку target/generated-sources/cxf отметить как sources.
После этого можно приступить к написанию своего SOAP-клиента либо воспользоваться уже готовым примером из проекта.
В SOAP вы можете оперировать сервисами или контейнерами. Сервисы нужны для выполнения различных функций, в контейнерах, соответственно, переносятся данные.
Сервис для манипулирования задачами можно получить, например, так:
public static final String url = "http://localhost:8888/TrackStudio/services/"; public Task getTaskService(url) throws MalformedURLException { TaskService service = new TaskService(new URL(url + Task.class.getSimpleName() + "?wsdl"), new QName("http://task.service.soap.trackstudio.com/", "TaskService")); return service.getTaskPort(); }
url, разумеется, нужно подставить свой.
Теперь чтобы, например, создать задачу, нужно выполнить метод createTask сервиса TaskService:
public String createTask(@WebParam(name = "sessionId") String sessionId, @WebParam(name = "categoryId") String categoryId, @WebParam(name = "shortname") String shortname, @WebParam(name = "name") String name, @WebParam(name = "description") String description, @WebParam(name = "budget") long budget, @WebParam(name = "deadline") long deadline, @WebParam(name = "priorityId") String priorityId, @WebParam(name = "parentId") String parentId, @WebParam(name = "handlerUserId") String handlerUserId, @WebParam(name = "handlerGroupId") String handlerGroupId, @WebParam(name = "udfNames") String[] udfNames, @WebParam(name = "udfValues") String[] udfValues) throws Exception;
Для получения списка задач у которых определенное поле (UDF) равно заданному значению нужно использовать следующий код
TaskFvalueBean taskFvalueBean = new TaskFvalueBean();
taskFvalueBean.setSubtask("1");
taskFvalueBean.getUdfs().add("UDF8a80828f4a0619c0014a062a5cc00004->_eq_test");
TaskSliderBean sliderBean = task.getTaskList(sessionId, taskId, taskFvalueBean, true, 20, new ArrayList<String>());
Если необходимо найти задачи закрытые в определенный период используется код
GregorianCalendar date = new GregorianCalendar(2014, 12, 1);
TaskFvalueBean taskFvalueBean = new TaskFvalueBean();
taskFvalueBean.setSubtask("1");
taskFvalueBean.setCloseDate("_"+String.valueOf(date.getTimeInMillis())); /*c указанной даты */
taskFvalueBean.setCloseDate(String.valueOf(date.getTimeInMillis())); /*по указанную дату */
TaskSliderBean sliderBean = task.getTaskList(sessionId, taskId, taskFvalueBean, true, 20, new ArrayList<String>());