我写了一个返回5个值的网络服务:
String taskPresentationName_UWL = null;
String taskActivationTime_UWL = null;
String taskPriority_UWL = null;
String taskStatus_UWL = null;
String taskID_UWL = null;
我的情况是我运行循环,我想返回一个包含这些值的列表或数组。
由于现在是代码,我只得到一行作为答案。例如:
taskPresentationName_test1,taskActivationTime_test1,taskPriority_test1,taskStatus_test1,taskID_test1
但我想回复的答案应如下所示:
taskPresentationName_test1,taskActivationTime_test1, taskPriority_test1,taskStatus_test1,taskID_test1
taskPresentationName_test2,taskActivationTime_test2, taskPriority_test2,taskStatus_test2,taskID_test2
...
如何将答案返回给List或Xml ???
我的代码如下
@WebService(name = "getUWLTasks", portName = "getUWLTasksPort", serviceName = "getUWLTasksService", targetNamespace = "http://sap.com/tutorial/testAPI/")
@Stateless
public class getUWLTasks
{
@WebMethod(operationName = "getTasks", exclude = false)
public void getTasks(
@WebParam(name = "taskPresentationName", mode = WebParam.Mode.OUT) Holder<String> taskPresentationName,
@WebParam(name = "taskActivationTime", mode = WebParam.Mode.OUT) Holder<String> taskActivationTime,
@WebParam(name = "taskPriority", mode = WebParam.Mode.OUT) Holder<String> taskPriority,
@WebParam(name = "taskStatus", mode = WebParam.Mode.OUT) Holder<String> taskStatus,
@WebParam(name = "taskID", mode = WebParam.Mode.OUT) Holder<String> taskID) {
String taskPresentationName_UWL = null;
String taskActivationTime_UWL = null;
String taskPriority_UWL = null;
String taskStatus_UWL = null;
String taskID_UWL = null;
try
{
TaskInstanceManager taskInstanceManager = BPMFactory.getTaskInstanceManager();
HashSet<Status> statuses = new HashSet<Status>();
statuses.add(Status.READY);
statuses.add(Status.RESERVED);
statuses.add(Status.IN_PROGRESS);
Set<TaskAbstract> myTasks = taskInstanceManager.getMyTaskAbstracts(statuses);
Iterator<TaskAbstract> taskIter = myTasks.iterator();
while (taskIter.hasNext())
{
TaskAbstract ta = taskIter.next();
//Get the UWL as it appears
java.net.URI taskInstanceId = ta.getId();
URL taskExecutionURL = taskInstanceManager.generateTaskExecutionUrl(taskInstanceId);
TaskDetail taskDetail = taskInstanceManager.getTaskDetail(taskInstanceId);
taskPresentationName_UWL = ta.getPresentationName();
taskActivationTime_UWL = ta.getCreatedTime().toString();
taskPriority_UWL = ta.getPriority().toString();
taskStatus_UWL = ta.getStatus().toString();
taskID_UWL = ta.getId().toString();
taskPresentationName.value = taskPresentationName_UWL;
taskActivationTime.value = taskActivationTime_UWL;
taskPriority.value = taskPriority_UWL;
taskStatus.value = taskStatus_UWL;
taskID.value = taskID_UWL;
}
}
catch (BPMException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
我写了简单的WS,所有的工作都像你想要的那样
@WebMethod(operationName = "getTasks", exclude = false)
public void getTasks(
@WebParam(name = "taskPresentationName", mode = WebParam.Mode.OUT) Holder<String[]> taskPresentationName,
@WebParam(name = "taskActivationTime", mode = WebParam.Mode.OUT) Holder<String[]> taskActivationTime,
@WebParam(name = "taskPriority", mode = WebParam.Mode.OUT) Holder<String[]> taskPriority,
@WebParam(name = "taskStatus", mode = WebParam.Mode.OUT) Holder<String[]> taskStatus,
@WebParam(name = "taskID", mode = WebParam.Mode.OUT) Holder<String[]> taskID)
{
taskPresentationName.value = new String[]{"a1", "a2"};
taskActivationTime.value = new String[]{"b1", "b2"};
taskPriority.value = new String[]{"c1", "c2"};
}
响应包含
<taskPresentationName>a1</taskPresentationName>
<taskPresentationName>a2</taskPresentationName>
<taskActivationTime>b1</taskActivationTime>
<taskActivationTime>b2</taskActivationTime>
<taskPriority>c1</taskPriority>
<taskPriority>c2</taskPriority>
编辑
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Task
{
String taskPresentationName_UWL;
//...
String taskID_UWL;
// getters, setters
}
任务
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Tasks
{
@XmlElement
private List<Task> tasks = new ArrayList<Task>();
public List<Task> getTasks()
{
return tasks;
}
}
网络方法
@WebMethod(operationName = "getTasks", exclude = false)
@WebResult(name = "tasks")
public Tasks getTasks() {
//...
}